HDFS機(jī)架感知功能原理(rack awareness)

HDFS NameNode對(duì)文件塊復(fù)制相關(guān)所有事物負(fù)責(zé),它周期性接受來(lái)自于DataNode的HeartBeat和BlockReport信息嵌赠,HDFS文件塊副本的放置對(duì)于系統(tǒng)整體的可靠性和性能有關(guān)鍵性影響耘拇。
一個(gè)簡(jiǎn)單但非優(yōu)化的副本放置策略是,把副本分別放在不同機(jī)架,甚至不同IDC丢间。這樣可以防止整個(gè)機(jī)架、甚至整個(gè)IDC崩潰帶來(lái)的錯(cuò)誤驹针,但是這樣文件寫(xiě)必須在多個(gè)機(jī)架之間烘挫、甚至IDC之間傳輸,增加了副本寫(xiě)的代價(jià)柬甥。
在缺省配置下副本數(shù)是3個(gè)饮六,通常的策略是:第一個(gè)副本放在和Client相同機(jī)架的Node里(如果Client不在集群范圍,第一個(gè)Node是隨機(jī)選取不太滿或者不太忙的Node)苛蒲;第二個(gè)副本放在與第一個(gè)Node不同的機(jī)架中的Node卤橄;第三個(gè)副本放在與第二個(gè)Node所在機(jī)架里不同的Node。
Hadoop的副本放置策略在可靠性(副本在不同機(jī)架)和帶寬(只需跨越一個(gè)機(jī)架)中做了一個(gè)很好的平衡臂外。
但是狞膘,HDFS如何知道各個(gè)DataNode的網(wǎng)絡(luò)拓?fù)淝闆r呢腺律?它的機(jī)架感知功能需要 topology.script.file.name 屬性定義的可執(zhí)行文件(或者腳本)來(lái)實(shí)現(xiàn)戳护,文件提供了NodeIP對(duì)應(yīng)RackID的翻譯秸应。如果 topology.script.file.name 沒(méi)有設(shè)定,則每個(gè)IP都會(huì)翻譯成/default-rack蔫浆。

默認(rèn)情況下殖属,Hadoop機(jī)架感知是沒(méi)有啟用的,需要在NameNode機(jī)器的hadoop-site.xml里配置一個(gè)選項(xiàng)克懊,例如:

<property>  
    <name>topology.script.file.name</name>
    <value>/path/to/script</value>
</property>

這個(gè)配置選項(xiàng)的value指定為一個(gè)可執(zhí)行程序忱辅,通常為一個(gè)腳本七蜘,該腳本接受一個(gè)參數(shù),輸出一個(gè)值墙懂。接受的參數(shù)通常為datanode機(jī)器的ip地址橡卤,而輸出的值通常為該ip地址對(duì)應(yīng)的datanode所在的rackID,例如”/rack1”损搬。Namenode啟動(dòng)時(shí)碧库,會(huì)判斷該配置選項(xiàng)是否為空,如果非空巧勤,則表示已經(jīng)啟用機(jī)架感知的配置嵌灰,此時(shí)namenode會(huì)根據(jù)配置尋找該腳本,并在接收到每一個(gè)datanode的heartbeat時(shí)颅悉,將該datanode的ip地址作為參數(shù)傳給該腳本運(yùn)行沽瞭,并將得到的輸出作為該datanode所屬的機(jī)架,保存到內(nèi)存的一個(gè)map中剩瓶。

至于腳本的編寫(xiě)驹溃,就需要將真實(shí)的網(wǎng)絡(luò)拓樸和機(jī)架信息了解清楚后,通過(guò)該腳本能夠?qū)C(jī)器的ip地址正確的映射到相應(yīng)的機(jī)架上去延曙。Hadoop官方給出的腳本:http://wiki.apache.org/hadoop/topology_rack_awareness_scripts

以下分別是沒(méi)有配置機(jī)架感知信息和配置機(jī)架感知信息的hadoop HDFS進(jìn)行數(shù)據(jù)上傳時(shí)的測(cè)試結(jié)果豌鹤。

當(dāng)沒(méi)有配置機(jī)架信息時(shí),所有的機(jī)器hadoop都默認(rèn)在同一個(gè)默認(rèn)的機(jī)架下枝缔,名為 “/default-rack”布疙,這種情況下,任何一臺(tái)datanode機(jī)器愿卸,不管物理上是否屬于同一個(gè)機(jī)架灵临,都會(huì)被認(rèn)為是在同一個(gè)機(jī)架下,此時(shí)趴荸,就很容易出現(xiàn)之前提到的增添機(jī)架間網(wǎng)絡(luò)負(fù)載的情況俱诸。在沒(méi)有機(jī)架信息的情況下,namenode默認(rèn)將所有的slaves機(jī)器全部默認(rèn)為在/default-rack下赊舶,此時(shí)寫(xiě)block時(shí),三個(gè)datanode機(jī)器的選擇完全是隨機(jī)的赶诊。

