iT邦幫忙

DAY 17
3

動物園之路系列 第 14

動物園之路 -17- 大象的肚子好大!-HDFS (續-Datanode)

昨天提到NameNode還有講解裡面存放的檔案代表什麼意思,接著來補上DataNode的部分,如同前面所提Hadoop是master/slave架構,datanode是可以一直擴展,也代表hdfs可以放更多的檔案。
今天也會補充為什麼可以確保檔案不會遺失~
首先來看到datanode上的目錄結構

datanode上的current目錄下,存放所有檔案的block,並且以blk_* 的方式來命名。
檔案有兩種類型,一種是blk_*,另一種是blk_*.meta,前者為檔案區塊的內容,後者為描述該區塊的metadata檔。前幾天有MapReduce的範例,其中有放一個1.1GB的檔案,被分成9個區塊(128MB),我拿其中一個區塊做講解,-9178343734531892529,
他在datanode區塊上的檔案名稱叫做blk_-9178343734531892529,metadata為
blk-9178343734531892529_1092.meta。
metadata裡面存放的就是block的資訊。

可以看到<replicas></replicas>
這裡會放<replica><host_name>其中host_name就代表該block有存放在哪個datanode,該block有沒有損壞。

如果有損壞的話,當block的複本數低於設定的複本值時,這時候HDFS會呈現一個不穩定的狀態,這個時候就必須要求HDFS要把所有檔案的block複本數增加到所設定的複本策略數量。
正常來說不太有可能一次壞三台電腦,所以三個複本數應該是足夠了。

不過NameNode掛掉就另當別論了,所以namenode上的fsimage和edits的保存就非常重要,目前的HA機制都是將這兩個檔案存放在安全的NFS上。


上一篇
動物園之路 -16- 大象的肚子好大!-HDFS
下一篇
動物園之路 -18- 大象一定要活下去!
系列文
動物園之路27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言