1. 资源规划

组件 bigdata-hk-node1 bigdata-hk-node2 bigdata-hk-node3
OS centos7.6 centos7.6 centos7.6
HDFS NN/DN DN 2NN/DN
YARN NM RM/NM/JobHistoryServer NM
MySQL N.A N.A mysqld
Hive HiveServer2/CLI/Beeline N.A N.A

2. 安装介质

版本:apache-hive-3.1.2-bin.tar.gz
下载:http://archive.apache.org/dist/hive

3. 环境准备

  • 安装Hadoop

参考:《CentOS7.6-安装Hadoop-3.1.3

  • 安装MySQL

参考:《CentOS7.6-安装MySQL-5.7.30

4. 安装Hive

4.1. 解压缩

  1. # 登录bigdata-hk-node1节点
  2. cd /share
  3. tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/

4.2. 创建相关目录

  1. cd /opt/module/apache-hive-3.1.2-bin/conf
  2. cp hive-env.sh.template hive-env.sh
  3. cp hive-default.xml.template hive-site.xml
  4. cp hive-log4j2.properties.template hive-log4j2.properties
  5. mkdir -p /opt/module/apache-hive-3.1.2-bin/logs
  6. mkdir -p /opt/module/apache-hive-3.1.2-bin/tmpdir

4.3. 配置Hive

  1. 配置hive-log4j2.properties。

    1. vi /opt/module/apache-hive-3.1.2-bin/conf/hive-log4j2.properties

    配置如下(修改):

    1. # 日志目录需要提前创建
    2. property.hive.log.dir=/opt/module/apache-hive-3.1.2-bin/logs
  2. 配置hive-env.sh。

    1. vi /opt/module/apache-hive-3.1.2-bin/conf/hive-env.sh

    配置如下(新增):

    1. # 末尾添加
    2. export HADOOP_HOME=/opt/module/hadoop-3.1.3
    3. export HIVE_CONF_DIR=/opt/module/apache-hive-3.1.2-bin/conf
    4. export HIVE_AUX_JARS_PATH=/opt/module/apache-hive-3.1.2-bin/lib
  3. 配置hive-site.xml。

    1. rm -rf /opt/module/apache-hive-3.1.2-bin/conf/hive-site.xml
    2. vi /opt/module/apache-hive-3.1.2-bin/conf/hive-site.xml

    服务端配置:

    1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    3. <configuration>
    4. <property>
    5. <name>system:java.io.tmpdir</name>
    6. <value>/opt/module/apache-hive-3.1.2-bin/tmpdir</value>
    7. </property>
    8. <property>
    9. <name>system:user.name</name>
    10. <value>vagrant</value>
    11. </property>
    12. <property>
    13. <name>hive.metastore.warehouse.dir</name>
    14. <value>/user/hive/warehouse</value>
    15. </property>
    16. <!-- Hive服务端配置 -->
    17. <property>
    18. <name>javax.jdo.option.ConnectionURL</name>
    19. <value>jdbc:mysql://bigdata-hk-node3:3306/hive2_metadata?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    20. </property>
    21. <property>
    22. <name>javax.jdo.option.ConnectionDriverName</name>
    23. <value>com.mysql.jdbc.Driver</value>
    24. </property>
    25. <property>
    26. <name>javax.jdo.option.ConnectionUserName</name>
    27. <value>hive2</value>
    28. </property>
    29. <property>
    30. <name>javax.jdo.option.ConnectionPassword</name>
    31. <value>hive2</value>
    32. </property>
    33. </configuration>

    5. 配置Hadoop

  4. 配置core-site.xml。

    1. vi /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

    配置如下:

    1. <!-- hiveserver2增加了权限控制,需要在hadoop的配置 -->
    2. <property>
    3. <name>hadoop.proxyuser.vagrant.hosts</name>
    4. <value>*</value>
    5. </property>
    6. <property>
    7. <name>hadoop.proxyuser.vagrant.groups</name>
    8. <value>*</value>
    9. </property>
  5. 配置hdfs-site.xml。

    1. vi /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml

    配置如下:

    1. <property>
    2. <name>dfs.webhdfs.enabled</name>
    3. <value>true</value>
    4. </property>

    修改完配置文件后注意分发到集群其他节点。

    1. scp -r /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml vagrant@bigdata-hk-node2:/opt/module/hadoop-3.1.3/etc/hadoop/
    2. scp -r /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml vagrant@bigdata-hk-node3:/opt/module/hadoop-3.1.3/etc/hadoop/
    3. scp -r /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml vagrant@bigdata-hk-node2:/opt/module/hadoop-3.1.3/etc/hadoop/
    4. scp -r /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml vagrant@bigdata-hk-node3:/opt/module/hadoop-3.1.3/etc/hadoop/

    之后在HDFS上创建Hive仓库存储目录。 ```bash

    启动HDFS并创建Hive相关目录

    cd /opt/module/hadoop-3.1.3/

创建Hive相关路径并赋权

bin/hdfs dfs -mkdir -p /user/hive/warehouse bin/hdfs dfs -mkdir -p /user/hive/tmp bin/hdfs dfs -mkdir -p /user/hive/log bin/hdfs dfs -chmod -R 777 /user/hive/warehouse bin/hdfs dfs -chmod -R 777 /user/hive/tmp bin/hdfs dfs -chmod -R 777 /user/hive/log

  1. <a name="NN09n"></a>
  2. # 6. 环境变量设置
  3. ```bash
  4. sudo vi /etc/profile.d/bigdata_env.sh # :$(或G:`shift+g`)到达行尾添加

