基于DOCKER的Hadoop+HIVE环境学习试用
假设前提:宿主机已成功安装docker,如未安装请参考《Centos 7.5安装Docker》博文安装。
对于想快速了解Hadoop+hive的同学,这篇博文值得一看,因为这里已经最小化配置好了hadoop及hive环境,并docker镜像化了,仅需要下面简单的几步就可运行起来:
Step 1: 在宿主机系统创建docker容器会用到的自定义网桥(这里为了后面步骤方便,通过以下命令创建了名为my-net的网桥)
#docker network create --subnet=172.18.0.0/16 my-net
注:也可以自定义你自己的网桥,只是注意下面命令替换成你自己创建的就OK。
Step 2: 从我的aliyun镜像仓库pull相关的镜像(这有4个镜像需要pull)
#docker pull registry.cn-hangzhou.aliyuncs.com/liyu_os/testmaster:v1
#docker pull registry.cn-hangzhou.aliyuncs.com/liyu_os/testslave1:v1
#docker pull registry.cn-hangzhou.aliyuncs.com/liyu_os/testslave2:v1
#docker pull registry.cn-hangzhou.aliyuncs.com/liyu_os/mysql:v1
注:如果运行上面命令不能获取到相应镜像,或许你需设置一下aliyun镜像加速器。设置方法,请参考《docker仓库配置及镜像、容器简单操作》这篇博文。
Step 3: 运行以下命令实例化容器,注意以相应的镜像ID代替相应命令的xxxx
#docker run-d --privileged --network my-net --ip 172.18.0.10 --hostname=testmaster --mount type=bind,source=/opt/sharefolder,target=/opt/sharefolder xxxx /usr/sbin/init
#docker run-d --privileged --network my-net --ip 172.18.0.11 --hostname=testslave1 --mount type=bind,source=/opt/sharefolder,target=/opt/sharefolder xxxx /usr/sbin/init
#docker run-d --privileged --network my-net --ip 172.18.0.12 --hostname=testslave2 --mount type=bind,source=/opt/sharefolder,target=/opt/sharefolder xxxx /usr/sbin/init
#docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --network my-net --ip 172.18.0.15 -d xxxx
注:因为Hadoop运行需要用到ssh服务,所以必须加上--privileged及/usr/sbin/init参数,但加上这2个参数实例化容器后系统会退出当前登录,再登进去依次实例化即可。(这是docker的bug,据官方说7.2及以上版本上已解决,但实际上依然存在,暂时也没找到其他合适的解决方案:(。)
Step 4: 进除mysql外的其他3个容器,运行以下命令
#source /etc/profile
Step 5: 进除mysql外的其他3个容器,编辑/etc/hosts文件,输入以下内容:
172.18.0.10 testmaster
172.18.0.11 testslave1
172.18.0.12 testslave2
Step 6: 启动hadoop
#starthadoop.sh //可用stophadoop.sh停止hadoop服务
Step 7: 进入testmaster容器,并进入hive的bin目录,运行以下命令:
#./schematool -initSchema -dbType mysql //初始化hive元数据库
#./hive //启动hive数据仓库,进入hive命令行交互窗口
至此,就已经启动了hadoop服务,可以开始hive学习。
页:
[1]