大数据应用之 — hive 3.1.3 安装部署
hive
解压安装
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/
cd /opt/
mv apache-hive-3.1.3-bin hive-3.1.3
将 MySQL 的 JDBC 驱动上传到 Hive 的 lib 目录下
cp mysql-connector-java-5.1.48.jar /opt/hive-3.1.3/lib
添加Hive环境变量
vim /etc/profile
#增加
export HIVE_HOME=/opt/hive-3.1.3
export PATH=$PATH:$HIVE_HOME/bin
#保存后
source /etc/profile
配置
#配置 Metastore 到 MySQL
#在conf文件夹下添加新的hive-site.xml文件
vi /opt/hive-3.1.3/conf/hive-site.xml
#添加以下内容:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc 连接的 URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://lsyk01:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc 连接的 Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc 连接的 username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc 连接的 password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>fa</value>
</property>
<!-- Hive 元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--元数据存储授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!-- Hive 默认在 HDFS 的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- 指定存储元数据要连接的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://lsyk01:9083</value>
</property>
<!-- 指定 hiveserver2 连接的 host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>lsyk01</value>
</property>
<!-- 指定 hiveserver2 连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<!--打印当前库和表头-->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
创建数据库 metastore
登录mysql创建库
create database metastore;
初始化 Hive 元数据库
schematool -initSchema -dbType mysql -verbose
启停止metastore服务
#启动
nohup hive --service metastore 2>&1 &
nohup hive --service hiveserver2 2>&1 &
#停止
ps -ef 2>/dev/null | grep -v grep | grep -i hivemetastore | awk '{print $2}' | xargs kill -9
ps -ef 2>/dev/null | grep -v grep | grep -i hiveserver2 | awk '{print $2}' | xargs kill -9
beeline连接
beeline -u jdbc:hive2://lsyk01:10000 -n root
使用
beeline -u jdbc:hive2://lsyk01:10000 -n root
0: jdbc:hive2://lsyk01:10000> create database lsyk;
0: jdbc:hive2://lsyk01:10000> show databases;
0: jdbc:hive2://lsyk01:10000> use lsyk;
0: jdbc:hive2://lsyk01:10000> create table ls(name string,univ string,age int);
0: jdbc:hive2://lsyk01:10000> create table yk(name string,univ string,age int);
0: jdbc:hive2://lsyk01:10000> show tables;
0: jdbc:hive2://lsyk01:10000> insert into ls values('yuanls','TqingHua',18);
0: jdbc:hive2://lsyk01:10000> insert into yk values('yuanyk','Peiking',18);
0: jdbc:hive2://lsyk01:10000> select * from ls;
0: jdbc:hive2://lsyk01:10000> select count(1) from ls,yk;
问题
hiveserver2连接报错: User: root is not allowed to impersonate anonymous (state=08S01,code=0)
解决:配置 /opt/hadoop-3.3.3/etc/hadoop/core-site.xml
vi /opt/hadoop-3.3.3/etc/hadoop/core-site.xml
## 增加:
<!--配置root(超级用户)允许通过代理的⽤户-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
重启hdfs、yarn、metastore、hive2
配置历史服务器
- 配置mapred-site.xml,并分发到其他节点
vim mapred-site.xml
# 增加以下内容
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>lsyk01:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>lsyk01:19888</value>
</property>
- 启动历史服务:lsyk01上执行
mapred --daemon start historyserver
jps
- 登录 http://lsyk01:19888/jobhistory/
- 停止历史服务
mapred --daemon stop historyserver
建表parquet
create table pqt (c1 string,score int)
partitioned by (ds string)
stored as parquet TBLPROPERTIES('parquet.compression'='SNAPPY');
show create table pqt;