hadoop筆記(三)HDSF原理

前面完成了Hadoop的偽分布式搭建和集群的搭建。為hadoop的學習提供環(huán)境负懦,接下來是對hadoop的hdfs和mapreduce原理進行講述醒叁。
1.hdfs
HDFS是分布式文件系統(tǒng)坯门,當然當前市面上分布式文件系統(tǒng)不止hdfs這么一個返敬。適合一次寫入,多次查詢場景。其特點就是容錯性好塔拳,就算系統(tǒng)中某個節(jié)點脫機鼠证,整體來說系統(tǒng)仍然可以持續(xù)運作而不會有數(shù)據(jù)損失。其架構圖如下:

圖片1.jpg

HDFS架構有NameNode靠抑、DataNode量九、secondaryNameNode構成。
(1)NameNode :是整個文件系統(tǒng)的管理街節(jié)點颂碧,維護文件系統(tǒng)的目錄樹荠列。記錄文件/目錄的元數(shù)據(jù)信息以及每個文件對應的數(shù)據(jù)塊列表。也是接受用戶的操作請求稚伍。它的文件主要包括:
fsimage:元數(shù)據(jù)鏡像文件弯予,存儲namenode某一段時間內(nèi),元數(shù)據(jù)存儲信息个曙。
edits:操作日志信息。記錄操作信息受楼。
fstime:記錄最近一次checkpoint時間垦搬。
以上文件在linux中都是可以看到的。具體位置跟hdfs-site.xml中艳汽,dfs.name.dir配置的路徑下猴贰。如圖,我自己的配置為:
2.PNG

當客戶端請求到達namenode時候河狐,在namenode中將元數(shù)據(jù)存儲米绕。元數(shù)據(jù)存儲細節(jié)如下圖:
3.PNG

NameNode的工作特點:
第一:namenode始終在內(nèi)存中保存metedata,用于處理“讀”請求馋艺。
第二:當有“寫”請求時候栅干,namenode首先會向edits日志,成功返回后捐祠,修改內(nèi)存碱鳞。并且向客戶端返回。
第三:namenode會維護一個fsimage文件踱蛀,也就是metedata的鏡像文件窿给。在偽分布式中,fsimage不會隨時和內(nèi)存中metadata數(shù)據(jù)保持一致率拒,會每隔一定時間進行合并edits文件來更新內(nèi)容崩泡。secondrynamenode就是用來合并fsimage和edits文件來更新namenode的metedata的。當然數(shù)據(jù)合并的標準(checkpoint)為:時間的長短和edits文件的大小猬膨。也是fs.checkpoint.period和fs.checkpoint.size
(2)secondryName
secondryname是HA的一個解決方案角撞,直接配置即可,工具流程就是從namenode下載fsimage和edits,合并成新的fsimage在本地保存并推送到NameNode替換舊的fsimage靴寂。默認安裝在NameNode上磷蜀,但是這樣會是不安全的。
secondryName工作流程百炬,secondryname通知namenode切換edits文件褐隆,然后從nameNode下載edits和fsimage文件,將fsimage加載到內(nèi)存中剖踊,并開始合成edits文件庶弃,將新合成文件 發(fā)送給nameNode,替換舊的fsimage文件德澈。如下圖:
image.png

(3)DataNode
datanode是真是存儲數(shù)據(jù)地方歇攻,Hdfs默認文件快的大小為128m。replication備份數(shù)量為3份梆造。
(4)HDFS的讀取過程
1.初始化FileSystem缴守,然后客戶端(client)用FileSystem的open()函數(shù)打開文件
2.FileSystem用RPC調用元數(shù)據(jù)節(jié)點,得到文件的數(shù)據(jù)塊信息镇辉,對于每一個數(shù)據(jù)塊屡穗,元數(shù)據(jù)節(jié)點返回保存數(shù)據(jù)塊的數(shù)據(jù)節(jié)點的地址。
3.FileSystem返回FSDataInputStream給客戶端忽肛,用來讀取數(shù)據(jù)村砂,客戶端調用stream的read()函數(shù)開始讀取數(shù)據(jù)。
4.DFSInputStream連接保存此文件第一個數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點屹逛,data從數(shù)據(jù)節(jié)點讀到客戶端(client)
5.當此數(shù)據(jù)塊讀取完畢時础废,DFSInputStream關閉和此數(shù)據(jù)節(jié)點的連接,然后連接此文件下一個數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點罕模。
6.當客戶端讀取完畢數(shù)據(jù)的時候评腺,調用FSDataInputStream的close函數(shù)。
7.在讀取數(shù)據(jù)的過程中手销,如果客戶端在與數(shù)據(jù)節(jié)點通信出現(xiàn)錯誤歇僧,則嘗試連接包含此數(shù)據(jù)塊的下一個數(shù)據(jù)節(jié)點。
8.失敗的數(shù)據(jù)節(jié)點將被記錄锋拖,以后不再連接诈悍。
image.png

(5)HdFS寫的過程
1.初始化FileSystem,客戶端調用create()來創(chuàng)建文件
2.FileSystem用RPC調用元數(shù)據(jù)節(jié)點兽埃,在文件系統(tǒng)的命名空間中創(chuàng)建一個新的文件侥钳,元數(shù)據(jù)節(jié)點首先確定文件原來不存在,并且客戶端有創(chuàng)建文件的權限柄错,然后創(chuàng)建新文件舷夺。
3.FileSystem返回DFSOutputStream苦酱,客戶端用于寫數(shù)據(jù),客戶端開始寫入數(shù)據(jù)给猾。
4.DFSOutputStream將數(shù)據(jù)分成塊疫萤,寫入data queue。data queue由Data Streamer讀取敢伸,并通知元數(shù)據(jù)節(jié)點分配數(shù)據(jù)節(jié)點扯饶,用來存儲數(shù)據(jù)塊(每塊默認復制3塊)。分配的數(shù)據(jù)節(jié)點放在一個pipeline里池颈。Data Streamer將數(shù)據(jù)塊寫入pipeline中的第一個數(shù)據(jù)節(jié)點尾序。第一個數(shù)據(jù)節(jié)點將數(shù)據(jù)塊發(fā)送給第二個數(shù)據(jù)節(jié)點。第二個數(shù)據(jù)節(jié)點將數(shù)據(jù)發(fā)送給第三個數(shù)據(jù)節(jié)點躯砰。
5.DFSOutputStream為發(fā)出去的數(shù)據(jù)塊保存了ack queue每币,等待pipeline中的數(shù)據(jù)節(jié)點告知數(shù)據(jù)已經(jīng)寫入成功。
6.當客戶端結束寫入數(shù)據(jù)琢歇,則調用stream的close函數(shù)兰怠。此操作將所有的數(shù)據(jù)塊寫入pipeline中的數(shù)據(jù)節(jié)點,并等待ack queue返回成功矿微。最后通知元數(shù)據(jù)節(jié)點寫入完畢痕慢。
7.如果數(shù)據(jù)節(jié)點在寫入的過程中失敗,關閉pipeline涌矢,將ack queue中的數(shù)據(jù)塊放入data queue的開始,當前的數(shù)據(jù)塊在已經(jīng)寫入的數(shù)據(jù)節(jié)點中被元數(shù)據(jù)節(jié)點賦予新的標示快骗,則錯誤節(jié)點重啟后能夠察覺其數(shù)據(jù)塊是過時的娜庇,會被刪除。失敗的數(shù)據(jù)節(jié)點從pipeline中移除方篮,另外的數(shù)據(jù)塊則寫入pipeline中的另外兩個數(shù)據(jù)節(jié)點名秀。元數(shù)據(jù)節(jié)點則被通知此數(shù)據(jù)塊是復制塊數(shù)不足,將來會再創(chuàng)建第三份備份藕溅。
image.png

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匕得,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子巾表,更是在濱河造成了極大的恐慌汁掠,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件集币,死亡現(xiàn)場離奇詭異考阱,居然都是意外死亡,警方通過查閱死者的電腦和手機鞠苟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門乞榨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秽之,“玉大人,你說我怎么就攤上這事吃既】颊ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵鹦倚,是天一觀的道長河质。 經(jīng)常有香客問我,道長申鱼,這世上最難降的妖魔是什么愤诱? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮捐友,結果婚禮上淫半,老公的妹妹穿的比我還像新娘。我一直安慰自己匣砖,他們只是感情好科吭,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猴鲫,像睡著了一般对人。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拂共,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天牺弄,我揣著相機與錄音,去河邊找鬼宜狐。 笑死势告,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的抚恒。 我是一名探鬼主播咱台,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼俭驮!你這毒婦竟也來了回溺?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤混萝,失蹤者是張志新(化名)和其女友劉穎遗遵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體譬圣,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡瓮恭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厘熟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屯蹦。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡维哈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出登澜,到底是詐尸還是另有隱情阔挠,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布脑蠕,位于F島的核電站购撼,受9級特大地震影響,放射性物質發(fā)生泄漏谴仙。R本人自食惡果不足惜迂求,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晃跺。 院中可真熱鬧揩局,春花似錦、人聲如沸掀虎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烹玉。三九已至驰怎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間二打,已是汗流浹背县忌。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留继效,地道東北人芹枷。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像莲趣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子饱溢,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

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