1. 程式人生 > >好程式設計師大資料教學點睛:Hadoop基礎篇

好程式設計師大資料教學點睛:Hadoop基礎篇

  好程式設計師大資料教學點睛:Hadoop基礎篇,Hadoop包含兩個部分:

1.Hadoop Distributed File System (Hadoop分散式檔案系統)

HDFS具有高容錯性,並且可以被部署在低價的硬體裝置之上。HDFS很適合那些有大資料集的應用,並且提供了對資料讀寫的高吞吐率。HDFS是一個master/slave的結構,就通常的部署來說,在master上只執行一個Namenode,而在每一個slave上執行一個Datanode。

HDFS支援傳統的層次檔案組織結構,同現有的一些檔案系統在操作上很類似,比如你可以建立和刪除一個檔案,把一個檔案從一個目錄移到另一個目錄,重新命名等等操作。Namenode管理著整個分散式檔案系統,對檔案系統的操作(如建立、刪除檔案和資料夾)都是通過Namenode來控制。

2、MapReduce的實現

MapReduce是Google 的一項重要技術,它是一個程式設計模型,用以進行大資料量的計算。對於大資料量的計算,通常採用的處理手法就是平行計算。至少現階段而言,對許多開發人員來說,平行計算還是一個比較遙遠的東西。MapReduce就是一種簡化平行計算的程式設計模型,它讓那些沒有多少平行計算經驗的開發人員也可以開發並行應用。

MapReduce的名字源於這個模型中的兩項核心操作:Map和 Reduce。簡單的說來,Map是把一組資料一對一的對映為另外的一組資料,其對映的規則由一個函式來指定,比如對[1, 2, 3, 4]進行乘2的對映就變成了[2, 4, 6, 8]。Reduce是對一組資料進行歸約,這個歸約的規則由一個函式指定,比如對[1, 2, 3, 4]進行求和的歸約得到結果是10,而對它進行求積