真正的學(xué)習(xí)是去探索闽瓢,思考和重建
HDFS產(chǎn)生背景
? 隨著數(shù)據(jù)量越來越大接癌,在一個操作系統(tǒng)存不下所有的數(shù)據(jù),那么就分配到更多的操作系統(tǒng)管理的磁盤中扣讼,但是不方便管理和維護(hù)缺猛,迫切需要一種系統(tǒng)來管理多臺機(jī)器上的文件,這就是分布式文件管理系統(tǒng)椭符。HDFS只是分布式文件管理系統(tǒng)中的一種荔燎。
HDFS定義
? HDFS( Hadoop Distributed File System),它是一個文件系統(tǒng)销钝,用于存儲文件有咨,通過目錄樹來定位文件;其次蒸健,它是分布式的座享,由很多服務(wù)器聯(lián)合起來實(shí)現(xiàn)其功能,集群中的服務(wù)器有各自的角色
關(guān)鍵詞:文件系統(tǒng)似忧,分布式
使用場景
? 適合一次寫入渣叛,多次讀出的場景,且不支持文件的修改盯捌。適合用來做數(shù)據(jù)分析淳衙,并不適合用來做網(wǎng)盤應(yīng)用
優(yōu)點(diǎn)
-
高容錯性
(1)數(shù)據(jù)自動保存多個副本。它通過增加副本的形式挽唉,提高容錯性滤祖。 (2)某一個副本丟失以后,它可以自動恢復(fù)
-
適合處理大數(shù)據(jù)
(1)數(shù)據(jù)規(guī)模:能夠處理數(shù)據(jù)規(guī)模達(dá)到GB瓶籽、TB匠童、甚至PB級別的數(shù)據(jù): (2)文件規(guī)模:能夠處理百萬規(guī)模以上的文件數(shù)量,數(shù)量相當(dāng)之大 (3)可構(gòu)建在廉價(jià)機(jī)器上塑顺,通過多副本機(jī)制汤求,提高可靠性
缺點(diǎn)
不適合低延時數(shù)據(jù)訪問,比如毫秒級的存儲數(shù)據(jù)严拒,是做不到的
無法高效的對大量小文件進(jìn)行存儲
(1)存儲大量小文件的話扬绪,它會占用 Namenode大量的內(nèi)存來存儲文件目錄和塊信息。這樣是不可取的裤唠,因?yàn)?Namenode的內(nèi)存總是有限的:
(2)小文件存儲的尋址時間會超過讀取時間挤牛,它違反了HDFS的設(shè)計(jì)目標(biāo)。
- 不支持并發(fā)寫入种蘸、文件隨機(jī)修改HDFS
(1)一個文件只能有一個寫墓赴,不允許多個線程同時寫:
(2)僅支持?jǐn)?shù)據(jù) append(追加)竞膳,不支持文件的隨機(jī)修改
HDFS組成架構(gòu)圖
HDFS文件塊大小
思考:快為什么不能設(shè)置太小,也不能設(shè)置太大呢诫硕?
(1)HDFS的塊設(shè)置太小坦辟,會增加尋址時間,程序一直在找塊的開始位置:
(2)HDFS的塊比磁盤的塊大章办,其目的是為了最小化尋址開銷:
(3)如果塊設(shè)置的太大锉走,從磁盤傳輸數(shù)據(jù)的時間會明顯大于定位這個塊開始位置所需的時間。導(dǎo)致程序在處理這塊數(shù)據(jù)時藕届,會非常慢挪蹭。總結(jié):HDFS塊的大小設(shè)置主要取決于磁盤傳輸速率。
相關(guān)資料
本文配套GitHub:https://github.com/zhutiansama/FocusBigData