當(dāng)配置了機(jī)架感知信息以后笼平,hadoop在選擇三個(gè)datanode時(shí),就會(huì)進(jìn)行相應(yīng)的判斷:
1. 如果上傳本機(jī)不是一個(gè)datanode舔痪,而是一個(gè)客戶端寓调,那么就從所有slave機(jī)器中隨機(jī)選擇一臺(tái)datanode作為第一個(gè)塊的寫(xiě)入機(jī)器(datanode1)。而此時(shí)如果上傳機(jī)器本身就是一個(gè)datanode锄码,那么就將該datanode本身作為第一個(gè)塊寫(xiě)入機(jī)器(datanode1)夺英。
2. 隨后在datanode1所屬的機(jī)架以外的另外的機(jī)架上晌涕,隨機(jī)的選擇一臺(tái),作為第二個(gè)block的寫(xiě)入datanode機(jī)器(datanode2)痛悯。
3. 在寫(xiě)第三個(gè)block前余黎,先判斷是否前兩個(gè)datanode是否是在同一個(gè)機(jī)架上,如果是在同一個(gè)機(jī)架载萌,那么就嘗試在另外一個(gè)機(jī)架上選擇第三個(gè)datanode作為寫(xiě)入機(jī)器(datanode3)惧财。而如果datanode1和datanode2沒(méi)有在同一個(gè)機(jī)架上,則在datanode2所在的機(jī)架上選擇一臺(tái)datanode作為datanode3扭仁。
4. 得到3個(gè)datanode的列表以后垮衷,從namenode返回該列表到DFSClient之前,會(huì)在namenode端首先根據(jù)該寫(xiě)入客戶端跟datanode列表中每個(gè)datanode之間的“距離”由近到遠(yuǎn)進(jìn)行一個(gè)排序乖坠,客戶端根據(jù)這個(gè)順序有近到遠(yuǎn)的進(jìn)行數(shù)據(jù)塊的寫(xiě)入搀突。
5. 當(dāng)根據(jù)“距離”排好序的datanode節(jié)點(diǎn)列表返回給DFSClient以后,DFSClient便會(huì)創(chuàng)建Block OutputStream熊泵,并向這次block寫(xiě)入pipeline中的第一個(gè)節(jié)點(diǎn)(最近的節(jié)點(diǎn))開(kāi)始寫(xiě)入block數(shù)據(jù)仰迁。
6. 寫(xiě)完第一個(gè)block以后,依次按照datanode列表中的次遠(yuǎn)的node進(jìn)行寫(xiě)入戈次,直到最后一個(gè)block寫(xiě)入成功轩勘,DFSClient返回成功,該block寫(xiě)入操作結(jié)束怯邪。

通過(guò)以上策略绊寻,namenode在選擇數(shù)據(jù)塊的寫(xiě)入datanode列表時(shí),就充分考慮到了將block副本分散在不同機(jī)架下悬秉,并同時(shí)盡量地避免了之前描述的網(wǎng)絡(luò)開(kāi)銷澄步。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市和泌,隨后出現(xiàn)的幾起案子村缸,更是在濱河造成了極大的恐慌,老刑警劉巖武氓,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梯皿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡县恕,警方通過(guò)查閱死者的電腦和手機(jī)东羹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)忠烛,“玉大人属提,你說(shuō)我怎么就攤上這事。” “怎么了冤议?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵斟薇,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我恕酸,道長(zhǎng)堪滨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任尸疆,我火速辦了婚禮椿猎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寿弱。我一直安慰自己犯眠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布症革。 她就那樣靜靜地躺著筐咧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪噪矛。 梳的紋絲不亂的頭發(fā)上量蕊,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音艇挨,去河邊找鬼残炮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缩滨,可吹牛的內(nèi)容都是我干的势就。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼脉漏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼苞冯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起侧巨,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舅锄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后司忱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體皇忿,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年坦仍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了禁添。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡桨踪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芹啥,到底是詐尸還是另有隱情锻离,我是刑警寧澤铺峭,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站汽纠,受9級(jí)特大地震影響卫键,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虱朵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一莉炉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碴犬,春花似錦絮宁、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至偿荷,卻和暖如春窘游,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背跳纳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工忍饰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寺庄。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓艾蓝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親铣揉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饶深,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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

  • 首先,我們?cè)谑褂们跋瓤纯碒DFS是什麼逛拱?這將有助于我們是以后的運(yùn)維使用和故障排除思路的獲得敌厘。 HDFS采用mast...
    W_Bousquet閱讀 4,196評(píng)論 0 2
  • 一、寫(xiě)入數(shù)據(jù)HDFS寫(xiě)入數(shù)據(jù)時(shí)朽合,根據(jù)block存儲(chǔ)策略可能不同俱两。首先要看是否啟用了hadoop的機(jī)架感知,默認(rèn)是關(guān)...
    北原小城閱讀 1,274評(píng)論 0 3
  • Hadoop機(jī)架感知 (手機(jī)碼字不容易...) 1.背景 Hadoop在設(shè)計(jì)時(shí)考慮到數(shù)據(jù)的安全與高效曹步,數(shù)...
    我有一頭小毛驢被占用閱讀 774評(píng)論 0 1
  • 我不是陳粒宪彩,寫(xiě)不出祝星。但是我啊讲婚,你能看得真切尿孔。 你不曾背對(duì)著山河走向我,我不曾貪得無(wú)厭。 如果你來(lái)過(guò)能不能找到我...
    夙音閱讀 1,169評(píng)論 2 6
  • 引帶者和跟隨者 阿根廷探戈是男士主導(dǎo)的舞蹈活合,絕大部分舞蹈動(dòng)作都是由男士引帶出來(lái)的雏婶,女士在舞蹈中的大部分時(shí)間都是跟...
    Sarah瀟瀟閱讀 1,119評(píng)論 0 1