基于Docker搭建Hadoop集群之升級版

摘要: kiwenlau/hadoop-cluster-docker是去年參加Docker巨好玩比賽開發的,得了二等獎并贏了一塊蘋果手表,目前這個項目已經在GitHub上獲得了236個Star,DockerHub的鏡像下載次數2000+。總之,項目還算很受歡迎吧,這篇博客將介紹項目的升級版。

一. 項目介紹

Hadoop打包到Docker鏡像中,就可以快速地在單個機器上搭建Hadoop集群,這樣可以方便新手測試和學習。

如下圖所示,Hadoop的master和slave分別運行在不同的Docker容器中,其中hadoop-master容器中運行NameNode和ResourceManager,hadoop-slave容器中運行DataNode和NodeManager。NameNode和DataNode是Hadoop分布式文件系統HDFS的組件,負責儲存輸入以及輸出數據,而ResourceManager和NodeManager是Hadoop集群資源管理系統YARN的組件,負責CPU和內存資源的調度。

hadoop-cluster-docker.png

之前的版本使用serf/dnsmasq為Hadoop集群提供DNS服務,由于Docker網絡功能更新,現在并不需要了。更新的版本中,使用以下命令為Hadoop集群創建單獨的網絡:

sudo docker network create --driver=bridge hadoop

然后在運行Hadoop容器時,使用"--net=hadoop"選項,這時所有容器將運行在hadoop網絡中,它們可以通過容器名稱進行通信。

項目更新要點:

  • 去除serf/dnsmasq
  • 合并Master和Slave鏡像
  • 使用kiwenlau/compile-hadoop項目編譯的Hadoo進行安裝
  • 優化Hadoop配置

二. 3節點Hadoop集群搭建步驟

1. 下載Docker鏡像
sudo docker pull kiwenlau/hadoop:1.0
2. 下載GitHub倉庫
git clone https://github.com/kiwenlau/hadoop-cluster-docker
3. 創建Hadoop網絡
sudo docker network create --driver=bridge hadoop
4. 運行Docker容器
cd hadoop-cluster-docker
./start-container.sh

運行結果

start hadoop-master container...
start hadoop-slave1 container...
start hadoop-slave2 container...
root@hadoop-master:~# 
  • 啟動了3個容器,1個master, 2個slave
  • 運行后就進入了hadoop-master容器的/root目錄
5. 啟動hadoop
./start-hadoop.sh
6. 運行wordcount
./run-wordcount.sh

運行結果

input file1.txt:
Hello Hadoop
input file2.txt:
Hello Docker
wordcount output:
Docker  1
Hadoop  1
Hello   2

Hadoop網頁管理地址:

192.168.59.1為運行容器的主機的IP。

三. N節點Hadoop集群搭建步驟

1. 準備
  • 參考第二部分1~3:下載Docker鏡像,下載GitHub倉庫,以及創建Hadoop網絡
2. 重新構建Docker鏡像
./resize-cluster.sh 5
  • 可以指定任意N(N>1)
3. 啟動Docker容器
./start-container.sh 5
  • 與第2步中的N保持一致。
4. 運行Hadoop
  • 參考第二部分5~6:啟動Hadoop,并運行wordcount。

參考

  1. 基于Docker搭建多節點Hadoop集群
  2. How to Install Hadoop on Ubuntu 13.10

版權聲明
轉載時請注明作者KiwenLau以及本文地址:
http://kiwenlau.com/2016/06/12/160612-hadoop-cluster-docker-update/


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容