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&amp;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 安装的主要内容,如果未能解决你的问题,请参考以下文章

FILAJson Wu系列,全线限量首发!

go·精彩恒隆周年庆|全线助力天津购物节

深度操作系统又又又全线入围中直采购名录啦!

Hive Join查询在每行中添加 n

金港赢配资稀土全线爆发

腾讯云宣布核心产品全线降价 最高降幅达50%