一、Hive安装部署

想要安装Hive,那首先要下载Hive的安装包,进入Hive的官网,找到download下载链接。

2 hive1 区别 hive3跟hive2对比_hive


2 hive1 区别 hive3跟hive2对比_hadoop_02


发现目前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

2 hive1 区别 hive3跟hive2对比_java_03


按照这里面说的hive2.x的需要在hadoop2.x版本中运行,hive3.x的需要在hadoop3.x版本中运行。

所以在这里我们最好是使用Hive3.x的版本

那我们就下载hive-3.1.2这个版本,如果想要下载其它历史版本的话这里面还找不到,不过可以使用apache的一个通用archive地址
https://archive.apache.org/dist/hive/

在这里面就可以找到hive的所有历史版本了

2 hive1 区别 hive3跟hive2对比_hadoop_04


下面开始安装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

2 hive1 区别 hive3跟hive2对比_hadoop_05

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

2 hive1 区别 hive3跟hive2对比_2 hive1 区别_06

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这个数据库。

2 hive1 区别 hive3跟hive2对比_hadoop_07


连接到MySQL,创建mysql数据库。

2 hive1 区别 hive3跟hive2对比_2 hive1 区别_08


然后重新执行初始化的命令

schematool -dbType mysql -initSchema

这个要等一会,估计几分钟左右,出现如下提示说明初始化完成了。

2 hive1 区别 hive3跟hive2对比_hadoop_09


初始化成功以后,查看本地Mysql数据库,发现会自动创建一堆的表,看到这些就说明Metastore初始化成功了

2 hive1 区别 hive3跟hive2对比_java_10


这样Hive就安装好了,注意了,目前针对Hive不需要启动任何进程

接下来我们就可以开始使用了。