摘要: kiwenlau/hadoop-cluster-docker是去年參加Docker巨好玩比賽開(kāi)發(fā)的,得了二等獎(jiǎng)并贏了一塊蘋(píng)果手表,目前這個(gè)項(xiàng)目已經(jīng)在GitHub上獲得了236個(gè)Star,DockerHub的鏡像下載次數(shù)2000+??傊?xiàng)目還算很受歡迎吧,這篇博客將介紹項(xiàng)目的升級(jí)版。
一. 項(xiàng)目介紹
將Hadoop打包到Docker鏡像中,就可以快速地在單個(gè)機(jī)器上搭建Hadoop集群,這樣可以方便新手測(cè)試和學(xué)習(xí)。
如下圖所示,Hadoop的master和slave分別運(yùn)行在不同的Docker容器中,其中hadoop-master容器中運(yùn)行NameNode和ResourceManager,hadoop-slave容器中運(yùn)行DataNode和NodeManager。NameNode和DataNode是Hadoop分布式文件系統(tǒng)HDFS的組件,負(fù)責(zé)儲(chǔ)存輸入以及輸出數(shù)據(jù),而ResourceManager和NodeManager是Hadoop集群資源管理系統(tǒng)YARN的組件,負(fù)責(zé)CPU和內(nèi)存資源的調(diào)度。

之前的版本使用serf/dnsmasq為Hadoop集群提供DNS服務(wù),由于Docker網(wǎng)絡(luò)功能更新,現(xiàn)在并不需要了。更新的版本中,使用以下命令為Hadoop集群創(chuàng)建單獨(dú)的網(wǎng)絡(luò):
sudo docker network create --driver=bridge hadoop
然后在運(yùn)行Hadoop容器時(shí),使用"--net=hadoop"選項(xiàng),這時(shí)所有容器將運(yùn)行在hadoop網(wǎng)絡(luò)中,它們可以通過(guò)容器名稱進(jìn)行通信。
項(xiàng)目更新要點(diǎn):
- 去除serf/dnsmasq
- 合并Master和Slave鏡像
- 使用kiwenlau/compile-hadoop項(xiàng)目編譯的Hadoo進(jìn)行安裝
- 優(yōu)化Hadoop配置
二. 3節(jié)點(diǎn)Hadoop集群搭建步驟
1. 下載Docker鏡像
sudo docker pull kiwenlau/hadoop:1.0
2. 下載GitHub倉(cāng)庫(kù)
git clone https://github.com/kiwenlau/hadoop-cluster-docker
3. 創(chuàng)建Hadoop網(wǎng)絡(luò)
sudo docker network create --driver=bridge hadoop
4. 運(yùn)行Docker容器
cd hadoop-cluster-docker
./start-container.sh
運(yùn)行結(jié)果
start hadoop-master container...
start hadoop-slave1 container...
start hadoop-slave2 container...
root@hadoop-master:~#
- 啟動(dòng)了3個(gè)容器,1個(gè)master, 2個(gè)slave
- 運(yùn)行后就進(jìn)入了hadoop-master容器的/root目錄
5. 啟動(dòng)hadoop
./start-hadoop.sh
6. 運(yùn)行wordcount
./run-wordcount.sh
運(yùn)行結(jié)果
input file1.txt:
Hello Hadoop
input file2.txt:
Hello Docker
wordcount output:
Docker 1
Hadoop 1
Hello 2
Hadoop網(wǎng)頁(yè)管理地址:
- NameNode: http://192.168.59.1:50070/
- ResourceManager: http://192.168.59.1:8088/
192.168.59.1為運(yùn)行容器的主機(jī)的IP。
三. N節(jié)點(diǎn)Hadoop集群搭建步驟
1. 準(zhǔn)備
- 參考第二部分1~3:下載Docker鏡像,下載GitHub倉(cāng)庫(kù),以及創(chuàng)建Hadoop網(wǎng)絡(luò)
2. 重新構(gòu)建Docker鏡像
./resize-cluster.sh 5
- 可以指定任意N(N>1)
3. 啟動(dòng)Docker容器
./start-container.sh 5
- 與第2步中的N保持一致。
4. 運(yùn)行Hadoop
- 參考第二部分5~6:?jiǎn)?dòng)Hadoop,并運(yùn)行wordcount。
參考
版權(quán)聲明
轉(zhuǎn)載時(shí)請(qǐng)注明作者KiwenLau以及本文地址:
http://kiwenlau.com/2016/06/12/160612-hadoop-cluster-docker-update/