Hive 安装
Posted 我只想躺平
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive 安装相关的知识,希望对你有一定的参考价值。
一、安装说明
1、Hive 的依赖软件
- mysql 数据库 --- 用来保存 元数据信息
- Hadoop 集群 --- Hive 数据存放在 HDFS 分布式文件系统
2、版本说明
- 目前存在 Hive 1.x.y、2.x.y、3.x.y 的版本,安装时注意和 Hadoop 版本的匹配关系
- Hive 1.2.2 是 1.x.y 系列最后一个版本,全线匹配的 Hadoop 为 1.x.y 、2.x.y 的所有版本
- Hive 2.1.1 是 2.x.y 系列中第四个版本,匹配的 Hadoop 版本为全线的所有 2.x.y 的版本
- Hive 不仅与 Hadoop 有版本匹配要求,Hive 与 Hbase 、Hadoop 与 Hbase 同样如此,安装时要注意版本兼容性
二、Mysql 安装
[root@hadoop01 ~]# wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
[root@hadoop01 ~]# yum -y install mysql57-community-release-el7-11.noarch.rpm
[root@hadoop01 ~]# sed -i "s/gpgcheck=1/gpgcheck=0/" /etc/yum.repos.d/mysql-community.repo
[root@hadoop01 ~]# yum -y install mysql-community-server
[root@hadoop01 ~]# service mysqld restart
[root@hadoop01 ~]# netstat -lntp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 2833/mysqld
[root@hadoop01 ~]# grep "password" /var/log/mysqld.log | grep root
2022-02-24T09:41:34.363262Z 1 [Note] A temporary password is generated for root@localhost: cx;!4sKaIMmL
[root@hadoop01 ~]# mysql -uroot -pcx;!4sKaIMmL
mysql> alter user root@localhost identified by Testdb3306!; # 进入数据库第一步就必须更改
Query OK, 0 rows affected (0.01 sec)
mysql> show variables like validate_password%; # Mysql 数据库口令规则要求
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
mysql> set global validate_password_policy=0; # 更改数据库用户口令规则
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like validate_password%;
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
mysql> alter user root@localhost identified by MYdb3306!;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to root@% identified by Root1234!;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
三、Hive 安装
1、前提条件
依照安装说明中所示,要安装 Hive ,前提是安装并成功运行了下面的服务相关:
-
系统初始化防火墙时间同步之类的,就自然而然不用说了
-
正确安装 JDK ,并配置好了环境变量
-
必须安装 Hadoop 集群并正常运行服务 ( 分布式集群 或者 伪分布式集群 都可以的 )
-
如果是分布式的 Hadoop 集群,安装 Hive 现在 NameNode Master 服务器安装
- 必须安装 Mysql 数据库 ( 5.7.X 、8.0.X 版本即可 ) ,并正常运行服务
2、安装过程
1、解压安装
[root@hadoop01 ~]# tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local
[root@hadoop01 ~]# cd /usr/local
[root@hadoop01 local]# mv apache-hive-2.1.1-bin/ hive
2、 更改配置文件
[root@hadoop01 local]# cd hive
[root@hadoop01 hive]# cp hive-env.sh.template hive-env.sh
[root@hadoop01 hive]# cp hive-log4j2.properties.template hive-log4j2.properties
# hive-site.xml 是 Hive 的主配置文件,手动编写一个即可
[root@hadoop01 hive]# vim hive-site.xml
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/data/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://10.6.2.237:3306/hivedb?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Root1234!</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</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>
[root@hadoop01 hive]# vim /usr/local/hive/conf/hive-env.sh # 在文件上面加上下面三行
JAVA_HOME=/usr/local/jdk1.8.0_131
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR==/usr/local/hive/conf
[root@hadoop01 hive]# vim /usr/local/hive/conf/hive-log4j2.properties # 加上下面这行,定义日志输出路径
property.hive.log.dir = /usr/local/hive/logs
3、设置环境变量
[root@hadoop01 ~]# cp /etc/profile /etc/profile.bak2
[root@hadoop01 ~]# vim /etc/profile # 增加上面两行到文件的末尾
export HIVE_HOME=/usr/local/hive
export PATH=.:$PATH:$HIVE_HOME/bin
[root@hadoop01 ~]# source /etc/profile
3、创建 Hive 库
[root@hadoop01 ~]# mysql -uroot -pMYdb3306!
mysql> create database hivedb;
Query OK, 1 row affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
[root@hadoop01 ~]# service mysqld restart
4、上传驱动包
[root@hadoop01 ~]# cd /usr/local/hive/lib
[root@hadoop01 ~]# pwd
/usr/local/hive/lib
# 将 java 连接 mysql 的驱动包文件,上传到此目录下 ,包名为: mysql-connector-java-5.x.y-bin.jar
5、初始化并启动
[root@hadoop01 ~]# schematool -dbType mysql -initSchema
which: no hbase in (.:.:.:.:.:.:.:.:.:.:.:.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_131/bin:/usr/local/zookeeper/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/root/bin:/usr/local/jdk1.8.0_131/bin:/usr/local/zookeeper/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hive/bin:/usr/local/jdk1.8.0_131/bin:/usr/local/zookeeper/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hive/bin:/usr/local/hbase/bin)
SLF4J: Class path contains multiple SLF4J bindings.
... ...
# 上面提示 "which: no hbase in" 是因为没有安装 Hbase 的缘故,不影响 Hive 的正常使用,请忽略之
# 疑问:
# 1、我在搭建的伪集群上安装了 1.2.1 版本的 hive ,初始化的时候没有这个提示,不知道是不是我安装的问题
# 2、开始初始化的时候报错如下:
Error: Syntax error: Encountered "<EOF>" at line 1, column 64. (state=42X01,code=30000)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
*** schemaTool failed ***
# 后面网上搜索的解决方案是进数据库里面 --- alter database hivedb character set latin1 这个是字符集的问题, 比较奇怪,以前 1.2.1 版本的安装过多次都没有报错
[root@hadoop01 ~]# hive
which: no hbase in (.:.:.:.:.:.:.:.:.:.:.:.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_131/bin:/usr/local/zookeeper/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/root/bin:/usr/local/jdk1.8.0_131/bin:/usr/local/zookeeper/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hive/bin:/usr/local/jdk1.8.0_131/bin:/usr/local/zookeeper/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hive/bin:/usr/local/hbase/bin)
SLF4J: Class path contains multiple SLF4J bindings.
... ...
different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive (default)>
hive (default)> # 到此就是 Hive 的命令操作符位置
四、使用测试
1、创建数据库
[root@hadoop01 ~]# hive
... ... # 省略一些不重要的输出
hive (default)> show databases;
OK
database_name
default
Time taken: 2.107 seconds, Fetched: 1 row(s)
hive (default)> create database testhive;
OK
Time taken: 0.32 seconds
hive (default)> show databases;
OK
database_name
default
testhive
Time taken: 0.035 seconds, Fetched: 2 row(s)
hive (default)> exit;
2、查看验证
1、终端里面命令行查看
[root@hadoop01 ~]# hadoop fs -lsr / | grep testhive
drwxr-xr-x - root supergroup 0 2022-03-06 04:24 /data/hive/warehouse/testhive.db
2、在 WEB 界面查看
以上是关于Hive 安装的主要内容,如果未能解决你的问题,请参考以下文章