Hadoop是由HTTP://www.aliyun.com/zixun/aggregation/14417.html">Apache基金會開發,這個一個開源的組織。 Hadoop的想法非常簡單直接,就是借用分散式程式,充分利用集群的能力來進行計算和存儲。 Hadoop聽上去比較抽象,而且一些介紹的文檔列舉了許多比較奇怪的名字,讓人感覺Hadoop好像很複雜。 事實上Hadoop是簡單和直接的。 Hadoop地核心就是3個元件,甚至可以說就是2個元件。 一個是分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。 另一個是MapReduce的應用(還有一個是HBase分散式NoSQL列資料庫.)
HDFS有著高容錯性的特點,並且設計用來部署在低成本的硬體上。 這個有非常大的意義。 由於保存資料的硬體的成本低廉,使用者就可以存儲大量的資料,而不必由於成本問題不得不丟棄或者封存老資料。 HDFS實現高容錯性的原理也非常簡單,就是因此它維護多個工作資料副本,確保能夠針對失敗的節點重新分佈處理。 另外,HDFS對超大檔的訪問進行了優化,利用流的形式訪問檔案系統中的資料來提高大檔訪問性能
MapReduce引擎 - MapReduce應用程式主要含有2個函數-Map 函數和Reduce 函數。 Map 接受一組資料並將其轉換為一個鍵/值對清單,Reduc函數接受 Map 函數生成的清單,然後根據它們的鍵(為每個鍵生成一個鍵/值對)縮小鍵/值對清單。 下面我舉一個簡單的例子大家就會明白了
假設輸入的是 I want to buy a cake, you want to buy a bike 運行Map 函數將得出以下的鍵/值對清單:
(I, 1) (want, 1) (to, 1) (buy, 1) (a, 1) (cake, 1)
(you, 1) (want, 1) (to, 1) (buy, 1) (a, 1) (bike, 1)
如果對這個鍵/值對清單應用 Reduce 函數處理,將得到以下一組排過序的鍵/值對:
(a, 2) (bike,1) (buy, 2) (cake, 1) (I, 1) (to, 2) (want, 2) (you, 1)
在Hadoop裡面由於MapReduce是可以由多個節點來並行處理的,比如 I want to buy a cake是一個節點處理,you want to buy a bike是另一個節點處理,然後將這兩個鍵/值對清單應用到另一個 Reduce 函數,這樣就體現的Hadoop並行處理的威力。
其他的就是在Hadoop生態環境裡面的一些工具和應用,像Hive,Pig等等。 只要理解了Hadoop的HDFS和MapReduce作用和原理,其實就算是理解了Hadoop的主要運作方式了