本篇基于Hadoop3.x完全分布式集群环境下搭建Hive环境
关于Hadoop3.x完全分布式集群环境教程可以参考上篇文章
这是我们目前的集群环境,分配如下:
| 192.168.56.107 | 192.168.56.108 | 192.168.56.109 | |
|---|---|---|---|
| HDFS | NameNode DataNode | SecondaryNameNode DataNode | DataNode |
| YARN | NodeManager | NodeManager | ResourceManager 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;