基于docker搭建的hadoop集群(省去配置hadoop镜像,直接从远程仓库pull镜像)

1.安装Docker

后面的docker上搭建hadoop集群参考了:基于Docker搭建Hadoop集群之升级版
所以这里主要讲下怎么安装Docker以及一些注意事项

更新yum源

#yum -y update

安装Docker

#yum install docker -y

启动Docker

#systemctl start docker.service

安装杂七杂八的工具

#yum install iproute ftp bind-utils net-tools wget -y

配置镜像加速器(必须要配置镜像加速器,不然后面从镜像仓库pull镜像的时候会很慢)

#sudo mkdir -p /etc/docker
#sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://hvmf8r55.mirror.aliyuncs.com”]
}
EOF
#sudo systemctl daemon-reload
#sudo systemctl restart docker

然后通过如下命令查看 daemon.json 是否已经生效了

#tail /etc/docker/daemon.json

假如生效了就会看到

基于docker搭建的hadoop集群(省去配置hadoop镜像,直接从远程仓库pull镜像)

2.利用Docker搭建hadoop集群

这里先讲下我对这个Docker的理解,Docker里面可以放若干个容器,这些容器其实就是一个linux操作系统,称之为“容器”,然后容器怎么来的,就要通过镜像实例化出来,也就是说,通过镜像来实例化出一个容器,所以,镜像相当于Java里面的类,然后容器相当于类的实例,是不是很通俗易懂呢。下面来张图

基于docker搭建的hadoop集群(省去配置hadoop镜像,直接从远程仓库pull镜像)

图片来自https://www.cnblogs.com/baizhanshi/p/9655102.html

以下是3节点Hadoop集群搭建步骤

  1. 从远程仓库拉取Docker镜像

#sudo docker pull kiwenlau/hadoop:1.0

  1. 下载GitHub仓库(要先安装git命令,输入yum -y install git就可以了)

#git clone https://github.com/kiwenlau/hadoop-cluster-docker

  1. 创建Hadoop网络

#sudo docker network create --driver=bridge hadoop

  1. 运行Docker容器

#cd hadoop-cluster-docker
#./start-container.sh

注意:以后每次重启后,要先启动Docker程序,然后再输入命令“docker start xxx ”,而不是输入“./start-container.sh”,如果输入“./start-container.sh”的话会导致之前的容器被删除,我是进去看这个start-container.sh脚本文件才发现的

运行结果

start hadoop-master container…
start hadoop-slave1 container…
start hadoop-slave2 container…
[email protected]:~#

启动了3个容器,1个master, 2个slave
运行后就进入了hadoop-master容器的/root目录

  1. 启动hadoop

#./start-hadoop.sh

Hadoop网页管理地址:

NameNode: http://x.x.x.x:50070/
ResourceManager: http://x.x.x.x:8088/

其中x.x.x.x为运行容器的主机的IP,注意,是安装并运行Docker的那台机器。

到这里大功告成,可以去跑下hadoop提供的例子,计算PI的程序:

#hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 10 10

当然你也可以退出当前这个master结点的容器

#exit

至于怎么再重新进入,去百度下Docker容器管理命令就可以了

3.N节点Hadoop集群搭建步骤

很简单

准备

参考第二部分1~3:下载Docker镜像,下载GitHub仓库,以及创建Hadoop网络

重新构建Docker镜像

#./resize-cluster.sh 5
可以指定任意N(N>1)

启动Docker容器

#./start-container.sh 5
与第2步中的N保持一致。

运行Hadoop

参考第二部分5~6:启动Hadoop,并运行你要运行的hadoop程序。