hdfs:Hadoop Distributed File System (Hadoop 分布式文件系統(tǒng))
1.特點(diǎn):
- 一次寫入多次讀出甘改,并且不支持修改旅东。適合做數(shù)據(jù)分析,不適合做網(wǎng)盤十艾。
2.優(yōu)點(diǎn)
- 高容錯性
- 數(shù)據(jù)自動保存多個副本玉锌,默認(rèn)三個。某一個丟失疟羹,還有備份
- 數(shù)據(jù)備份丟失主守,自動給恢復(fù)至默認(rèn)副本數(shù)量
- 適合做大數(shù)據(jù)處理
- 數(shù)據(jù)規(guī)模大,GB TB PB
- 文件規(guī)模大榄融,能夠處理百萬規(guī)模上的文件
- 能在低配置服務(wù)器上配置 参淫,通過多副本機(jī)制,提高可靠性
3. 缺點(diǎn) :
- 不適合低延時的數(shù)據(jù)訪問愧杯,比如毫秒級的存儲數(shù)據(jù)
- 無法高效率的對小文件進(jìn)行存儲
- NameNode會記錄每個文件的元信息涎才,同一文件分開存和整合之后存,后者元信息更少力九,所占用的資源也就更少耍铜;
- hdfs的設(shè)計(jì)原理是接近磁盤讀取速度,之所以把block塊設(shè)置很大跌前,是因?yàn)橄胱龅綄さ罆r間遠(yuǎn)小于文件讀取數(shù)據(jù)塊的時間棕兼,接近磁盤讀取速度。如果小文件太多抵乓,會造成尋道時間太長伴挚,違背設(shè)計(jì)原理靶衍;
應(yīng)該將小文件合并后存入hdfs
- 不支持并發(fā)寫入,文件的隨機(jī)修改茎芋;
- 一個文件只能有一個寫颅眶,不能多服務(wù)器同時寫;
- 僅支持文件的append(追加)田弥,不支持隨機(jī)修改涛酗。
4.hdfs組成框架
- NameNode(nn):是master
- 管理hdfs的名稱空間;
- 管理副本策略
- 管理數(shù)據(jù)塊(Block)映射信息
- 處理客戶端請求
- DataNode:是slave偷厦。NameNode下達(dá)命令煤杀。DataNode執(zhí)行操作。
- 存儲實(shí)際的數(shù)據(jù)塊沪哺;
- 執(zhí)行數(shù)據(jù)塊的讀寫操作沈自。
- client 客戶端
- 文件切分。文件上傳時辜妓,將文件切分成一個個block(128M)枯途,然后上傳;
- 與NameNode交互籍滴,獲取文件的位置信息酪夷;
- 與DataNode交互,讀取或者寫入數(shù)據(jù)孽惰;
- client提供一些命令來管理HDFS:如NameNode格式化晚岭;
- client可以通過一些命令來訪問HDFS,比如查詢
- Secondary NameNode:并非NameNode的熱備勋功,當(dāng)NameNode掛掉時坦报,它并不能馬上替換NameNode并提供服務(wù)。
- 輔助NameNode狂鞋,分擔(dān)其工作量片择,
- hdfs塊的大小
- 目前硬盤的尋址時間在10ms左右,讀寫速率在100m/s骚揍。在hdfs設(shè)計(jì)理念下字管,尋址時間應(yīng)為傳輸時間的1%;所以傳輸時間大概在1s左右信不;1s*100m/s=100m嘲叔。也就是一次寫入的最大值應(yīng)該為100m;所以選擇128m大小作為hdfs塊的大谐榛睢硫戈;
- hdfs的塊大小設(shè)置太小: 會增加尋找時間酌壕,違背hdfs設(shè)計(jì)理念掏愁。
- hdfs的塊設(shè)置太大,會大大增加數(shù)據(jù)的傳輸時間卵牍。
- 在hdfs上面利用 -mkdir 創(chuàng)建文件夾時果港,不能使用中文字符;
- hadoop fs -moveFromLocal
- 不能剪切到hdfs上面沒有的文件夾糊昙,也就是說這個命令不會自動創(chuàng)建文件夾
- hadoop fs -appendToFile
- Failed to replace a bad datanode on the existing pipeline due to no more good datanodes being available to try.
- 2014-05-04 10:43:55,009 INFOorg.apache.hadoop.ipc.Client: Retrying connect to server:hadoop1/192.168.10.22:9000. Already tried 0 time(s); retry policy isRetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
- 原因是辛掠,三個節(jié)點(diǎn)雖然都可以查到DataNode進(jìn)程,但是在網(wǎng)頁查到只有一個DataNode進(jìn)程释牺。在別的節(jié)點(diǎn)查看萝衩,不能與Name Node進(jìn)行傳輸。原因是修改了 /etc/hosts的文件没咙。
- -copyFromLocal
- 不能剪切到hdfs上面沒有的文件夾猩谊,也就是說這個命令不會自動創(chuàng)建文件夾
10.-setrep 設(shè)置副本數(shù)量
- 當(dāng)設(shè)置的數(shù)量大于DataNode時,不會在某一節(jié)點(diǎn)備份多份祭刚;只會是牌捷,在添加節(jié)點(diǎn)之后,將副本復(fù)制到新添加的節(jié)點(diǎn)上涡驮,直到達(dá)到設(shè)置的數(shù)量暗甥。
- 回收站功能
- fs.trash.interval=0 文件在回收站的存活時間設(shè)置
- 0 默認(rèn)取消回收站功能
- 其他數(shù)字表示文件在回收站的存活時間。
- fs.trash.checkpoint.interval=0, 檢查回收站的文件
- 0表示該值和fs.trash.interval的值相同
- 該值應(yīng)該《=fs.trash.interval的值