配置如下:

  1. # HIVE_HOME
  2. export HIVE_HOME=/opt/module/apache-hive-3.1.2-bin
  3. export PATH=$HIVE_HOME/bin:$PATH

环境变量生效:

  1. source /etc/profile

7. 依赖冲突解决

  1. # 使用官方介质安装需要执行如下操作,使用兼容版本则不需执行(已替换为:guava-27.0-jre.jar)
  2. rm -rf /opt/module/apache-hive-3.1.2-bin/lib/guava-19.0.jar
  3. cp /opt/module/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/apache-hive-3.1.2-bin/lib/

8. 集成MySQL

  1. 上传MySQL驱动包至${HIVE_HOME}/lib,推荐mysql-connector-java-5.1.40.jar以上版本。(下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java

    1. cp /share/mysql-connector-java-5.1.47.jar /opt/module/apache-hive-3.1.2-bin/lib/
  2. 创建元数据库用户。

    1. # bigdata-hk-node3(MySQL安装节点,root)
    2. sudo su
    3. source /etc/profile
    4. mysql -uroot -p123456

    操作如下:

    1. -- 创建Hive用户
    2. CREATE USER 'hive2'@'%' IDENTIFIED BY 'hive2';
    3. GRANT ALL PRIVILEGES ON *.* TO 'hive2'@'%' WITH GRANT OPTION;
    4. flush privileges;
    5. quit
  3. 初始化元数据,看到“schemaTool completed” ,即初始化成功!

    1. cd /opt/module/apache-hive-3.1.2-bin
    2. schematool -initSchema -dbType mysql -verbose
  4. 元数据库授权。

    1. # bigdata-hk-node3(MySQL安装节点,root)
    2. sudo su
    3. source /etc/profile
    4. mysql -uroot -p123456

    操作如下:

    1. -- 对元数据库赋权限
    2. use mysql;
    3. select User, Host from user;
    4. update user set host='%' where host='localhost';
    5. -- delete from user where host='localhost' and User='hive2';
    6. -- 删除root用户的其他host(%之外)
    7. use hive2_metadata;
    8. grant all on hive2_metadata.* to hive2@'%' identified by 'hive2';
    9. ALTER DATABASE hive2_metadata CHARACTER SET latin1;
    10. flush privileges;
    11. quit

    9. 验证

    1. # 需提前启动HDFS和Yarn服务
    2. # 创建数据文件
    3. vi /datas/stu.txt

    内容如下:

    1. 00001,zhangsan
    2. 00002,lisi
    3. 00003,wangwu
    4. 00004,zhaoliu

    创建库表并加载数据到Hive表: ```bash cd /opt/module/apache-hive-3.1.2-bin/bin

    方式1:普通CLI

    ./hive

方式2:打开debug模式

./hive -hiveconf hive.root.logger=DEBUG,console

创建表

hive> CREATE TABLE stu(id INT,name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’ ;

加载数据

hive> load data local inpath ‘/datas/stu.txt’ into table stu;

查看库表(不走MR,fetch抓取)

hive> select * from stu;

查看库表(调用MR)

hive> select count(*) from stu; ```