赞
踩
hive3.1.2安装
hive表中数据可以映射到hbase
hbase中的数据也可以反映射到hive
(一)打开安装包所在地
[root@hurys22 ~]# cd /opt/install/
[root@hurys22 install]# ls
apache-hive-3.1.2-bin.tar.gz hbase-2.0.5-bin.tar.gz mysql-connector-java-5.1.37.jar
apache-kylin-3.0.2-bin.tar.gz jdk-8u212-linux-x64.tar.gz spark-3.0.0-bin-hadoop3.2.tgz
apache-zookeeper-3.5.7-bin.tar.gz kafka_2.11-2.4.1.tgz
hadoop-3.1.3.tar.gz mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
(二)解压安装包
[root@hurys22 install]# tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/soft/
[root@hurys22 install]# cd /opt/soft
[root@hurys22 soft]# ls
apache-hive-3.1.2-bin hadoop313
(三)重命名
[root@hurys22 soft]# mv apache-hive-3.1.2-bin/ hive312
[root@hurys22 soft]# ls
hadoop313 hive312
(四)查看hive安装路径
[root@hurys22 soft]# cd ./hive312/
[root@hurys22 hive312]# pwd
/opt/soft/hive312
(五)配置环境变量
[root@hurys22 soft]# vi /etc/profile
#hive
export HIVE_HOME=/opt/soft/hive312
export PATH=$PATH:$HIVE_HOME/bin
(六)环境变量配好后source一下
[root@hurys22 soft]# source /etc/profile
(七)解决日志jar包冲突问题 改变hive安装路径下lib文件夹里的log4j-slf4j-impl-2.10.0.jar形态
[root@hurys22 hive312]# mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak
(八)拷贝MySQL的JDBC驱动文件到hive安装路径的lib文件夹下
[root@hurys22 hive312]# cp /opt/install/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib
(九)修改hive安装路径conf文件下的配置文件hive-env.sh.template
目的:调整Hive堆内存参数,把默认的最大内存从默认值256MB调整为1024MB。如果不调整的话,运行大型SQL的话,会出问题
首先,打开hive安装路径conf文件
[root@hurys22 hive312]# cd ./conf/
[root@hurys22 conf]# ls
beeline-log4j2.properties.template hive-exec-log4j2.properties.template llap-cli-log4j2.properties.template
hive-default.xml.template hive-log4j2.properties.template llap-daemon-log4j2.properties.template
hive-env.sh.template ivysettings.xml parquet-logging.properties
然后,文件重命名为hive-env.sh
[root@hurys22 conf]# mv hive-env.sh.template hive-env.sh
[root@hurys22 conf]# ls
beeline-log4j2.properties.template hive-exec-log4j2.properties.template llap-cli-log4j2.properties.template
hive-default.xml.template hive-log4j2.properties.template llap-daemon-log4j2.properties.template
hive-env.sh ivysettings.xml parquet-logging.properties
接着,打开文件hive-env.sh并修改
[root@hurys22 conf]# vi hive-env.sh
39 #
40 export HADOOP_HEAPSIZE=1024
41 #
最后,修改好后:wq保存并退出
(十)修改hive安装路径conf文件下的配置文件hive-log4j2.properties.template
目的:修改Hive运行的日志
首先,在hive安装路径conf文件下
[root@hurys22 conf]# ls
beeline-log4j2.properties.template hive-exec-log4j2.properties.template llap-cli-log4j2.properties.template
hive-default.xml.template hive-log4j2.properties.template llap-daemon-log4j2.properties.template
hive-env.sh.template
然后,文件重命名为hive-log4j2.properties
[root@hurys22 conf]# mv hive-log4j2.properties.template hive-log4j2.properties
接着,打开文件hive-log4j2.properties并修改日志路径
[root@hurys22 conf]# vi hive-log4j2.properties
24 property.hive.log.dir =/var/log/hive312
最后,修改好后:wq保存并退出
(十一)在hive安装路径conf文件下创建文件hive-site.xml
首先,在conf路径下创建文件
[root@hurys22 conf]# vi hive-site.xml
然后,复制粘贴下面内容
(注意:
1.需要修改一下服务器名称。hurys22只是我使用的服务器,需要改为自己用的服务器名称
2.在JDBC连接的password一项中,hurys@123是我MySQL密码,这里需要改为自己服务器的MySQL密码
)
<?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://hurys22:3306/metastore?useSSL=false&useUnicode=true&characterEncoding=UTF-8</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>hurys@123</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hurys22</value>
</property>
<!-- 指定存储源数据要连接的地址 -->
<!--
<property>
<name>hive.metastore.uris</name>
<value>thrift://hurys22:9083</value>
</property>
-->
<!-- 元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!-- Hive元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!-- hiveserver2的高可用参数,开启此参数可以提高hiveserver2的启动速度 -->
<property>
<name>hive.server2.active.passive.ha.enable</name>
<value>true</value>
</property>
</configuration>
最后,wq保存并退出
(十二)初始化元数据库并且设置元数据支持中文显示
第一步,先登录MySQL
[root@hurys22 ~]# mysql -u root -phurys@123
第二步,创建hive-site.xml文件中需要的元数据库metastore
mysql> create database metastore;
Query OK, 1 row affected (0.00 sec)
第三步,创建好后确认一下
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| metastore |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
第四步,确认元数据库创好后退出MySQL
mysql> quit;
Bye
第五步,初始化元数据库
[root@gree139 conf]# schematool -dbType mysql -initSchema
初始化后,页面最后两行出现一下结果即为初始化成功
Initialization script completed
schemaTool completed
第六步,再次登录MySQL 设置元数据支持中文显示
[root@hurys22 hurys_table_data]# mysql -uroot -phurys@123
进入metastore数据库
mysql> use metastore;
# 修改字段注释字符集
mysql> alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
Query OK, 21 rows affected (0.12 sec)
Records: 21 Duplicates: 0 Warnings: 0
# 修改表注释字符集
mysql> alter table TABLE_PARAMS modify column PARAM_VALUE varchar(20000) character set utf8;
Query OK, 28 rows affected (0.11 sec)
Records: 28 Duplicates: 0 Warnings: 0
# 修改分区参数,支持分区建用中文表示
mysql> alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(20000) character set utf8;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(20000) character set utf8;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
# 修改索引名注释,支持中文
mysql> alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
# 修改视图,支持中文
mysql> alter table TBLS modify COLUMN VIEW_EXPANDED_TEXT mediumtext CHARACTER SET utf8;
Query OK, 4 rows affected (0.09 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> alter table TBLS modify COLUMN VIEW_ORIGINAL_TEXT mediumtext CHARACTER SET utf8;
Query OK, 4 rows affected (0.13 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> quit;
Bye
(十三)登录hive,并建表插入数据测试一下
第一步,在hive的conf路径下登录hive
[root@hurys22 ~]# cd /opt/soft/hive312/conf/
[root@hurys22 conf]# hive
第二步,查看目前有的数据库
hive> show databases;
OK
default
第三步,创建测试用的数据库test
hive> create database test;
OK
第四步,使用刚建好的测试数据库test
hive> use test;
OK
第五步,建表 test_user
hive> CREATE TABLE test_user (
`id` STRING COMMENT '编号',
`name` STRING COMMENT '姓名',
`province_id` STRING COMMENT '省份ID',
`province_name` STRING COMMENT '省份名称'
) COMMENT '用户表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
OK
第六步,查看test数据库中建好的表test_user
hive> show tables;
OK
test_user
第七步,插入数据
hive> INSERT INTO TABLE test_user VALUES('1','zhangsan','001','北京');
OK
Time taken: 27.202 seconds
第八步,插入好后查看一下表中数据
hive> select * from test_user;
OK
1 zhangsan 001 北京
至此,hive已经创建好
(十四)测试hive2的后台启动(有两种方式)
第一步,在hive安装路径conf文件下
[root@hurys22 ~]# cd /opt/soft/hive312/conf/
第二步,选择两种后台启动的一种,建议2.2 不需要打开新的xhsell窗口
后台启动
2.1 [root@hurys22 conf]# hive --service hiveserver2
2.2 [root@hurys22 conf]# nohup ../bin/hive --service hiveserver2 &
第三步,输入beeline -u jdbc:hive2://hurys22:10000/ -n root
注意:hurys22是我的服务器名称,这里需要改为自己的服务器名字
[root@hurys22 conf]# beeline -u jdbc:hive2://hurys22:10000/ -n root
Connecting to jdbc:hive2://hurys22:10000/
Connected to: Apache Hive (version 3.1.2)
Driver: Hive JDBC (version 3.1.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.2 by Apache Hive
0: jdbc:hive2://hurys22:10000/>
出现这个即为成功
hive表中数据可以映射到hbase
hbase中的数据也可以反映射到hive
一、hive表中数据可以映射到hbase
create external table ex_spu_hbase(
key string,
sales double,
praise int
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping"=":key,result:sales,result:praise")
tblproperties("hbase.table.name"="exam:spu");
二、hbase中的数据也可以反映射到hive
create external table if not exists hb_users(
userid string,
birthyear int,
gender string,
locale string,
joinedAt string,
location string,
timezone string
)stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ("hbase.columns.mapping"=":key,profile:birthyear,profile:gender,region:locale,registration:joinedAt,region:location,region:timezone")
tblproperties ("hbase.table.name"="events_db:users");
三、把外部表数据存储到hive的表中 并且更改 存储格式 数据安全 而且 快
create table if not exists users stored as orc as
select * from hb_users;
四、查看hive日志文件
第一步,先到hive日志文件路径
在hive的conf目录下hive-log4j2.properties可以查到
[root@hurys22 conf]# vi hive-log4j2.properties
[root@hurys22 conf]# cd /var/log/hive312
[root@hurys22 hive312]# ls
hive.log hive.log.2023-04-12 hive.log.2023-04-13
[root@hurys22 hive312]# ll
total 85296
-rw-r--r-- 1 root root 30323097 Apr 14 16:28 hive.log
-rw-r--r-- 1 root root 4705765 Apr 12 23:59 hive.log.2023-04-12
-rw-r--r-- 1 root root 46325208 Apr 13 21:57 hive.log.2023-04-13
在运行SQL之前,先tail -f
[root@hurys22 hive312]# tail -f hive.log
然后执行SQL,有问题就会出现
这个很重要!!!
在hive中先运行 set hive.vectorized.execution.enabled=false;
再执行SQL
五、hive参数优化
set hive.support.concurrency=false;
--map阶段内存不足
set mapreduce.map.memory.mb=10150;
set mapreduce.map.java.opts=-Xmx6144m;
-- reduce阶段内存不足
set mapreduce.reduce.memory.mb=10150;
set mapreduce.reduce.java.opts=-Xmx8120m;
--hive执行内存不足
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.dynamic.partition=true;
set hive.exec.parallel=true;
set hive.support.concurrency=false;
set mapreduce.map.memory.mb=4128;
set hive.vectorized.execution.enabled=false;
注意,一定要注意,在尚硅谷资料里hive-site.xml文件中,这几行代码一定要注销掉,否则不能后台启动hiveserver2,坑死人了!
<!-- 指定存储源数据要连接的地址 -->
<!--
<property>
<name>hive.metastore.uris</name>
<value>thrift://kylin102:9083</value>
</property>
-->
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。