记一次 Centos7.x 基于 Hadoop 3.x 集群搭建部署 Hive

一、基本信息:

官网: http://hive.apache.org/

易百教程:https://www.yiibai.com/hive

下载地址:http://www.apache.org/dyn/closer.cgi/hive/


二、编写目的

1、如何在 Hadoop 集群上安装部署 Hive

2、启动 Hive ,把元数据存储在 Hdfs 上


三、Hadoop 基础集群搭建

参考:https://blog.csdn.net/llwy1428/article/details/111144524

参考:https://blog.csdn.net/llwy1428/article/details/111464707


四、Hive 的安装

1、在 master 节点安装 Mysql 数据库(Mysql 数据库安装节点可以根据需要指定,不一定非要在 master 节点上)

参考:https://blog.csdn.net/llwy1428/article/details/84965680

2、创建 Hive 数据库,用户,赋予权限(此处我用的 root 用户)

[root@master ~]# mysql -uroot -proot
MariaDB [(none)]> create database hive;
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hive               |
| mysql              |
| performance_schema |
+--------------------+
7 rows in set (0.00 sec)

3、节点创建 hive 用户

[root@master ~]# useradd hive

4、下载 Hive 的安装文件

[root@master ~]# wget -P /usr/bigdata/ https://mirror.bit.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

5、进入 /usr/bigdata/ 目录

[root@master ~]# cd /usr/bigdata/

6、解压文件 apache-hive-3.1.2-bin.tar.gz

[root@master bigdata]# tar zxvf apache-hive-3.1.2-bin.tar.gz

7、查看文件目录

8、创建目录

[root@master ~]# mkdir /usr/bigdata/apache-hive-3.1.2-bin/tmp
[root@master ~]# mkdir /usr/bigdata/apache-hive-3.1.2-bin/logs

9、进入 Hive 的配置文件目录

[root@master ~]# cd /usr/bigdata/apache-hive-3.1.2-bin/conf

10、在 master 节点  启动 Hadoop 集群的 HDFS 服务

[root@master ~]# /usr/bigdata/hadoop-3.3.0/sbin/start-dfs.sh
[root@master ~]# /usr/bigdata/hadoop-3.3.0/sbin/start-yarn.sh

11、在 HDFS 中创建 Hive 的数据存储目录

[root@master ~]# hadoop fs -mkdir /tmp
[root@master ~]# hadoop fs -mkdir -p /user/hive/warehouse
[root@master ~]# hadoop fs -chmod g+w /tmp
[root@master ~]# hadoop fs -chmod g+w /user/hive/warehouse
或
[root@master ~]# hdfs dfs -mkdir /tmp
[root@master ~]# hdfs dfs -mkdir -p /user/hive/warehouse
[root@master ~]# hdfs dfs -chmod g+w /tmp
[root@master ~]# hdfs dfs -chmod g+w /user/hive/warehouse

12、复制文件

[root@master conf]# cp hive-default.xml.template hive-site.xml
[root@master conf]# cp hive-env.sh.template hive-env.sh
[root@master conf]# cp hive-log4j2.properties.template hive-log4j2.properties

13、编辑 hive-site.xml 文件,配置信息 

[root@master ~]# vim /usr/bigdata/apache-hive-3.1.2-bin/conf/hive-site.xml

修改内容

<configuration>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <property>
        <name>hive.exec.mode.local.auto</name>
        <value>false</value>
        <description> Let Hive determine whether to run in local mode automatically </description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</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>
    <property>
      <name>hive.exec.local.scratchdir</name>
      <value>/usr/bigdata/apache-hive-3.1.2-bin/tmp/</value>
    <description>Local scratch space for Hive jobs</description>
    </property>
    <property>
      <name>hive.downloaded.resources.dir</name>
      <value>/usr/bigdata/apache-hive-3.1.2-bin/tmp/</value>
      <description>Temporary local directory for added resources in the remote file system.</description>
    </property>
</configuration>

14、修改 Hive 的可执行脚本 hive-env.sh

[root@master ~]# vim /usr/bigdata/apache-hive-3.1.2-bin/hive-env.sh

编辑内容

​export HADOOP_HEAPSIZE=1024
HADOOP_HOME=/usr/bigdata/hadoop-3.3.0
export HIVE_CONF_DIR=/usr/bigdata/apache-hive-3.1.2-bin/conf

15、编辑配置文件 hive-log4j2.properties 

[root@master ~]# vim /usr/bigdata/apache-hive-3.1.2-bin/hive-log4j2.properties

修改内容

property.hive.log.dir = /usr/bigdata/apache-hive-3.1.2-bin/logs

16、编辑文件  hive-config.sh

[root@master ~]# vim /usr/bigdata/apache-hive-3.1.2-bin/bin/hive-config.sh

修改内容

export JAVA_HOME=/usr/lib/jvm/java-1.8.0
export HADOOP_HOME=/usr/bigdata/hadoop-3.3.0
export HIVE_HOME=/usr/bigdata/apache-hive-3.1.2-bin

