一、Hive安装部署
想要安装Hive,那首先要下载Hive的安装包,进入Hive的官网,找到download下载链接。
发现目前hive主要有三大版本,Hive1.x、Hive2.x、Hive3.x
Hive1.x已经2年没有更新了,所以这个版本后续基本不会再维护了,不过这个版本已经迭代了很多年了,也是比较稳定的
Hive2.x最近一直在更新
Hive3.x上次是19年8月份更新的,也算是一直在维护
那我们到底选择哪个版本呢?注意了,在选择Hive版本的时候我们需要注意已有的Hadoop集群的版本。因为Hive会依赖于Hadoop,所以版本需要兼容才可以。
具体Hive和Hadoop的版本对应关系可以在download页面下的news列表里面看到。
https://hive.apache.org/downloads.html
按照这里面说的hive2.x的需要在hadoop2.x版本中运行,hive3.x的需要在hadoop3.x版本中运行。
所以在这里我们最好是使用Hive3.x的版本
那我们就下载hive-3.1.2这个版本,如果想要下载其它历史版本的话这里面还找不到,不过可以使用apache的一个通用archive地址
https://archive.apache.org/dist/hive/
在这里面就可以找到hive的所有历史版本了
下面开始安装Hive
Hive相当于Hadoop的客户端工具,安装时不一定非要放在集群的节点中,可以放在任意一个集群客户端节点上都可以
1、文件下载上传
把下载好的hive安装包上传到bigdata04机器的/data/soft目录中,并且解压
[root@bigdata04 soft]# ll
-rw-r--r--. 1 root root 278813748 May 5 23:08 apache-hive-3.1.2-bin.tar.gz
[root@bigdata04 soft]# tar -zxvf apache-hive-3.1.2-bin.tar.gz
2、重命名配置文件
接着需要修改配置文件,进入hive的conf目录中,先对这两个模板文件重命名
[root@bigdata04 soft]# cd apache-hive-3.1.2-bin/conf/
[root@bigdata04 conf]# mv hive-env.sh.template hive-env.sh
[root@bigdata04 conf]# mv hive-default.xml.template hive-site.xml
3、修改文件内容
然后再修改这两个文件的内容
注意:在hive-env.sh文件的末尾直接增加下面三行内容,【根据实际的路径配置】
[root@bigdata04 conf]# vi hive-env.sh
.....
export JAVA_HOME=/data/soft/jdk1.8
export HIVE_HOME=/data/soft/apache-hive-3.1.2-bin
export HADOOP_HOME=/data/soft/hadoop-3.2.0
注意:在hive-site.xml文件中根据下面property中的name属性的值修改对应value的值,这些属性默认里面都是有的,所以都是修改对应的value的值即可。
注:安装MySQL8.0.16
由于这里面需要指定Metastore的地址,Metastore我们使用Mysql,所以需要大家提前安装好Mysql,我这里使用的是Mysql8.0.16版本,Mysql安装包会提供给大家,建议大家直接在自己的windows机器中安装Mysql即可。
如果对MySQL8.x的安装部署不太熟悉的话,请参考下面的安装部署步骤,以及如何开启MySQL8的远程访问权限。
MySQL02:Windows安装MySQL8.0.16
hive-site.xml配置文件内容如下:
[root@bigdata04 conf]# vi hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.18.1:3306/hive?serverTimezone=Asia/Shanghai</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>admin</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/data/hive_repo/querylog</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/data/hive_repo/scratchdir</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/data/hive_repo/resources</value>
</property>
注:这里jdbc:mysql://192.168.18.1:3306/hive?serverTimezone=Asia/Shanghai 的ip地址是你本机的
ipconfig
4、上传MySQL的驱动包
接下来需要把Mysql的java驱动包上传到hive的lib目录下
注意mysql驱动包的版本,要和我们安装的版本保持一致:mysql-connector-java-8.0.16.jar
mysql-connector-java-8.0.16.jar驱动包下载地址:
链接:https://pan.baidu.com/s/1KZecMq225CqUYLAJqhJuwQ
提取码:mb3n
5、修改core-site.xml的配置
修改bigdata01中的core-site.xml,然后同步到集群中的另外两个节点上
如果不增加这个配置,使用beeline连接hive的时候会报错
[root@bigdata01 hadoop]# vi core-site.xml
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
[root@bigdata01 hadoop]# scp -rq etc/hadoop/core-site.xml bigdata02:/data/soft/hadoop-3.2.0/etc/hadoop/
[root@bigdata01 hadoop]# scp -rq etc/hadoop/core-site.xml bigdata03:/data/soft/hadoop-3.2.0/etc/hadoop/
如果是单节点的,只要改bigdata01就行了,不用scp了。
注意:bigdata04这个客户端节点上不需要修改这个配置就可以了。
5、重启Hadoop集群
[root@bigdata01 hadoop-3.2.0]# sbin/stop-all.sh
[root@bigdata01 hadoop-3.2.0]# sbin/start-all.sh
6、修改hosts文件
最后建议修改一下bigdata04的hosts文件,否则这个节点上无法识别集群中节点的主机名,使用起来不方便,
顺便也修改一下bigdata01、bigdata02、bigdata03上的hosts,让这几台机器互相认识一下
[root@bigdata01 ~]# vi /etc/hosts
192.168.182.100 bigdata01
192.168.182.101 bigdata02
192.168.182.102 bigdata03
192.168.182.103 bigdata04
[root@bigdata02 ~]# vi /etc/hosts
192.168.182.100 bigdata01
192.168.182.101 bigdata02
192.168.182.102 bigdata03
192.168.182.103 bigdata04
[root@bigdata03 ~]# vi /etc/hosts
192.168.182.100 bigdata01
192.168.182.101 bigdata02
192.168.182.102 bigdata03
192.168.182.103 bigdata04
[root@bigdata04 ~]# vi /etc/hosts
192.168.182.100 bigdata01
192.168.182.101 bigdata02
192.168.182.102 bigdata03
192.168.182.103 bigdata04
7、初始化Hive的Metastore
schematool -dbType mysql -initSchema
如果发现如下报错
[root@bigdata04 apache-hive-3.1.2-bin]# bin/schematool -dbType mysql -initSchema
Exception in thread "main" java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
at [row,col,system-id]: [3215,96,"file:/data/soft/apache-hive-3.1.2-bin/conf/hive-site.xml"]
at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2981)
at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2930)
at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2805)
at org.apache.hadoop.conf.Configuration.get(Configuration.java:1459)
at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java:4996)
at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java:5069)
at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5156)
at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:5104)
at org.apache.hive.beeline.HiveSchemaTool.<init>(HiveSchemaTool.java:96)
at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1473)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
at [row,col,system-id]: [3215,96,"file:/data/soft/apache-hive-3.1.2-bin/conf/hive-site.xml"]
at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:621)
at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:491)
at com.ctc.wstx.sr.StreamScanner.reportIllegalChar(StreamScanner.java:2456)
at com.ctc.wstx.sr.StreamScanner.validateChar(StreamScanner.java:2403)
at com.ctc.wstx.sr.StreamScanner.resolveCharEnt(StreamScanner.java:2369)
at com.ctc.wstx.sr.StreamScanner.fullyResolveEntity(StreamScanner.java:1515)
at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2828)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1123)
at org.apache.hadoop.conf.Configuration$Parser.parseNext(Configuration.java:3277)
at org.apache.hadoop.conf.Configuration$Parser.parse(Configuration.java:3071)
at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2964)
... 15 more
但是执行之后发现报错了,提示hive-site.xml文件中的第3215行内容有问题
其实这个是原始配置文件本身就有的问题,最直接的就是把这一行直接删掉,删除之后的效果如下:其实就是把hive.txn.xlock.iow对应的description标签内容删掉,这样就可以了
<property>
<name>hive.txn.xlock.iow</name>
<value>true</value>
<description>
</description>
</property>
修改后再执行初始化命令,初始化Metastore
schematool -dbType mysql -initSchema
发现有如下报错,提示没有hive这个数据库。
连接到MySQL,创建mysql数据库。
然后重新执行初始化的命令
schematool -dbType mysql -initSchema
这个要等一会,估计几分钟左右,出现如下提示说明初始化完成了。
初始化成功以后,查看本地Mysql数据库,发现会自动创建一堆的表,看到这些就说明Metastore初始化成功了
这样Hive就安装好了,注意了,目前针对Hive不需要启动任何进程
接下来我们就可以开始使用了。