一、利用docker-compose
见之前华为鲲鹏服务器安装docker-compose及运用
二、利用Hadoop搭建Docker大数据处理集群
-
在Cnetos7构建大数据分析集群安装Docker并创建Hadoop镜像和三节点容器三步走各配置三节点Hdfs集群、Yarn集群、Spark集群
2.1安装Docker与创建Hadoop镜像和三节点容器
2.1.1安装Dcoker
1
2
3
4
5
6
7
8
9 10 11 12 |
# 更新yum mv /etc/yum .repos.d /CentOS-Base .repo /etc/yum .repos.d /CentOS-Base .repo.backup wget http: //mirrors .aliyun.com /repo/Centos-altarch-7 .repo -O /etc/yum .repos.d /CentOS-Base .repo # 安装docker curl -fsSL https: //get .docker.com | bash -s docker --mirror Aliyun sudo systemctl start docker sudo systemctl enable docker |
在这里同样可以使用另一种方式进行备份更换yum源
mkdir -p /etc/yum.repos.d/repo_bak/ mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak/ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-7.repo
配置Docker加速器和开机启动服务
可以使用阿里云,华为云和daocloud使用方法都一样改registry-mirrors
为对应的加速地址
1
2
3
4
5
6
7
8
9
10
|
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon .json <<- 'EOF' { "registry-mirrors" : [ "***************" ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker |
2.2在Docker上创建Hadoop镜像
从Docker Hub官网仓库上获取centos镜像库
1
2
3
|
docker pull centos #查看镜像库 docker images |
生成带有SSH功能的centos的镜像文件并生成centos7-ssh镜像
为了后面配置各节点之间的SSH免密码登陆,需要在pull下的centos镜像库种安装SSH, 这里利用 Dockerfile 文件来创建镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 29 30 31 32 33 34 35 36 |
cd /usr/local
# 创建一个存放带ssh的centos镜像Dockerfile文件的目录 mkdir DockerImagesFiles /centos7 .shh
#创建带ssh的centos的Dockerfile 文件 vi Dockerfile
# Dockerfile文件内容 #基于centos镜像库创建 FROM centos MAINTAINER dys #安装ssh RUN yum install -y openssh-server sudo RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config RUN yum install -y openssh-clients
#配置root名 username RUN echo "root:Jack20" | chpasswd RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers #生成ssh password-key RUN ssh -keygen -t dsa -f /etc/ssh/ssh_host_dsa_key RUN ssh -keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
#配置sshd服务 RUN mkdir /var/run/sshd EXPOSE 22
docker images
|
生成Hadoop镜像库文件
在构建Hadoop镜像库的Dockerfile所在目录下,上传已经下载的 jdk-8u241-linux-x64.tar.gz, hadoop-2.7.3.tar.gz,Scala-2.11.8.tgz,spark-2.0.1-bin-hadoop2.7.tgz。
注意:这里要提前在Dockerfile文件配置环境变量,如果镜像库构建完成后,在容器中配置环境变量是不起作用的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 46 47 48 49 50 51 52 53 |
cd /usr/local
# 创建一个存放hadoop镜像Dockerfile文件的目录 mkdir DockerImagesFiles /hadoop
#创建带ssh的centos的Dockerfile 文件 vi Dockerfile
# Dockerfile文件内容 #基于centos7-ssh构建 FROM centos7- ssh #安装java ADD jdk-8u241-linux-x64. tar .gz /usr/local/ RUN mv /usr/local/jdk1 .8.0_241 /usr/local/jdk1 .8 #配置JAVA环境变量 ENV JAVA_HOME /usr/local/jdk1 .8 ENV PATH $JAVA_HOME /bin :$PATH #安装hadoop ADD hadoop-2.7.3. tar .gz /usr/local RUN mv /usr/local/hadoop-2 .7.3 /usr/local/hadoop #配置hadoop环境变量 ENV HADOOP_HOME /usr/local/hadoop ENV PATH $HADOOP_HOME /bin :$PATH
#安装scala 注意Spark2.0.1对于Scala的版本要求是2.11.x ADD scala-2.11.8.tgz /usr/local RUN mv /usr/local/scala-2 .11.8 /usr/local/scala2 .11.8
#配置scala环境变量 ENV SCALA_HOME /usr/local/scala ENV PATH $SCALA_HOME /bin :$PATH
#安装spark ADD spark-2.0.1-bin-hadoop2.7.tgz /usr/local RUN mv /usr/local/spark-2 .0.1-bin-hadoop2.7.tgz /usr/local/spark2 .0.1
#配置spark环境变量 ENV SPARK_HOME /usr/local/spark2 .0.1 ENV PATH $SPARK_HOME /bin :$PATH
#创建hdfs账号 RUN useradd hdfs RUN echo "hdfs:jack" | chpasswd
docker images
|
生成三节点Hadoop容器集群
首先规划一下节点的主机名称,IP地址(局域网内构建docker镜像时,自动分配192.168.10.1/16网段的IP)和端口号
1
2
3
4
5
6
7
8
9
10 11 12 13 |
#创建master容器,80808和8088,8080是用来在浏览器中访问hadoop yarn spark #WEB界面,这里分别映射到物理机的80808和8088,8080端口。
#重点注意:容器启动后,映射比较麻烦,最好在这里映射。 docker run -d -P -p 80808:80808 -p 8088:8088 -p 8080:8080 --name master -h master --add-host slave01:192.168.10.3 --add-host slave02:192.168.10.4 hadoop
#创建slave01容器,在容器host文件,添加hostname,并配置其他节点主机名称和IP地址 docker run -d -P --name slave01 -h slave01 --add-host master:192.168.10.2 --add-host slave02:192.168.10.4 hadoop
#创建slave02容器 docker run -d -P --name slave02 -h slave02 --add-host master:192.168.10.2 --add-host slave01:192.168.10.3 hadoop |
查看已创建的容器并更改hadoop和spark2.0.1目录所属用户
1
2
3
4
5
|
#查看已创建的容器 docker ps -a #更改hadoop和spark2.0.1目录所属用户【需要root用户且三个容器都要执行】 chown -R hdfs:hdfs /usr/local/hadoop chown -R hdfs:hdfs /usr/local/spark2 .0.1 |
2.2在Docker上配置三节点Hdfs集群
开启三个容器终端
1
2
3
|
docker exec -it master /bin/bash docker exec -it slave01 /bin/bash docker exec -it slave02 /bin/bash |
配置hdfs账号容器各节点间的SSH免密码登陆
分别进入master,slave01,slave02三个容器节点,执行下面命令
1
2
3
4
5
6
7
8
9
10 11 |
#切换到hdfs账号 su hdfs #生成hdfs账号的key,执行后会有多个输入提示,不用输入任何内容,全部直接回车即可 ssh -keygen #拷贝到其他节点 ssh -copy- id -i /home/hdfs/ . ssh /id_rsa -p 22 hdfs@master ssh -copy- id -i /home/hdfs/ . ssh /id_rsa -p 22 hdfs@slave01 ssh -copy- id -i /home/hdfs/ . ssh /id_rsa -p 22 hdfs@slave02 #验证是否设置成功 ssh slave01 |
配置hadoop
这里主要配置hdfs,因为我们的计算框架要用spark,所以maprreduce的不需要配置。
进入master容器的hadoop配置目录,需要配置有以下7个文件:hadoop-env.sh,slaves,core-site.xml,hdfs-site.xml,maprd-site.xml,yarn-site.xml
启动HDFS集群,验证是否搭建成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 17 18 |
#如果配置环境变量,就直接执行 hdfs namenode - format #格式化namenode start-dfs.sh #启动dfs
# 在 master上执行jps $ jps #运行结果应该包含下面的进程 1200 SecondaryNameNode 3622 Jps 988 NameNode
# 在 slave上执行jps $ jps #运行结果应该包含下面的进程 2213 Jps 1962 DataNode |
浏览器输入http://本机ip地址:80808 ,可以浏览hadoop node管理界面
2.3在Docker上配置三节点Yarn集群
上面已经配置成功,直接启动yarn集群
1
2
|
#启动yarn $ start-yarn.sh |
浏览器输入http://本机ip地址:8088/cluster 可以浏览节点;
2.4在Docker上配置三节点spark集群
配置spark
进入master容器的spark配置目录,需要配置有两个文件:spark-env.sh,slaves
启动spark集群
1
|
$ start-all.sh |
浏览Spark的Web管理页面: http://本机ip地址:8080