摘要: kiwenlau/hadoop-cluster-docker是去年參加Docker巨好玩比賽開發(fā)的,得了二等獎(jiǎ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集群芬膝,這樣可以方便新手測試和學(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ò)中抡秆,它們可以通過容器名稱進(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倉庫
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)頁管理地址:
- 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倉庫,以及創(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:啟動(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/