0


hadoop3.2.1+hive3.1.2-docker安装

Hadoop

1.拉取镜像

docker pull hadoop_hive:3

2.运行容器

建立hadoop用的内部网络(此步出错,若与其它网段冲突,可省略)
#指定固定ip号段

docker network create --driver=bridge --subnet=172.17.0.1/16  hadoop

建立Master容器,映射端口
10000端口为hiveserver2端口,后面本地客户端要通过beeline连接hive使用,有其他组件要安装的话可以提前把端口都映射出来

docker run -it-h Master --name Master -p9870:9870 -p8088:8088 -p10000:10000 hadoop_hive:3 bash

若创建了网段则可指定网段运行

docker run -it--network hadoop -h Slave2 --name Slave2  hadoop_hive:3 bash

创建slave1

docker run -it-h Slave1 --name Slave1 hadoop_hive:3 bashvim /etc/hosts

172.17.0.4 Slave1

创建slave2

docker run -it-h Slave2 --name Slave2 hadoop_hive:3 bashvim /etc/hosts

172.17.0.5 Slave2
在这里插入图片描述

docker ps -a 查看容器状态
在这里插入图片描述

若为exited,则全部启动
docker start Master
在这里插入图片描述

三台机器,都修改host文件

dockerexec-it Master /bin/bash
vim /etc/hosts

172.17.0.2 Master
172.17.0.4 Slave1
172.17.0.5 Slave2
在这里插入图片描述

3.启动hadoop

虽然容器里面已经把hadoop路径配置在系统变量里面,但每次进入需要运行

source /etc/profile

才能生效使用

vi ~/.bashrc

添加 source /etc/profile

然后进入master,启动hadoop,先格式化hdfs
#进入Master容器

dockerexec-it Master bash

#进入后格式化hdfs

root@Master:/# hadoop namenode -format

启动全部,包含hdfs和yarn

cd /usr/local/hadoop/sbin
root@Master:/usr/local/hadoop/sbin# ./start-all.sh

可以看到服务起来了,本地范围宿主机ip的8088及9870端口可以看到监控信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看分布式文件系统状态

root@Master:/usr/local/hadoop/sbin# hdfs dfsadmin -report

在这里插入图片描述

hive

Hive下载后上传到容器目录下:
下载地址:https://mirror-hk.koddos.net/apache/hive/hive-3.1.2/

拷贝安装包进Master容器

dockercp apache-hive-3.1.2-bin.tar.gz Master:/usr/local

进入容器

dockerexec-it Master bashcd /usr/local/

解压安装包

tar xvf apache-hive-3.1.2-bin.tar.gz

2.设置密码(可选设)
退出容器

exit

下载CustomPasswdAuthenticator.jar
或百度一下自己打个包也完美。
复制密码包到容器hivelib下:

dockercp /root/CustomPasswdAuthenticator.jar Master:/usr/local/apache-hive-3.1.2-bin/lib

3.修改配置文件

dockerexec-it Master bashcd /usr/local/apache-hive-3.1.2-bin/conf
root@Master:/usr/local/apache-hive-3.1.2-bin/conf# cp hive-default.xml.template hive-site.xml
root@Master:/usr/local/apache-hive-3.1.2-bin/conf# vim hive-site.xml

在最前面添加下面配置:

<property><name>system:java.io.tmpdir</name><value>/tmp/hive/java</value></property><property><name>system:user.name</name><value>${user.name}</value></property>

点击“/”搜索

hive.server2.authentication

缺省为NONE。此处改为CUSTOM

在下方添加property

<property><name>hive.server2.custom.authentication.class</name><value>org.apache.hadoop.hive.contrib.auth.CustomPasswdAuthenticator</value></property>

再添加用户密码 用户名root,密码root如果有多个就写多个property

<property><name>hive.jdbc_passwd.auth.用户名</name><value>密码</value><description/></property>

Wq保存退出。

三、配置Hive相关环境变量

vim /etc/profile

#文本最后添加