17、给整个 Hive 目录修改赋予权限

[root@master ~]# chmod -755 -R /usr/bigdata/apache-hive-3.1.2-bin

18、编辑系统环境变量

[root@master ~]# vim /etc/profile

内容如下

export JAVA_HOME="/usr/lib/jvm/java-1.8.0"
export JRE_HOME="/usr/lib/jvm/java-1.8.0/jre"
export HADOOP_HOME="/usr/bigdata/hadoop-3.3.0"
export HIVE_HOME="/usr/bigdata/apache-hive-3.1.2-bin"

export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/common/lib/*:$hive_HOME/lib

19、使新配置的环境变量生效

[root@master ~]# source /etc/profile

20、下载 java mysql 的驱动包  mysql-connector-java-5.1.46.jar

把  mysql-connector-java-5.1.46.jar 放在 /tmp 目录下

把 移动到 /usr/bigdata/apache-hive-3.1.2-bin/lib/ 目录下,并修改文件名 mysql-connector-java.jar

[root@master ~]# mv /tmp/mysql-connector-java-5.1.46.jar /usr/bigdata/apache-hive-3.1.2-bin/lib/mysql-connector-java.jar

21、Mysql 数据库初始化

[root@master ~]# schematool -initSchema -dbType mysql

Mysql 数据库初始化过程如下:

Mysql 数据库初始化结果(出现如下结果,表示初始化成功)

Initialization script completed
schemaTool completed

22、启动 Hive

[root@master ~]# /usr/bigdata/apache-hive-3.1.2-bin/bin/hive
或
[root@master ~]# hive

启动结果

五、Hive 基本命令

1、查看所有数据库列表

hive (default)> show databases;

2、创建数据库

hive (default)> create database db_test;

效果如下:

3、查看创建的数据库在 HDFS 中的信息(随意找一个 HDFS 客户端节点)

[root@master ~]# hadoop fs -ls /user/hive/warehouse
或
[root@master ~]# hdfs dfs -ls /user/hive/warehouse

效果如下

在任一节点执行 hdfs 命令

4、其他操作

hive (default)> create database hive_test;

hive (default)> use hive_test;
OK
Time taken: 0.026 seconds

hive (hive_test)> create table table_test(id string,name string,age int);
OK
Time taken: 0.362 seconds

hive (hive_test)> show tables;
OK
tab_name
db_test
table_test
Time taken: 0.024 seconds, Fetched: 1 row(s)

hive (hive_test)> insert into table_test values ('1','Tom',18);

hive (hive_test)> select * from table_test;
OK
table_test.id table_test.name table_test.age
1 Tom 18
Time taken: 0.208 seconds, Fetched: 1 row(s)

六、报错及解决方案

1、初始化报错:Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

执行初始化

[root@master ~]# schematool -initSchema -dbType mysql

原因:

    hadoop 和 hive 的两个 guava.jar 版本不一致
    两个位置分别位于下面两个目录:
    /usr/bigdata/apache-hive-3.1.2-bin/lib/

     /usr/bigdata/hadoop/share/hadoop/common/lib/

解决办法:

    删除低版本的那个,将高版本的复制到低版本目录下

具体操作如下:

[root@master ~]# ll /usr/bigdata/apache-hive-3.1.2-bin/lib/
guava-19.0.jar

[root@master ~]# ll /usr/bigdata/hadoop-3.3.0/share/hadoop/common/lib/
guava-27.0-jre.jar

[root@master ~]# rm -rf /usr/bigdata/apache-hive-3.1.2-bin/lib/guava-19.0.jar

[root@master ~]# cp /usr/bigdata/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar /usr/bigdata/apache-hive-3.1.2-bin/lib/

2、Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

版本:Hive-3.1.2

Hadoop 环境中,某个节点上执行 hive 命令时报如下错误:

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

原因:

说明:环境由四台服务器组成的,Hive 元数据保存在 NameNode 节点上的Mysql中,直接在 NameNode 节点上启动Hive没问题,但是在其它的节点上就报错。

在 Hive2.0.0 以前的版本,需要在一个Hive的主节点上启动两个服务:metastore 、hiveserver2 才可以登陆到Hive的命令行下。

hive --service metastore &
hive --service hiveserver2 &

但是在2.0.0后不用启动这两个服务也可以直接敲 hive 进入命令模式。

然后上面的报错是在 hive-site.xml 文件中加入了以下几行配置:

<property>
  <name>hive.metastore.uris</name>
  <value>thrift://master:9083</value>
</property>

但是由于 master 节点上并没有启动 metastore 服务。

解决方法:

1、如果是 Hive-2.0.0 以前的版本则需要在配置文件 hive-site.xml 中加入上面的配置,并在主节点上启动上面提到的两个服务:metastore 、hiveserver2

2、如果是 Hive-2.0.0 的版本,不用在配置文件中加上面的配置,也不用启动上两提到的两个服务,即可登陆。


 

至此,Centos7.x 基于 Hadoop 3.x 集群搭建部署 Hive 操作完毕,希望能够对您有所帮助!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值