[Hive] 01 - 安装、配置、初步使用、搭建hwi

环境

  • 宿主机:Windows 10 64bit
  • 虚拟机:VMware 15 pro
    • CentOS 7.5 64bit 3个(1个master、2个slaves)
    • Hadoop-2.6.5
    • jdk1.8.0_211
    • MySQL-5.7.26
    • Hive-1.2.2
  • ssh工具:SecureCRT 7.3

(MySQL、Hive目前都只在master节点上安装了)

目录

0、准备工作

1、新建配置文件hive-site.xml

2、配置环境变量:/etc/profile

3、将JDBC库文件(jar包)复制到Hive/lib

4、启动Hive

5、Hive安装包-文件目录结构

6、Hive-初步使用

FAQ

正文

0、准备工作

安装依赖Hadoop、JDK、MySQL(它负责为Hive提供元数据存储服务):

  • Hadoop集群搭建、JDK安装,参考博客
  • MySQL安装,参考博客

在这里插入图片描述

下载安装包:hive-1.2.2、JDBC连接工具包

[root@master bigdata]# pwd
/opt/bigdata
[root@master bigdata]# curl -# -O https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz
[root@master bigdata]# curl -# -O http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

解压:

[root@master bigdata]# tar zxvf apache-hive-1.2.2-bin.tar.gz
[root@master bigdata]# tar zxvf mysql-connector-java-5.1.46.tar.gz

1、新建配置文件hive-site.xml

(因为本身没有这个文件):配置元数据相关信息
[root@master conf]# pwd
/opt/bigdata/apache-hive-1.2.2-bin/conf
[root@master conf]# vi hive-site.xml 
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</v
alue>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>111111</value>
        </property>
        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/opt/bigdata/apache-hive-1.2.2-bin/warehouse</value>
        </property>
        <property>
                <name>hive.support.concurrency</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.exec.dynamic.partition.mode</name>
                <value>nonstrict</value>
        </property>
<!--
        <property>
                <name>hive.txn.manager</name>
                <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
        </property>
        <property>
                <name>hive.compactor.initiator.on</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.compactor.worker.threads</name>
                <value></value>
        </property>
-->
</configuration>

上述注释部分可不要,这些属性都是用于支持事务的。

可能会报错,参考【已解决】Hive启动后报错:FAILED: LockException [Error 10280]: Error communicating with the metastore

2、配置环境变量:/etc/profile

[root@master bigdata]# vi /etc/profile #底部增加两项
...
.....
HIVE_HOME=/opt/bigdata/apache-hive-1.2.2-bin
export PATH=$HIVE_HOME/bin:$PATH
[root@master bigdata]# source /etc/profile
[root@master bigdata]# ls apache-hive-1.2.2-bin/lib/*-bin.jar
apache-hive-1.2.2-bin/lib/mysql-connector-java-5.1.46-bin.jar

3、将JDBC库文件(jar包)复制到$HIVE_HOME/lib

[root@master bigdata]# cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar apache-hive-1.2.2-bin/lib

4、启动Hive

因为Hive依赖Hadoop,所以得先启动Hadoop集群:

[root@master conf]# /opt/bigdata/hadoop-2.6.5/sbin/start-all.sh
...
[root@master conf]# jps
18641 SecondaryNameNode
18803 ResourceManager
18500 NameNode
18986 Jps

从节点slaves的jps打印是:

[root@slave1 slave1]# jps
7320 DataNode
7386 NodeManager
7566 Jps

表示启动Hadoop集群成功!

[root@master conf]# hive

Logging initialized using configuration in jar:file:/opt/bigdata/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.properties
hive> 

启动Hive成功。

5、Hive安装包-文件目录结构

Hive由Java语言编写的。

[root@master apache-hive-1.2.2-bin]# tree -L 2
.
├── bin    包含可以执行各种各样Hive服务的可执行文件。包括CLI
│   ├── beeline
│   ├── ext
│   ├── hive
│   ├── hive-config.sh
│   ├── hiveserver2
│   ├── metatool
│   └── schematool
├── conf    存放配置文件
│   ├── beeline-log4j.properties.template
│   ├── derby.log
│   ├── hive-default.xml.template
│   ├── hive-env.sh.template
│   ├── hive-exec-log4j.properties.template
│   ├── hive-log4j.properties.template
│   ├── hive-site.xml
│   ├── ivysettings.xml
│   └── metastore_db
├── examples
│   ├── files
│   └── queries
├── hcatalog
│   ├── bin
│   ├── etc
│   ├── libexec
│   ├── sbin
│   └── share
├── lib   每个jar包都实现了Hive功能中某个特定的部分
│   ├── ant-1.9.1.jar
│   ├── antlr-2.7.7.jar
│   ├── ....等等
│   └── zookeeper-3.4.6.jar
│   └── 等等各种jar包
├── LICENSE
├── NOTICE
├── README.txt
├── RELEASE_NOTES.txt
└── scripts
    └── metastore

6、Hive-初步使用

进入Hive交互窗口

终端键入:hive

原理是:执行了$HIVE_HOME/bin/hive命令(脚本/可执行文件),即启动了CLI
其中,字符串hive>是Hive的提示符。

