Hadoop
Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。
用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。
Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統中的數據。
Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,則MapReduce為海量的數據提供了計算。
Hadoop特點和優缺點
一、 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優點
Hadoop是一個能夠讓用戶輕松架構和使用的分布式計算平臺。用戶可以輕松地在Hadoop上開發和運行處理海量數據的應用程序。它主要有以下幾個優點:
高可靠性。Hadoop按位存儲和處理數據的能力值得人們信賴。
高擴展性。Hadoop是在可用的計算機集簇間分配數據并完成計算任務的,這些集簇可以方便地擴展到數以千計的節點中。
高效性。Hadoop能夠在節點之間動態地移動數據,并保證各個節點的動態平衡,因此處理速度非常快。
高容錯性。Hadoop能夠自動保存數據的多個副本,并且能夠自動將失敗的任務重新分配。
低成本。與一體機、商用數據倉庫以及QlikView、Yonghong Z-Suite等數據集市相比,hadoop是開源的,項目的軟件成本因此會大大降低。
Hadoop帶有用Java語言編寫的框架,因此運行在 Linux 生產平臺上是非常理想的。Hadoop 上的應用程序也可以使用其他語言編寫,比如 C++。
評論
查看更多