exportHIVE_HOME=/usr/local/apache-hive-3.1.2-bin
exportPATH=$PATH:$HIVE_HOME/bin

配置后执行

source /etc/profile

生效

4.配置mysql作为元数据库
1.在本地的mysql数据库建立个hive库

容器ip地址类似window的分配机制,如果不设置固定ip容器重启后会自动分配ip,因此数据库相关的容器建议设置为固定ip。

2.回到Master容器,修改关联数据库的配置

dockerexec-it Master bashvim /usr/local/apache-hive-3.1.2-bin/conf/hive-site.xml

搜索关键词修改数据库url、驱动、用户名,url根据上面建容器时候地址。
#注意hive配置文件里面使用&作为分隔,高版本myssql需要SSL验证,在这里设置关闭

<property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>root</value></property><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://192.168.0.103:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>hive.metastore.schema.verification</name><value>false</value><property>

搜索去除特殊字符

&#8;

wq保存退出。

mysql驱动上传到hive的lib下

exit

退出到宿主机

dockercp /root/mysql-connector-java-8.0.22.jar Master:/usr/local/apache-hive-3.1.2-bin/lib

然后需要对hive的lib文件夹下的部分文件做修改,不然初始化数据库的时候会报错。

dockerexec-it Master bash

slf4j这个包hadoop及hive两边只能有一个,这里删掉hive这边

cd /usr/local/apache-hive-3.1.2-bin/lib
root@Master:/usr/local/apache-hive-3.1.2-bin/lib# rm log4j-slf4j-impl-2.10.0.jar

guava这个包hadoop及hive两边只删掉版本低的那个,把版本高的复制过去,这里删掉hive,复制hadoop的过去

cd /usr/local/hadoop/share/hadoop/common/lib
root@Master:/usr/local/hadoop/share/hadoop/common/lib# cp guava-27.0-jre.jar /usr/local/apache-hive-3.1.2-bin/lib
root@Master:/usr/local/hadoop/share/hadoop/common/lib# rm /usr/local/apache-hive-3.1.2-bin/lib/guava-19.0.jar

5.初始化元数据库

cd /usr/local/apache-hive-3.1.2-bin/bin
root@Master:/usr/local/apache-hive-3.1.2-bin/bin# schematool -initSchema -dbType mysql

成功后提示:

Initialization script completed
schemaTool completed

6.验证
先创建一个数据文件放到/usr/local下

cd /usr/local
vim test.txt

内容:

1,jack
2,hel
3,nack

进入hive交互界面

root@Master:/usr/local# hive

在这里插入图片描述

退出命令行

exit;

启动Hiveserver2

1.修改hadoop的一些权限配置

root@Master:/usr/local# vim /usr/local/hadoop/etc/hadoop/core-site.xml

加入以下配置

<property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>

注意里面的root为访问的代理用户名,看自己使用什么用户访问的hive。不是全为root用户。
保存退出。

2.重启hdfs

cd /usr/local/hadoop/sbin
root@Master:/usr/local/hadoop/sbin# ./stop-dfs.sh
root@Master:/usr/local/hadoop/sbin# ./start-dfs.sh

3.后台启动hiveserver2

cd /usr/local/hadoop/sbin
root@Master:/usr/local/hadoop/sbin#  nohup hiveserver2 >/dev/null 2>/dev/null &

在这里插入图片描述

4.验证

查看10000端口运行是否正常,beeline命令,!connect连接,结果查询是否正常

netstat-ntulp|grep10000

在这里插入图片描述

root@Master:/usr/local/hadoop/sbin# beeline
beeline>!connect jdbc:hive2://localhost:10000/default

在这里插入图片描述
在这里插入图片描述

!exit

退出

在这里插入图片描述

标签: docker hadoop 大数据

本文转载自: https://blog.csdn.net/qq_44467720/article/details/130485549
版权归原作者 悢七 所有, 如有侵权,请联系我们删除。

“hadoop3.2.1+hive3.1.2-docker安装”的评论:

还没有评论