在docker上安裝hadoop集群

我參考了這篇博客,寫的很清楚不過還有一些漏洞:https://blog.csdn.net/qq_33530388/article/details/72811705
下面是我將一些錯誤的地方修正了镰吆,給大家看绕辖。親測可用R钩搿乾忱!失敗的可以留言D啦瘛余指!
首先線上個效果圖:

image.png

環(huán)境介紹:我的主機(jī)是win10醉途,自帶16G矾瑰,裝的虛擬機(jī)centos7,給了4G內(nèi)存隘擎。在centos7里面裝了docker殴穴,本章不介紹docker的安裝,如果想看的可以看我的其他文章

1.獲取鏡像货葬。

如果是本地使用VMware搭建的話采幌,需要準(zhǔn)備Java環(huán)境,hadoop安裝包震桶,還要配置環(huán)境變量休傍。雖然不難,但是經(jīng)常做這些工作也難免煩躁蹲姐。
使用Docker容器的話磨取,那這一切就變得簡單多了。

首先要準(zhǔn)備一個鏡像柴墩,可以使用Dockerfile構(gòu)建一個合適自己的鏡像忙厌,或者可以在共有倉庫中找一個具有hadoop環(huán)境的鏡像來使用也可以。由于我是配置的阿里云的加速器江咳,所以在阿里云的倉庫中找了一個具有hadoop環(huán)境的鏡像逢净。hadoop鏡像地址

使用命令拉到本地:

docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop

下載完成之后,通過docker images 可以查看到該鏡像:

這里寫圖片描述

2.創(chuàng)建容器歼指。

有了鏡像之后爹土,我們根據(jù)該鏡像創(chuàng)建三個容器,分別是一個Master用來作為hadoop集群的namenode东臀,剩下兩個Slave用來作為datanode着饥。

可以使用命令:

docker run -i -t --name Master -h Master  -p 50070:50070 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash

命令中的-h為該容器設(shè)置了主機(jī)名犀农,這里設(shè)置為Master惰赋,最好創(chuàng)建容器的時候就設(shè)置主機(jī)名,在容器內(nèi)部設(shè)置不生效。

–name指定了容器的名字赁濒,也是為了方便區(qū)分使用轨奄。

-p 是指定對外開放的端口50070,這是方便我們在瀏覽器上訪問hdfs拒炎。原文中也有給出如何給運行的容器開放端口映射挪拟,不過對我還是不好用

如果需要設(shè)置掛載的,可自行設(shè)置

建立好Master節(jié)點的容器之后,再分別使用兩次該命令击你,創(chuàng)建兩個Slave節(jié)點玉组。稍微改變其中的參數(shù)即可:

例如創(chuàng)建Slave1節(jié)點:

docker run -i -t --name Slave1 -h Slave1 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash

這樣集群的基本環(huán)境就準(zhǔn)備好了。


3.配置SSH丁侄。

如果是本地搭建的話惯雳,需要配置的大概分為三步:
1.配置java環(huán)境。
2.配置無秘SSH鸿摇。
3.配置hadoop環(huán)境石景。

但是下載的鏡像已經(jīng)包含了這些內(nèi)容,我們只需要簡單的配置一下就可以使用了拙吉。
在這個鏡像中潮孽,有關(guān)java和hadoop的內(nèi)容都存放在了/opt/tools目錄下。

先查看下環(huán)境變量都包含了什么:

這里寫圖片描述

從中間可以看出包含了jdk和hadoop的bin目錄筷黔,所以我們可以直接使用這兩個命令往史。

這里寫圖片描述

java環(huán)境已經(jīng)不需要我們來配置了。

接下來配置一下無秘的SSH佛舱。

首先將SSH運行起來怠堪。

/etc/init.d/ssh start

然后生成秘鑰,保存到authorized_keys中名眉。這個地方可以看一下這篇博客:ssh-keygen 的 詳解

ssh-keygen -t rsa

執(zhí)行的總體過程如下:

這里寫圖片描述

接下來在兩個Slave節(jié)點中做相同的事情粟矿,并且將每個節(jié)點生成的秘鑰互相保存在authorized_keys中。

也就是說损拢,三個節(jié)點的都是這個樣子的:

這里寫圖片描述

接下來查看一下各自節(jié)點的ip地址陌粹,但是如果直接使用熟悉的ifconfig時,就會發(fā)現(xiàn)沒有這個命令福压。那是因為鏡像本身就比較簡潔掏秩,簡潔到連這個命令都沒有。荆姆。蒙幻。這個我也是服。
可以使用ip addr查看胆筒,或者:apt-get install ifconfig net-tools,安裝相關(guān)命令邮破。

相比之下還是ip addr方便點:

這里寫圖片描述

然后修改/etc/hosts诈豌,將主機(jī)名和對應(yīng)的ip地址添加進(jìn)去,這樣做為了方便調(diào)用ssh:

這里寫圖片描述

如果在Master節(jié)點抒和,想要連接到Slave1節(jié)點矫渔,可以使用:ssh 192.168.0.3,也可以使用ssh Slave1摧莽。很明顯能感覺到使用主機(jī)名比較方便理解使用庙洼。

如果使用ssh Slave1之后沒有提示需要輸入密碼,就代表成功了(第一次的話會讓輸入yes或者no镊辕,是為了記住該地址油够,如果輸入yes之后就可以直接連接就像下面這樣):

