hdfs為什麼適合小文件
『壹』 hadoop框架是如何處理大量小文件的
hdfs不適合存小文件,要處理大量小文件,2個辦法。一 ,小文件合並成大文件再存。二,安裝hbase,以數據的形式存小文件。
『貳』 HDFS分布式文件系統具有哪些優點
HDFS分布式文件系統具有以下優點:
支持超大文件
支持超大文件。超大文件在這里指的是幾百M,幾百GB,甚至幾TB大小的文件。一般來說hadoop的文件系統會存儲TB級別或者PB級別的數據。所以在企業的應用中,數據節點有可能有上千個。
檢測和快速應對硬體故障
在集群的環境中,硬體故障是常見的問題。因為有上千台伺服器連接在一起,這樣會導致高故障率。因此故障檢測和自動恢復是hdfs文件系統的一個設計目標。
流式數據訪問
Hdfs的數據處理規模比較大,應用一次需要訪問大量的數據,同時這些應用一般都是批量處理,而不是用戶互動式處理。應用程序能以流的形式訪問數據集。主要的是數據的吞吐量,而不是訪問速度。
簡化的一致性模型
大部分hdfs操作文件時,需要一次寫入,多次讀取。在hdfs中,一個文件一旦經過創建、寫入、關閉後,一般就不需要修改了。這樣簡單的一致性模型,有利於提高吞吐量。
缺點
低延遲數據訪問
低延遲數據。如和用戶進行交互的應用,需要數據在毫秒或秒的范圍內得到響應。由於hadoop針對高數據吞吐量做了優化,犧牲了獲取數據的延遲,所以對於低延遲來說,不適合用hadoop來做。
大量的小文件
Hdfs支持超大的文件,是通過數據分布在數據節點,數據的元數據保存在名位元組點上。名位元組點的內存大小,決定了hdfs文件系統可保存的文件數量。雖然現在的系統內存都比較大,但大量的小文件還是會影響名位元組點的性能。
多用戶寫入文件、修改文件
Hdfs的文件只能有一次寫入,不支持寫入,也不支持修改。只有這樣數據的吞吐量才能大。
不支持超強的事務
沒有像關系型資料庫那樣,對事務有強有力的支持。
『叄』 hadoop的優點有哪些 a處理超大文件 b低延遲訪問數據
一、 Hadoop 特點
1、支持超大文件
一般來說,HDFS存儲的文件可以支持TB和PB級別的數據。
2、檢測和快速應對硬體故障
在集群環境中,硬體故障是常見性問題。因為有上千台伺服器連在一起,故障率高,因此故障檢測和自動恢復hdfs文件系統的一個設計目標。假設某一個datanode節點掛掉之後,因為數據備份,還可以從其他節點里找到。namenode通過心跳機制來檢測datanode是否還存在
3、流式數據訪問
HDFS的數據處理規模比較大,應用一次需要大量的數據,同時這些應用一般都是批量處理,而不是用戶互動式處理,應用程序能以流的形式訪問資料庫。主要的是數據的吞吐量,而不是訪問速度。訪問速度最終是要受制於網路和磁碟的速度,機器節點再多,也不能突破物理的局限,HDFS不適合於低延遲的數據訪問,HDFS的是高吞吐量。
4、簡化的一致性模型
對於外部使用用戶,不需要了解hadoop底層細節,比如文件的切塊,文件的存儲,節點的管理。
一個文件存儲在HDFS上後,適合一次寫入,多次寫出的場景once-write-read-many。因為存儲在HDFS上的文件都是超大文件,當上傳完這個文件到hadoop集群後,會進行文件切塊,分發,復制等操作。如果文件被修改,會導致重新出發這個過程,而這個過程耗時是最長的。所以在hadoop里,不允許對上傳到HDFS上文件做修改(隨機寫),在2.0版本時可以在後面追加數據。但不建議。
5、高容錯性
數據自動保存多個副本,副本丟失後自動恢復。可構建在廉價機上,實現線性(橫向)擴展,當集群增加新節點之後,namenode也可以感知,將數據分發和備份到相應的節點上。
6、商用硬體
Hadoop並不需要運行在昂貴且高可靠的硬體上,它是設計運行在商用硬體的集群上的,因此至少對於龐大的集群來說,節點故障的幾率還是非常高的。HDFS遇到上述故障時,被設計成能夠繼續運行且不讓用戶察覺到明顯的中斷。
二、HDFS缺點
1、不能做到低延遲
由於hadoop針對高數據吞吐量做了優化,犧牲了獲取數據的延遲,所以對於低延遲數據訪問,不適合hadoop,對於低延遲的訪問需求,HBase是更好的選擇,
2、不適合大量的小文件存儲
由於namenode將文件系統的元數據存儲在內存中,因此該文件系統所能存儲的文件總數受限於namenode的內存容量,根據經驗,每個文件、目錄和數據塊的存儲信息大約佔150位元組。因此,如果大量的小文件存儲,每個小文件會佔一個數據塊,會使用大量的內存,有可能超過當前硬體的能力。
3、不適合多用戶寫入文件,修改文件
Hadoop2.0雖然支持文件的追加功能,但是還是不建議對HDFS上的 文件進行修改,因為效率低。
對於上傳到HDFS上的文件,不支持修改文件,HDFS適合一次寫入,多次讀取的場景。
HDFS不支持多用戶同時執行寫操作,即同一時間,只能有一個用戶執行寫操作。
『肆』 hdfs為什麼不適合處理大量的小文件
在HDFS中,namenode將文件系統中的元數據存儲在內存中,因此,HDFS所能存儲的文件數量會受到namenode內存的限制。一般來說,每個文件、目錄、數據塊的存儲信息大約佔150個位元組,根據當前namenode的內存空間的配置,就可以計算出大約能容納多少個文件了。
有一種誤解就是,之所以HDFS不適合大量小文件,是因為即使很小的文件也會佔用一個塊的存儲空間。這是錯誤的,HDFS與其它文件系統不同,小於一個塊大小的文件,不會佔用一個塊的空間。
『伍』 hdfs適合存儲多大的單個文件
首先hdfs是建立在多個機器文件系統上的一個邏輯上的文件系統。它的底層數據以數據塊方式存儲,塊大小可進行調整。
假如你設置一個數據塊大小為256M,上傳一個1G的文件,它底層會將這個文件分成4塊存儲,每個塊256M。你在hdfs上看到的是一個完整的文件,隨時可對這個文件進行操作,無需關注它的存儲。就像你在操作系統上操作文件一樣,無需關注它存在那個磁碟哪個扇區
『陸』 Hadoop存儲小文件有什麼問題,希望有人能回答全面些
hadoop主要是hdfs和maprece兩大框架,hdfs用來存儲文件,maprece用來處理文件進行計算。1.首先,對於hdfs,dn負責存儲文件,以及文件的副本,而nn負責存儲文件的元數據,例如文件的塊信息,以及位置信息等,這些數據會保存在nn的內存中,當存在很多的小文件時,每個小文件nn存儲的元數據都是一樣的,所以N個小文件會佔用nn大量的內存,增大nn的負擔。
2.而對於maprece來說,map的輸入默認是一個輸入文件對應一個map任務,所以如果不做特殊處理在使用maprece處理這些小文件時會一個小文件產生一個map。這樣的話每個map只處理一個小文件,會造成很大的資源浪費,同時也會降低maprece的執行效率。
以上是我自己的理解,可能還有其他的原因。建議去網上自行搜索一些文章閱讀。
『柒』 小文件適合hadoop嗎
不適合
現在HDFS里比較大的一個問題是小文件太多,造成元數據處理負擔太重。
單純從存儲角度,文件越大越好。但是其他答案也指出了,文件太大可能其他處理會受影響。
如果是GB這個級別的,還是很適合HDFS的。
『捌』 hdfs小文件過多,會帶來什麼問題
因為在hdfs 中,數據的元數據信息是保存在NameNode上的,hdfs本身的作用就是用來存儲海量文件的,首先小文件過多的話,會增加NameNode 的壓力,,因為NameNode是要接收集群中所有的DataNode的心跳信息,來確定元數據的信息變化的,另外,文件中可使用的block塊的個數是有限制的,hadoop用來處理數據的話,小文件的延遲,和數據量雖然很小,但是有些地方和大文件所耗的時間相同,所以最好做優化,避免這種情況的發生。
『玖』 hdfs的特點有哪些
hdfs的特點
一、hdfs的優點
1.支持海量數據的存儲:一般來說,HDFS存儲的文件可以支持TB和PB級別的數據。
2.檢測和快速應對硬體故障:在集群環境中,硬體故障是常見性問題。因為有上千台伺服器連在一起,故障率很高,因此故障檢測和自動恢復hdfs文件系統的一個設計目標。假設某一個datanode掛掉之後,因為數據是有備份的,還可以從其他節點里找到。namenode通過心跳機制來檢測datanode是否還存活。
3.流式數據訪問:(HDFS不能做到低延遲的數據訪問,但是HDFS的吞吐量大)=》Hadoop適用於處理離線數據,不適合處理實時數據。HDFS的數據處理規模比較大,應用一次需要大量的數據,同時這些應用一般都是批量處理,而不是用戶互動式處理。應用程序能以流的形式訪問資料庫。主要的是數據的吞吐量,而不是訪問速度。訪問速度最終是要受制於網路和磁碟的速度,機器節點再多,也不能突破物理的局限。
4.簡化的一致性模型:對於外部使用用戶,不需要了解hadoop底層細節,比如文件的切塊,文件的存儲,節點的管理。一個文件存儲在HDFS上後,適合一次寫入,多次讀取的場景。因為存儲在HDFS上的文件都是超大文件,當上傳完這個文件到hadoop集群後,會進行文件切塊,分發,復制等操作。如果文件被修改,會導致重新觸發這個過程,而這個過程耗時是最長的。所以在hadoop里,2.0版本允許數據的追加,單不允許數據的修改。
5.高容錯性:數據自動保存多個副本,副本丟失後自動恢復。可構建在廉價的機器上,實現線性擴展。當集群增加新節點之後,namenode也可以感知,將數據分發和備份到相應的節點上。
6.商用硬體:Hadoop並不需要運行在昂貴且高可靠的硬體上。它是設計運行在商用硬體(在各種零售店都能買到的普通硬體)的集群上的,因此至少對於龐大的集群來說,節點故障的幾率還是非常高的。HDFS遇到上述故障時,被設計成能夠繼續運行且不讓用戶察覺到明顯的中斷。
二、HDFS缺點(局限性)
1、不能做到低延遲數據訪問:由於hadoop針對高數據吞吐量做了優化,犧牲了獲取數據的延遲,所以對於低延遲數據訪問,不適合hadoop。對於低延遲的訪問需求,HBase是更好的選擇。
2、不適合大量的小文件存儲 :由於namenode將文件系統的元數據存儲在內存中,因此該文件系統所能存儲的文件總數受限於namenode的內存容量。根據經驗,每個文件、目錄和數據塊的存儲信息大約佔150位元組。因此,如果有一百萬個小文件,每個小文件都會佔一個數據塊,那至少需要300MB內存。如果是上億級別的,就會超出當前硬體的能力。
3、修改文件:對於上傳到HDFS上的文件,不支持修改文件。Hadoop2.0雖然支持了文件的追加功能,但是還是不建議對HDFS上的文件進行修改。因為效率低下。HDFS適合一次寫入,然後多次讀取的場景。
4、不支持用戶的並行寫:同一時間內,只能有一個用戶執行寫操作。
『拾』 在hadoop項目結構中h dfs指的是什麼
HDFS(Hadoop Distributed File System)是Hadoop項目的核心子項目,是分布式計算中數據存儲管理的基礎,是基於流數據模式訪問和處理超大文件的需求而開發的,可以運行於廉價的商用伺服器上。
HDFS 具有以下優點:
1、高容錯性
數據自動保存多個副本。它通過增加副本的形式,提高容錯性。某一個副本丟失以後,它可以自動恢復,這是由 HDFS 內部機制實現的,我們不必關心。
2、適合批處理
它是通過移動計算而不是移動數據。它會把數據位置暴露給計算框架。
3、適合大數據處理
處理數據達到 GB、TB、甚至PB級別的數據。能夠處理百萬規模以上的文件數量,數量相當之大。能夠處理10K節點的規模。
4、流式文件訪問
一次寫入,多次讀取。文件一旦寫入不能修改,只能追加。它能保證數據的一致性。
5、可構建在廉價機器上
它通過多副本機制,提高可靠性。它提供了容錯和恢復機制。比如某一個副本丟失,可以通過其它副本來恢復。
HDFS 也有它的劣勢,並不適合所有的場合:
1、低延時數據訪問
比如毫秒級的來存儲數據,這是不行的,它做不到。它適合高吞吐率的場景,就是在某一時間內寫入大量的數據。但是它在低延時的情況下是不行的,比如毫秒級以內讀取數據,這樣它是很難做到的。
2、小文件存儲
存儲大量小文件(這里的小文件是指小於HDFS系統的Block大小的文件(默認64M))的話,它會佔用 NameNode大量的內存來存儲文件、目錄和塊信息。這樣是不可取的,因為NameNode的內存總是有限的。
3、並發寫入、文件隨機修改
一個文件只能有一個寫,不允許多個線程同時寫。僅支持數據 append(追加),不支持文件的隨機修改。