1、支持超大文件,一般來說,HDFS 存儲(chǔ)的文件可以支持 TB 和 PB 級(jí)別的數(shù)據(jù)。
2、檢測(cè)和快速應(yīng)對(duì)硬件故障:
在集群環(huán)境中,硬件故障是常見性問題。因?yàn)橛猩锨_(tái)服務(wù)器連在一起,故障率高,因此故障檢測(cè)和自動(dòng)恢復(fù) hdfs 文件系統(tǒng)的一個(gè)設(shè)計(jì)目標(biāo)。假設(shè)某一個(gè) datanode 節(jié)點(diǎn)掛掉之后,因?yàn)閿?shù)據(jù)備份,還可以從其他節(jié)點(diǎn)里找到。namenode 通過心跳機(jī)制來檢測(cè) datanode 是否還存在
3、流式數(shù)據(jù)訪問:
HDFS 的數(shù)據(jù)處理規(guī)模比較大,應(yīng)用一次需要大量的數(shù)據(jù),同時(shí)這些應(yīng)用一般都是批量處理,而不是用戶交互式處理,應(yīng)用程序能以流的形式訪問數(shù)據(jù)庫。主要的是數(shù)據(jù)的吞吐量,而不是訪問速度。訪問速度最終是要受制于網(wǎng)絡(luò)和磁盤的速度,機(jī)器節(jié)點(diǎn)再多,也不能突破物理的局限,HDFS 不適合于低延遲的數(shù)據(jù)訪問,HDFS 的是高吞吐量。
4、簡(jiǎn)化的一致性模型:
對(duì)于外部使用用戶,不需要了解 hadoop 底層細(xì)節(jié),比如文件的切塊,文件的存儲(chǔ),節(jié)點(diǎn)的管理。
一個(gè)文件存儲(chǔ)在 HDFS 上后,適合一次寫入,多次寫出的場(chǎng)景 once-write-read-many。因?yàn)榇鎯?chǔ)在 HDFS 上的文件都是超大文件,當(dāng)上傳完這個(gè)文件到 hadoop 集群后,會(huì)進(jìn)行文件切塊,分發(fā),復(fù)制等操作。如果文件被修改,會(huì)導(dǎo)致重新出發(fā)這個(gè)過程,而這個(gè)過程耗時(shí)是最長(zhǎng)的。所以在 hadoop 里,不允許對(duì)上傳到 HDFS 上文件做修改 (隨機(jī)寫),在 2.0 版本時(shí)可以在后面追加數(shù)據(jù)。但不建議。
5、高容錯(cuò)性:
數(shù)據(jù)自動(dòng)保存多個(gè)副本,副本丟失后自動(dòng)恢復(fù)。可構(gòu)建在廉價(jià)機(jī)上,實(shí)現(xiàn)線性 (橫向) 擴(kuò)展,當(dāng)集群增加新節(jié)點(diǎn)之后,namenode 也可以感知,將數(shù)據(jù)分發(fā)和備份到相應(yīng)的節(jié)點(diǎn)上。
6、商用硬件
Hadoop 并不需要運(yùn)行在昂貴且高可靠的硬件上,它是設(shè)計(jì)運(yùn)行在商用硬件的集群上的,因此至少對(duì)于龐大的集群來說,節(jié)點(diǎn)故障的幾率還是非常高的。HDFS 遇到上述故障時(shí),被設(shè)計(jì)成能夠繼續(xù)運(yùn)行且不讓用戶察覺到明顯的中斷。
二、HDFS 缺點(diǎn)
1、不能做到低延遲
由于 hadoop 針對(duì)高數(shù)據(jù)吞吐量做了優(yōu)化,犧牲了獲取數(shù)據(jù)的延遲,所以對(duì)于低延遲數(shù)據(jù)訪問,不適合 hadoop,對(duì)于低延遲的訪問需求,HBase 是更好的選擇,
2、不適合大量的小文件存儲(chǔ)
由于 namenode 將文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)在內(nèi)存中,因此該文件系統(tǒng)所能存儲(chǔ)的文件總數(shù)受限于 namenode 的內(nèi)存容量,根據(jù)經(jīng)驗(yàn),每個(gè)文件、目錄和數(shù)據(jù)塊的存儲(chǔ)信息大約占 150 字節(jié)。因此,如果大量的小文件存儲(chǔ),每個(gè)小文件會(huì)占一個(gè)數(shù)據(jù)塊,會(huì)使用大量的內(nèi)存,有可能超過當(dāng)前硬件的能力。
3、不適合多用戶寫入文件,修改文件
Hadoop2.0 雖然支持文件的追加功能,但是還是不建議對(duì) HDFS 上的 文件進(jìn)行修改,因?yàn)樾实汀?/span>
對(duì)于上傳到 HDFS 上的文件,不支持修改文件,HDFS 適合一次寫入,多次讀取的場(chǎng)景。
HDFS 不支持多用戶同時(shí)執(zhí)行寫操作,即同一時(shí)間,只能有一個(gè)用戶執(zhí)行寫操作。
聯(lián)系客服