這里寫圖片描述

4.配置hadoop。

到現(xiàn)在為止征懈,我們已經(jīng)準(zhǔn)備好了haoop搭建的所有基本工作叠聋。也是由于該Docker鏡像為我們準(zhǔn)備好了需要才會這么簡單的。

我們只需要在配置一下hadoop相關(guān)的內(nèi)容受裹。

為了方便起見碌补,我們可以直接在Master節(jié)點進(jìn)行配置,然后使用scp命令發(fā)送到各節(jié)點覆蓋原來的即可棉饶。

這里不廢話厦章,直接上代碼,至于其中的意思可以參考書籍資料照藻,或者查看這個文檔:hadoop安裝指南袜啃,這個文檔是在VMware上配置的。

hadoop-env.sh:修改有關(guān)java的環(huán)境

export JAVA_HOME=/opt/tools/jdk1.8.0_77

core-site.xml

<configuration>

  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://Master:9000</value>
  </property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/hadoop/tmp</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/hadoop/data</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/hadoop/name</value>
  </property>
</configuration>

mapred-site.xml

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

yarn-site.xml

<configuration>
 <property>
<name>yarn.resourcemanager.address</name>
 <value>Master:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>Master:8030</value> </property> <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>Master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master:8033</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>Master:8088</value>
</property>
 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
 <property>
 <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
 <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

slaves

Master
Slave1
Slave2

所以我這里datanode有3個幸缕,每個節(jié)點各一個群发,namenode只有一個,在Master上

相關(guān)目錄最好需要手動創(chuàng)建发乔,然后分發(fā)給其他節(jié)點上

mkdir /hadoop/data
mkdir /hadoop/name
mkdir /hadoop/tmp
scp -r hadoop root@Slave1:/
scp -r hadoop root@Slave2:/

然后將這些文件通過scp發(fā)送到各個Slave節(jié)點上覆蓋原來的文件:

scp core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml Slave1:/opt/tools/hadoop/etc/hadoop/

到這里為止熟妓,所有的準(zhǔn)備工作都做好了。


5.運行hadoop栏尚。

進(jìn)行格式化操作:

hadoop namenode -format

啟動集群:

使用./start-all.sh起愈,如果啟動過程中提示關(guān)于0.0.0.0地址輸入yes或no,輸入yes即可:

這里寫圖片描述

在Master上使用jps查看相關(guān)進(jìn)程是否啟動:

這里寫圖片描述

在Slave節(jié)點上使用jps查看相關(guān)進(jìn)程是否啟動:

這里寫圖片描述

使用命令查看各節(jié)點信息:hadoop dfsadmin -report

這里寫圖片描述

然后再運行一個統(tǒng)計單詞的例子:

現(xiàn)在hsfs上創(chuàng)建一個文件夾:

hadoop fs -mkdir /input

查看該文件夾:

hadoop fs -ls /
這里寫圖片描述

上傳文件到hdfs译仗,這里直接將當(dāng)前目錄的README.txt進(jìn)行上傳:

hadoop fs -put README.txt /input/

這里寫圖片描述

之后運行相關(guān)例子:

在/opt/tools/hadoop/share/hadoop/mapreduce目錄中執(zhí)行:hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output

這里寫圖片描述

注意下這里我之前已經(jīng)做過測試了抬虽,所有outout目錄已經(jīng)存在了,所以換成了output1纵菌,這個目錄不需要提前創(chuàng)建阐污,運行的時候指定一下,會自動創(chuàng)建的咱圆。

查看相關(guān)結(jié)果輸出:

這里寫圖片描述

可以使用: hadoop fs -cat /output1/part-r-00000 查看一下統(tǒng)計結(jié)果:

這里寫圖片描述

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笛辟,一起剝皮案震驚了整個濱河市功氨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌隘膘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杠览,死亡現(xiàn)場離奇詭異弯菊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)踱阿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門管钳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人软舌,你說我怎么就攤上這事才漆。” “怎么了佛点?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵醇滥,是天一觀的道長。 經(jīng)常有香客問我超营,道長鸳玩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任演闭,我火速辦了婚禮不跟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘米碰。我一直安慰自己窝革,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布吕座。 她就那樣靜靜地躺著虐译,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吴趴。 梳的紋絲不亂的頭發(fā)上菱蔬,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音史侣,去河邊找鬼拴泌。 笑死,一個胖子當(dāng)著我的面吹牛惊橱,可吹牛的內(nèi)容都是我干的蚪腐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼税朴,長吁一口氣:“原來是場噩夢啊……” “哼回季!你這毒婦竟也來了家制?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤泡一,失蹤者是張志新(化名)和其女友劉穎颤殴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鼻忠,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡涵但,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了帖蔓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矮瘟。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖塑娇,靈堂內(nèi)的尸體忽然破棺而出澈侠,到底是詐尸還是另有隱情,我是刑警寧澤埋酬,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布哨啃,位于F島的核電站,受9級特大地震影響写妥,放射性物質(zhì)發(fā)生泄漏棘催。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一耳标、第九天 我趴在偏房一處隱蔽的房頂上張望醇坝。 院中可真熱鬧,春花似錦次坡、人聲如沸呼猪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宋距。三九已至,卻和暖如春症脂,著一層夾襖步出監(jiān)牢的瞬間谚赎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工诱篷, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留壶唤,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓棕所,卻偏偏與公主長得像闸盔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子琳省,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容