退出Hive,推荐方式:

hive> quit;

Hive中所有的数据都存储在HDFS中,路径是hive-site.xml中指定的

[root@master conf]# pwd
/opt/bigdata/apache-hive-1.2.2-bin/conf
[root@master conf]# cat hive-site.xml | grep "warehouse"
                <name>hive.metastore.warehouse.dir</name>
                <value>hdfs://master:9000/user/hive/warehouse</value>

启动Hive的WEB界面
Hive 2.0 以后才支持Web UI的。所以Hive 1.0得自己配置,方法参考文末FAQ 4

[root@master lib]# hive --service hwi
...

浏览器输入:master:9999/hwi/

在这里插入图片描述

查看、终止当前正在运行的某进程

ps -ef | grep hive
e:显示每个程序所使用的环境变量。打印多,可以不要
f:用ASCII字符显示树状结构,表达程序间的相互关系

终止进程
kill -9 [PID]

FAQ

FAQ 1:在终端hive启动时,报错:

 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

解决:
hive-site.xml文件中,连接串中加入指定SSL为false等内容,具体如下:

        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</v
alue>
        </property>

不过要注意:在XML中,包括HTML中,要显示&这个字符,必须对其进行转义,如上。

FAQ 2:在终端hive启动时,报错:

Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException: Call From master/192.168.11.128 to master:9000 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

解决:
是因为没有启动Hadoop集群呀。

$HADOOP_HOME/sbin/start-all.sh

FAQ 3:在终端hive启动时,报错:

[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

这是因为$HIVE_HOME/lib/下的jline.jar$HADOOP_HOME/share/hadoop/yarn/lib/jline.jar 版本不一样,导致冲突。

[root@master conf]# pwd
/opt/bigdata/apache-hive-1.2.2-bin/conf
[root@master conf]# ls ../lib/jline*.jar
../lib/jline-2.12.jar
[root@master conf]# ls /opt/bigdata/hadoop-2.6.5/share/hadoop/yarn/lib/jline-*.jar
/opt/bigdata/hadoop-2.6.5/share/hadoop/yarn/lib/jline-0.9.94.jar

解决:
1)删除Hadoop下的低版本jline.jar

[root@master conf]# rm -f /opt/bigdata/hadoop-2.6.5/share/hadoop/yarn/lib/jline-0.9.94.jar

2)将Hive的更高版本的jline.jar复制到Hadoop下:

[root@master conf]# cp ../lib/jline-2.12.jar /opt/bigdata/hadoop-2.6.5/share/hadoop/yarn/lib/

FAQ 4:在终端启动Hive Web命令hive --service hwi时,报错:

ls: 无法访问/opt/bigdata/apache-hive-1.2.2-bin/lib/hive-hwi-*.war: 没有那个文件或目录

解决:
1)下载、解压

[root@master bigdata]# curl -# -O https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-src.tar.gz
[root@master bigdata]# tar zxvf apache-hive-1.2.2-src.tar.gz
...

2)打包(因为本身是没有这个文件的)

[root@master bigdata]# cd /opt/bigdata/apache-hive-1.2.2-src/hwi   
[root@master hwi]# pwd
/opt/bigdata/apache-hive-1.2.2-src/hwi
[root@master hwi]# jar cvfM hive-hwi-1.2.2.war -C web .

3)复制

[root@master hwi]# cp hive-hwi-1.2.2.war /opt/bigdata/apache-hive-1.2.2-bin/lib/

4)在hive-site.xml新增

[root@master hwi]# vi /opt/bigdata/apache-hive-1.2.2-bin/conf/hive-site.xml
...
        <property>
                <name>hive.hwi.listen.host</name>
                <value>master</value>
        </property>
        <property>
                <name>hive.hwi.listen.port</name>
                <value>9999</value>
        </property>
        <property>
                <name>hive.hwi.war.file</name>
                <value>lib/hive-hwi-1.2.2.war</value>
        </property>
</configuration>

5)复制jdk/lib/tools.jar到hive/lib下

[root@master lib]# pwd
/opt/bigdata/jdk1.8.0_211/lib
[root@master lib]# cp tools.jar /opt/bigdata/apache-hive-1.2.2-bin/lib/

6)启动命令hive --service hwi

[root@master lib]# hive --service hwi
19/06/13 04:03:41 INFO hwi.HWIServer: HWI is starting up
19/06/13 04:03:42 INFO mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
19/06/13 04:03:42 INFO mortbay.log: jetty-6.1.26
19/06/13 04:03:42 INFO mortbay.log: Extract /opt/bigdata/apache-hive-1.2.2-bin/lib/hive-hwi-1.2.2.war to /tmp/Jetty_master_9999_hive.hwi.1.2.2.war__hwi__9kfwh7/webapp
19/06/13 04:03:42 INFO mortbay.log: Started SocketConnector@master:9999

上述方式启动以后,不能后台运行。不过可以使用nohup来过滤一切终止命令,然后把日志全部抛出,把错误和正确的都使用一个通道,这个命令组合是:nohup hive --service hwi > /dev/null 2 > & 1 &

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值