基于Docker处理大数据
一、利用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
- 点赞
- 收藏
- 关注作者
评论(0)