Ubuntu16.04 Docker安装Hive(使用mysql作为元数据库),以及beeline连接

版权声明:本文为博主原创文章,如若转载请注明出处 https://blog.csdn.net/tonydz0523/article/details/82785418

本篇要做的事:基于上一篇使用docker搭建的spark集群安装一个hive。

Hive下载:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/stable-2/apache-hive-2.3.3-bin.tar.gz

Hive镜像创建

写一个dockerfile来安装hive:

# 引用镜像
FROM spark:v1
#设置维护人员
MAINTAINER ffzs

# 复制文件 并解压
ADD apache-hive-2.3.3-bin.tar.gz /usr/lib

# 环境设置
ENV HIVE_HOME=/usr/lib/apache-hive-2.3.3-bin
ENV PATH=$PATH:$HIVE_HOME/bin

创建一个叫hive:v1的镜像
docker build -t hive:v1 .

此时,我们运行hive:v1镜像,对hive进行配置:

docker run -it hive:v1

创建hive-site.xml:

vim $HIVE_HOME/conf/hive-site.xml
# 添加内容如下
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://hadoop5:3306/hivedb?createDatabaseIfNotExist=true&amp;useSSL=false</value>
                <description>JDBC connect string for a JDBC metastore</description>
                <!-- 如果 mysql 和 hive 在同一个服务器节点,那么请更改 hadoop05 为 localhost -->
        </property>
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
                <description>Driver class name for a JDBC metastore</description>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
                <description>username to use against metastore database</description>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>root</value>
        <description>password to use against metastore database</description>
        </property>
</configuration>

修改hadoop的core-site.xml文件,以使beeline可以访问hive:

vim $HADOOP_CONFIG_HOME/core-site.xml
#添加内容如下
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

要连接msyql需要在hive中的lib文件加中添加驱动:

apt install libmysql-java
find / -name mysql-connector-java*
#我的在这/usr/share/java/mysql-connector-java-5.1.38.jar
#复制
cp /usr/share/java/mysql-connector-java-5.1.38.jar $HIVE_HOME/lib/

配置完成 保存:

docker commit `docker ps -q` hive:v1
关闭container:

docker stop `docker ps -aq`
docker rm  `docker ps -aq`

安装mysql镜像

我们要使用mysql作为元数据库,需要安装mysql,但是在docker上安装mysql保存的密码总是无法保存,操作总是出现问题,于是我选着直接pull 一个官方镜像,外接mysql,这里选用mysql5.7:
docker pull mysql:5.7

运行

docker run -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

保存一下:
docker commit `docker ps -q` mysql:v1
关闭同上。。

开启hadoop集群

改写docker的开启shell:
run-docker-hive.sh

#!/bin/bash

docker rm -f hadoop1 >/dev/null 2>&1
echo "start hadoop1 container..."
docker run -itd \
			--network hadoop \
			--name hadoop1 \
			--ip 172.19.0.2 \
			--hostname hadoop1 \
			hive:v1 >/dev/null 2>&1
docker exec hadoop1 bash -c "echo 1 > /home/hadoop/data/zkdata/myid"



N=${1:-5}
i=2
while [ $i -lt $N ]
do
        docker rm -f hadoop$i >/dev/null 2>&1
        echo "start hadoop$i container..."
        docker run -itd \
				--network hadoop \
				--name hadoop$i \
				--ip 172.19.0.$(( $i + 1 )) \
				--hostname hadoop$i \
				spark:v1 >/dev/null 2>&1
	docker exec hadoop$i bash -c "echo $i > /home/hadoop/data/zkdata/myid"

        i=$(( $i + 1 ))
done

docker rm -f hadoop5 >/dev/null 2>&1
echo "start hadoop5 container..."
docker run -d \
		--network hadoop \
		--name hadoop5 \
		--ip 172.19.0.6 \
		--hostname hadoop5 \
		mysql:v1 >/dev/null 2>&1

如果你的172.19.0.0ip段被其他network占用:
删除network
docker network rm network名
创建hadoop network 指定 172.19.0.0 ip:
docker network create --driver=bridge --subnet=172.19.0.0/16 hadoop

写一个hive-start.sh

#! /bin/bash

sh run-docker-hive.sh
sh zk-start.sh
sh jnn-start.sh
sh hadoop-start.sh

开启hive:
sh hive-start.sh
开启hadoop1的bash:
docker exec -it hadoop1 bash

初始化元数据库:

schematool -dbType mysql -initSchema
在这里插入图片描述
出现红框内容说明成功…

启动hive

此时运行hive --service cli或hive效果一样:
hive --service cli
在这里插入图片描述

beeline连接hive

先启动 hiveserver2 服务:
nohup hiveserver2 1>/home/hadoop/hiveserver.log 2>/home/hadoop/hiveserver.err &
在这里插入图片描述
出现 RunJar说明开启成功。。
启动beeline连接:
beeline -u jdbc:hive2://hadoop1:10000 -n root

在这里插入图片描述

出现上面的内容说明连接成功。。

猜你喜欢

转载自blog.csdn.net/tonydz0523/article/details/82785418