基於Docker處理大數據


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

CMD [     "/usr/sbin/sshd"          "-D"     ]

 

#生成鏡像

docker build -t=     "centos7-ssh"      .       

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    
  

RUN yum      install      -y      which      sudo

#生成鏡像 

docker build -t=     "hadoop"      .      

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 可以瀏覽節點;

1.png

 

 

2.4在Docker上配置三節點spark集群

配置spark

進入master容器的spark配置目錄,需要配置有兩個文件:spark-env.sh,slaves

啟動spark集群

1
$ start-all.sh    

瀏覽Spark的Web管理頁面: http://本機ip地址:8080 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM