簡介
HDFS(Hadoop Distributed File System )Hadoop分布式文件系統(tǒng)洛二。是根據(jù)google發(fā)表的論文翻版的。論文為GFS(Google File System)Google 文件系統(tǒng)(中文立倍,英文)灭红。
HDFS有很多特點(diǎn):
①保存多個(gè)副本侣滩,且提供容錯(cuò)機(jī)制口注,副本丟失或宕機(jī)自動(dòng)恢復(fù)。默認(rèn)存3份君珠。
②運(yùn)行在廉價(jià)的機(jī)器上寝志。
③適合大數(shù)據(jù)的處理。多大策添?多胁牟俊?HDFS默認(rèn)會(huì)將文件分割成block唯竹,64M為1個(gè)block乐导。然后將block按鍵值對(duì)存儲(chǔ)在HDFS上,并將鍵值對(duì)的映射存到內(nèi)存中浸颓。如果小文件太多物臂,那內(nèi)存的負(fù)擔(dān)會(huì)很重。
如上圖所示产上,HDFS也是按照Master和Slave的結(jié)構(gòu)棵磷。分NameNode、SecondaryNameNode晋涣、DataNode這幾個(gè)角色仪媒。
NameNode:是Master節(jié)點(diǎn),是大領(lǐng)導(dǎo)谢鹊。管理數(shù)據(jù)塊映射算吩;處理客戶端的讀寫請(qǐng)求留凭;配置副本策略;管理HDFS的名稱空間偎巢;
SecondaryNameNode:是一個(gè)小弟冰抢,分擔(dān)大哥namenode的工作量;是NameNode的冷備份艘狭;合并fsimage和fsedits然后再發(fā)給namenode挎扰。
DataNode:Slave節(jié)點(diǎn),奴隸巢音,干活的遵倦。負(fù)責(zé)存儲(chǔ)client發(fā)來的數(shù)據(jù)塊block;執(zhí)行數(shù)據(jù)塊的讀寫操作官撼。
熱備份:b是a的熱備份梧躺,如果a壞掉。那么b馬上運(yùn)行代替a的工作傲绣。
冷備份:b是a的冷備份掠哥,如果a壞掉。那么b不能馬上代替a工作秃诵。但是b上存儲(chǔ)a的一些信息续搀,減少a壞掉之后的損失。
fsimage:元數(shù)據(jù)鏡像文件(文件系統(tǒng)的目錄樹菠净。)
edits:元數(shù)據(jù)的操作日志(針對(duì)文件系統(tǒng)做的修改操作記錄)
namenode內(nèi)存中存儲(chǔ)的是=fsimage+edits禁舷。
SecondaryNameNode負(fù)責(zé)定時(shí)默認(rèn)1小時(shí),從namenode上毅往,獲取fsimage和edits來進(jìn)行合并牵咙,然后再發(fā)送給namenode。減少namenode的工作量攀唯。
工作原理
寫操作:
有一個(gè)文件FileA洁桌,100M大小。Client將FileA寫入到HDFS上侯嘀。
HDFS按默認(rèn)配置另凌。
HDFS分布在三個(gè)機(jī)架上Rack1,Rack2残拐,Rack3途茫。
a.Client將FileA按64M分塊。分成兩塊溪食,block1和Block2;
b.Client向nameNode發(fā)送寫數(shù)據(jù)請(qǐng)求囊卜,如圖藍(lán)色虛線①------>。
c.NameNode節(jié)點(diǎn),記錄block信息栅组。并返回可用的DataNode雀瓢,如粉色虛線②--------->。
Block1: host2,host1,host3
Block2: host7,host8,host4
原理:
NameNode具有RackAware機(jī)架感知功能玉掸,這個(gè)可以配置刃麸。
若client為DataNode節(jié)點(diǎn),那存儲(chǔ)block時(shí)司浪,規(guī)則為:副本1泊业,同client的節(jié)點(diǎn)上;副本2啊易,不同機(jī)架節(jié)點(diǎn)上吁伺;副本3,同第二個(gè)副本機(jī)架的另一個(gè)節(jié)點(diǎn)上租谈;其他副本隨機(jī)挑選篮奄。
若client不為DataNode節(jié)點(diǎn),那存儲(chǔ)block時(shí)割去,規(guī)則為:副本1窟却,隨機(jī)選擇一個(gè)節(jié)點(diǎn)上;副本2呻逆,不同副本1夸赫,機(jī)架上;副本3页慷,同副本2相同的另一個(gè)節(jié)點(diǎn)上憔足;其他副本隨機(jī)挑選胁附。
d.client向DataNode發(fā)送block1酒繁;發(fā)送過程是以流式寫入。
流式寫入過程控妻,
1>將64M的block1按64k的package劃分;
2>然后將第一個(gè)package發(fā)送給host2;
3>host2接收完后州袒,將第一個(gè)package發(fā)送給host1,同時(shí)client想host2發(fā)送第二個(gè)package弓候;
4>host1接收完第一個(gè)package后郎哭,發(fā)送給host3,同時(shí)接收host2發(fā)來的第二個(gè)package菇存。
5>以此類推夸研,如圖紅線實(shí)線所示,直到將block1發(fā)送完畢依鸥。
6>host2,host1,host3向NameNode亥至,host2向Client發(fā)送通知,說“消息發(fā)送完了”。如圖粉紅顏色實(shí)線所示姐扮。
7>client收到host2發(fā)來的消息后絮供,向namenode發(fā)送消息,說我寫完了茶敏。這樣就真完成了壤靶。如圖黃色粗實(shí)線
8>發(fā)送完block1后,再向host7惊搏,host8贮乳,host4發(fā)送block2,如圖藍(lán)色實(shí)線所示恬惯。
9>發(fā)送完block2后塘揣,host7,host8,host4向NameNode,host7向Client發(fā)送通知宿崭,如圖淺綠色實(shí)線所示亲铡。
10>client向NameNode發(fā)送消息,說我寫完了葡兑,如圖黃色粗實(shí)線奖蔓。。讹堤。這樣就完畢了吆鹤。
分析,通過寫過程洲守,我們可以了解到:
①寫1T文件疑务,我們需要3T的存儲(chǔ),3T的網(wǎng)絡(luò)流量貸款梗醇。
②在執(zhí)行讀或?qū)懙倪^程中知允,NameNode和DataNode通過HeartBeat進(jìn)行保存通信,確定DataNode活著叙谨。如果發(fā)現(xiàn)DataNode死掉了温鸽,就將死掉的DataNode上的數(shù)據(jù),放到其他節(jié)點(diǎn)去手负。讀取時(shí)涤垫,要讀其他節(jié)點(diǎn)去。
③掛掉一個(gè)節(jié)點(diǎn)竟终,沒關(guān)系蝠猬,還有其他節(jié)點(diǎn)可以備份;甚至统捶,掛掉某一個(gè)機(jī)架榆芦,也沒關(guān)系敦姻;其他機(jī)架上,也有備份歧杏。
讀操作:
讀操作就簡單一些了镰惦,如圖所示,client要從datanode上犬绒,讀取FileA旺入。而FileA由block1和block2組成。
那么凯力,讀操作流程為:
a.client向namenode發(fā)送讀請(qǐng)求茵瘾。
b.namenode查看Metadata信息,返回fileA的block的位置咐鹤。
block1:host2,host1,host3
block2:host7,host8,host4
c.block的位置是有先后順序的拗秘,先讀block1,再讀block2祈惶。而且block1去host2上讀鹊裰肌;然后block2捧请,去host7上讀确采;
上面例子中疹蛉,client位于機(jī)架外活箕,那么如果client位于機(jī)架內(nèi)某個(gè)DataNode上,例如,client是host6可款。那么讀取的時(shí)候育韩,遵循的規(guī)律是:
優(yōu)選讀取本機(jī)架上的數(shù)據(jù)。
HDFS中常用到的命令
1闺鲸、hadoop fs
2筋讨、hadoop fsadmin
3、hadoop fsck
4翠拣、start-balancer.sh
分類:Hadoop
18
0
?上一篇:【Hadoop】用web查看hadoop運(yùn)行狀態(tài)
?下一篇:【JAVA】配置JAVA環(huán)境變量版仔,安裝Eclipse
posted @2013-11-26 16:57大牛筆記閱讀(109025) 評(píng)論(9)編輯收藏
評(píng)論列表
新手學(xué)習(xí)hadoop最好是在linux平臺(tái)吧,是不是一般都用centos的版本
@fo0ol
hadoop運(yùn)行平臺(tái)可以用linux虛擬機(jī)運(yùn)行误墓。mapreduce可以在win7下編寫。
linux版本益缎,可以是Ubuntu系統(tǒng)谜慌,也可以是centos系統(tǒng)。
大神莺奔,向你致敬
拜讀 欣范! 請(qǐng)問樓主用什么軟件畫的圖变泄?
@bossdk
一個(gè)挺不錯(cuò)的web端的工具,強(qiáng)烈推薦
http://www.processon.com/invitation/526f30c10cf22f64f6308bbf
(此url包含我的邀請(qǐng)鏈接恼琼,不會(huì)對(duì)你產(chǎn)生影響妨蛹。)
此工具可以畫uml圖,流程圖晴竞,還有簡單的界面ui設(shè)計(jì)等蛙卤。
這個(gè)圖畫的。噩死。颤难。。 有點(diǎn)別扭已维。 怎么還用win7 做client行嗤。。垛耳。栅屏。 不用linux
畫圖工具收藏了
牛牪犇掰
大牛,學(xué)習(xí)了堂鲜,講的很透徹明白既琴,你是我看了這么多頭一個(gè)寫這么明白的,膜拜泡嘴,
注冊用戶登錄后才能發(fā)表評(píng)論甫恩,請(qǐng)登錄或注冊,訪問網(wǎng)站首頁酌予。
【推薦】50萬行VC++源碼: 大型組態(tài)工控磺箕、電力仿真CAD與GIS源碼庫
【推薦】騰訊云免費(fèi)實(shí)驗(yàn)室,1小時(shí)搭建人工智能應(yīng)用
最新IT新聞:
·這款擴(kuò)展可將手機(jī)當(dāng)做Google Slides控制器
·Win10秋季創(chuàng)意者更新連下四道補(bǔ)丁修復(fù):不信還不穩(wěn)定
·獵豹移動(dòng)CEO傅盛:人越來越不愛生孩子了 機(jī)器人是新機(jī)會(huì)
·安全人員發(fā)現(xiàn)基于.NET平臺(tái)且使用開源項(xiàng)目的勒索軟件
最新知識(shí)庫文章:
得之我幸雕欺,失之我命;
不以物喜棉姐,不以己悲;
努力爭取屠列,靠向目標(biāo)!
昵稱:大牛筆記
園齡:6年
粉絲:226
關(guān)注:23
隨筆分類
積分與排名
積分 - 68949
排名 - 4665
Copyright ?2017 大牛筆記