Hadoop3.x完全分布式环境下搭建Hive环境

416 阅读1分钟

本篇基于Hadoop3.x完全分布式集群环境下搭建Hive环境

关于Hadoop3.x完全分布式集群环境教程可以参考上篇文章

这是我们目前的集群环境,分配如下:

192.168.56.107192.168.56.108192.168.56.109
HDFSNameNode DataNodeSecondaryNameNode DataNodeDataNode
YARNNodeManagerNodeManagerResourceManager NodeManager

Hive只需要在NameNode节点上安装即可,因此以下操作我们仅在master节点执行

Hive环境

1. 下载Hive

注意:因为是在Hadoop环境下搭建Hive,因此需要确保Hive符合Hadoop要求的版本号

这里我使用了3.1.2版本的Hive

下载并解压Hive后先配置环境变量

# 配置环境变量
$ vi ~/.bash_profile

写入如下三行即可

export HIVE_HOME=/home/mouse/hive/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin
export HIVE_CONF_DIR=${HIVE_HOME}/conf

记得source一下使得环境变量生效

$ source ~/.bash_profile

2. 配置MySQL

我们使用MySQL作为我们的元数据存储

因此我们需要搭建MySQL环境

为了方便,我们这里使用docker,下面两行命令即可配置MySQL环境

$ docker pull mysql:5.7.34
$ docker run -it -d --name mysql_5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.34

3. 配置Hive

进入conf/目录下面

$ cd conf/
# hive-env.sh不需要修改,因为我们都配置在环境变量中了
$ cp hive-env.sh.template hive-env.sh
$ vi hive-site.xml

填写如下的配置即可

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <!--MySQL地址metastore是元数据库的名称,需要在mysql中创建相同名字的数据库-->
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
  </property>
  <!--MySQL驱动-->
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <!--MySQL用户名-->
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
  <!--MySQL密码-->
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
  </property>

  <property>
    <name>hive.server2.thrift.client.user</name>
    <value>mouse</value>
  </property>
  <property>
    <name>hive.server2.thrift.client.password</name>
    <value>123456</value>
  </property>
</configuration>

最后我们需要去MySQL官网下载MySQL驱动包

下载地址:dev.mysql.com/downloads/c…

下载好后放入到lib/目录下

$ cp mysql-connector-java-8.0.26.jar $HIVE_HOME/lib/

启动

第一次启动,我们需要执行如下命令初始化schema(只在第一次启动时执行,后续不需要执行)

$ schematool -initSchema -dbType mysql

启动Hive

$ hive

即可进入到hive-shell中

WordCount on hive

CREATE TABLE FILES (line STRING);

LOAD DATA INPATH 'docs' OVERWRITE INTO TABLE FILES;

CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
(SELECT explode(split(line, ' ')) AS word FROM FILES) w
GROUP BY word
ORDER BY word;