一、利用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