參考說明:
1缘滥、基于Docker的Hadoop完全分布式安裝
——使用docker拉取官方Ubuntu鏡像蟹演,將單機(jī)安裝好hadoop愤诱,然后做成image,再跑多個(gè)容器做集群丐膝。但有人建議不要把本地運(yùn)行的容器轉(zhuǎn)成鏡像量愧!
2、(1)使用docker安裝分布式hadoop(阿里hadoop鏡像)
——使用阿里hadoop鏡像創(chuàng)建hadoop容器帅矗,分別創(chuàng)建三個(gè)節(jié)點(diǎn)master侠畔、slave1、slave2损晤。容器內(nèi)都是只有hadoop軟件還沒有配置软棺。通過docker exec -it master bash
分別進(jìn)入三個(gè)節(jié)點(diǎn)進(jìn)行配置:
1)查看jdk:java –version
2)配置ssh生成秘鑰:a.啟動ssh/etc/init.d/ssh start
;b.生成秘鑰ssh-keygen -t rsa
3)分別進(jìn)入每個(gè)節(jié)點(diǎn),將其他節(jié)點(diǎn)的公鑰也都復(fù)制到authorized_keys尤勋,容器中的文件復(fù)制到centos本地喘落,在本地對其進(jìn)行整合,再將其傳回容器
4)分別為每個(gè)節(jié)點(diǎn)配置ip地址(ip addr
查看ip地址最冰,vi /etc/hosts
配置)
5)配置hadoop:a.配置hadoop-env.sh瘦棋,配置jdk;b.配置core-site.xml暖哨,配置hdfs的地址和端口號赌朋;c.配置hdfs-site.xml ,配置hdfs備份數(shù)量篇裁,配置namenode和datanode的數(shù)據(jù)路徑沛慢;d.配置 mapred-site.xml,指定MapReduce運(yùn)行在yarn上,配置JobTracker的地址和端口达布;e.配置yarn-site.xml团甲,配置hdfs備份數(shù)量;f.步驟a-e在master上配置完后黍聂,將core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml 發(fā)送到slave1 和slave2節(jié)點(diǎn)
6)運(yùn)行hadoop:a.在master節(jié)點(diǎn)的/etc/hadoop/slaves配置slaves躺苦;b.在master上格式化namenode身腻;c.在master上啟動集群;d.jps 查看進(jìn)程匹厘;e.分別進(jìn)入slave1查看進(jìn)程
(2)docker安裝分布式hadoop
——再整理sequenceiq/hadoop-docker創(chuàng)建分布式嘀趟。與上面思路一樣(同一人所寫),只是使用的鏡像不一樣愈诚。
3她按、sequenceiq/hadoop-docker
——docker hub中的高贊單節(jié)點(diǎn)hadoop鏡像(針對其有網(wǎng)友作出國內(nèi)使用的幾點(diǎn)更改:適合國內(nèi)使用的修改,我直接使用國外的無恙)
運(yùn)行指令如下:
docker pull sequenceiq/hadoop-docker:2.7.0
docker run -it sequenceiq/hadoop-docker:2.7.0 /etc/bootstrap.sh -bash
cd $HADOOP_PREFIX
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep input output 'dfs[a-z.]+'
bin/hdfs dfs -cat output/*
改進(jìn):在docker使用hadoop提供的web管理系統(tǒng)界面扰路,要將容器端口映射至宿主機(jī)
sudo docker run --name myhadoop -p 50070:50070 -p 8088:8088 -p 50075:50075 -it sequenceiq/hadoop-docker /etc/bootstrap.sh -bash
報(bào)錯如下:
systemctl restart docker
再次重啟運(yùn)行鏡像后汗唱,瀏覽器中
宿主機(jī)IP:端口
(50070-Hadoop Namenode UI端口;50075- Hadoop Datanode UI端口丈攒;8088- Yarn任務(wù)監(jiān)控端口)
4哩罪、基于Docker快速搭建多節(jié)點(diǎn)Hadoop集群
——自設(shè)計(jì)kiwenlau/hadoop:1.0鏡像,關(guān)于此鏡像的說明:
參考alvinhenrick/hadoop-mutinode項(xiàng)目巡验,但優(yōu)化了鏡像大小际插、構(gòu)造時(shí)間、鏡像層數(shù)显设,默認(rèn)啟動3個(gè)節(jié)點(diǎn)的Hadoop集群框弛,支持任意節(jié)點(diǎn)數(shù)的Hadoop集群,基于Ubuntu捕捂。github地址: kiwenlau/hadoop-cluster-docker
鏡像名稱 | 構(gòu)建時(shí)間 | 鏡像層數(shù) | 鏡像大小 |
---|---|---|---|
kiwenlau/serf-dnsmasq | 509.46s | 8 | 206.6 MB |
kiwenlau/hadoop-base | 400.29s | 7 | 775.4 MB |
kiwenlau/hadoop-master | 5.41s | 9 | 775.4 MB |
kiwenlau/hadoop-slave | 2.41s | 8 | 775.4 MB |
鏡像名稱 | 鏡像功能 |
---|---|
kiwenlau/serf-dnsmasq | ①基于ubuntu:15.04 (選它是因?yàn)樗钚∩悖皇且驗(yàn)樗钚拢诎惭bserf: serf是一個(gè)分布式的機(jī)器節(jié)點(diǎn)管理工具。它可以動態(tài)地發(fā)現(xiàn)所有Hadoop集群節(jié)點(diǎn)指攒。③安裝dnsmasq: dnsmasq作為輕量級的DNS服務(wù)器慷妙。它可以為Hadoop集群提供域名解析服務(wù)。 |
kiwenlau/hadoop-base | ①基于serf-dnsmasq鏡像 ②安裝JDK(OpenJDK)③安裝openssh-server允悦,配置無密碼SSH ④安裝vim:介樣就可以愉快地在容器中敲代碼了⑤安裝Hadoop 2.3.0: 安裝編譯過的Hadoop |
kiwenlau/hadoop-master | ①基于hadoop-base鏡像②配置hadoop的master節(jié)點(diǎn)③格式化namenode |
kiwenlau/hadoop-slave | ①基于hadoop-base鏡像②配置hadoop的slave節(jié)點(diǎn) |
運(yùn)行指令如下:
sudo docker pull kiwenlau/hadoop:1.0
git clone https://github.com/kiwenlau/hadoop-cluster-docker #克隆配置腳本
sudo docker network create --driver=bridge hadoop
#創(chuàng)建網(wǎng)橋——由于Hadoop的master節(jié)點(diǎn)需要與slave節(jié)點(diǎn)通信膝擂,需要在各個(gè)主機(jī)節(jié)點(diǎn)
#配置節(jié)點(diǎn)IP,為了不用每次啟動都因?yàn)镮P改變了而重新配置隙弛,在此配置一個(gè)Hadoop
#專用的網(wǎng)橋架馋,配置之后各個(gè)容器的IP地址就能固定下來
cd hadoop-cluster-docker
sudo ./start-container.sh
此鏡像有博主進(jìn)行使用:Docker搭建Hadoop環(huán)境