当前位置:   article > 正文

八十四、尚硅谷kylin单机版环境——安装Hive3.1.2_apache-hive-3.1.2-bin.tar.gz

apache-hive-3.1.2-bin.tar.gz

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>
    -->

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/507828
推荐阅读
相关标签
  

闽ICP备14008679号