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
- 安装MySQL
4. 安装Hive
4.1. 解压缩
# 登录bigdata-hk-node1节点
cd /share
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
4.2. 创建相关目录
cd /opt/module/apache-hive-3.1.2-bin/conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
mkdir -p /opt/module/apache-hive-3.1.2-bin/logs
mkdir -p /opt/module/apache-hive-3.1.2-bin/tmpdir
4.3. 配置Hive
配置hive-log4j2.properties。
vi /opt/module/apache-hive-3.1.2-bin/conf/hive-log4j2.properties
配置如下(修改):
# 日志目录需要提前创建
property.hive.log.dir=/opt/module/apache-hive-3.1.2-bin/logs
配置hive-env.sh。
vi /opt/module/apache-hive-3.1.2-bin/conf/hive-env.sh
配置如下(新增):
# 末尾添加
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export HIVE_CONF_DIR=/opt/module/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/opt/module/apache-hive-3.1.2-bin/lib
配置hive-site.xml。
rm -rf /opt/module/apache-hive-3.1.2-bin/conf/hive-site.xml
vi /opt/module/apache-hive-3.1.2-bin/conf/hive-site.xml
服务端配置:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>system:java.io.tmpdir</name>
<value>/opt/module/apache-hive-3.1.2-bin/tmpdir</value>
</property>
<property>
<name>system:user.name</name>
<value>vagrant</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- Hive服务端配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://bigdata-hk-node3:3306/hive2_metadata?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive2</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive2</value>
</property>
</configuration>
5. 配置Hadoop
配置core-site.xml。
vi /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
配置如下:
<!-- hiveserver2增加了权限控制,需要在hadoop的配置 -->
<property>
<name>hadoop.proxyuser.vagrant.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.vagrant.groups</name>
<value>*</value>
</property>
配置hdfs-site.xml。
vi /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
配置如下:
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
修改完配置文件后注意分发到集群其他节点。
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/
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/
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/
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
<a name="NN09n"></a>
# 6. 环境变量设置
```bash
sudo vi /etc/profile.d/bigdata_env.sh # :$(或G:`shift+g`)到达行尾添加
配置如下:
# HIVE_HOME
export HIVE_HOME=/opt/module/apache-hive-3.1.2-bin
export PATH=$HIVE_HOME/bin:$PATH
环境变量生效:
source /etc/profile
7. 依赖冲突解决
# 使用官方介质安装需要执行如下操作,使用兼容版本则不需执行(已替换为:guava-27.0-jre.jar)
rm -rf /opt/module/apache-hive-3.1.2-bin/lib/guava-19.0.jar
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
上传MySQL驱动包至${HIVE_HOME}/lib,推荐mysql-connector-java-5.1.40.jar以上版本。(下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java)
cp /share/mysql-connector-java-5.1.47.jar /opt/module/apache-hive-3.1.2-bin/lib/
创建元数据库用户。
# bigdata-hk-node3(MySQL安装节点,root)
sudo su
source /etc/profile
mysql -uroot -p123456
操作如下:
-- 创建Hive用户
CREATE USER 'hive2'@'%' IDENTIFIED BY 'hive2';
GRANT ALL PRIVILEGES ON *.* TO 'hive2'@'%' WITH GRANT OPTION;
flush privileges;
quit
初始化元数据,看到“schemaTool completed” ,即初始化成功!
cd /opt/module/apache-hive-3.1.2-bin
schematool -initSchema -dbType mysql -verbose
元数据库授权。
# bigdata-hk-node3(MySQL安装节点,root)
sudo su
source /etc/profile
mysql -uroot -p123456
操作如下:
-- 对元数据库赋权限
use mysql;
select User, Host from user;
update user set host='%' where host='localhost';
-- delete from user where host='localhost' and User='hive2';
-- 删除root用户的其他host(%之外)
use hive2_metadata;
grant all on hive2_metadata.* to hive2@'%' identified by 'hive2';
ALTER DATABASE hive2_metadata CHARACTER SET latin1;
flush privileges;
quit
9. 验证
# 需提前启动HDFS和Yarn服务
# 创建数据文件
vi /datas/stu.txt
内容如下:
00001,zhangsan
00002,lisi
00003,wangwu
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; ```