hadoop概述

程式設計老司機發表於2018-05-10

Hadoop是什麼?

適合大資料的分散式儲存和計算平臺,作者Doug Cutting ,受google三篇大資料論文啟發。 Google File System中文版 Google MapReduce中文版 Google Bigtable中文版

Hadoop生態系統

Hadoop Ecosystem Map.png

Hadoop的核心專案

HDFS: hadoop distributed file system 分散式檔案系統 MapReduce: 平行計算框架,基於檔案系統進行資料計算。

HDFS的架構

主從結構 主節點只有一個:namenode,從節點有很多個:datanodes. namenode負責接收使用者操作請求,維護檔案系統的目錄結構。管理檔案與block之間的關係,block與datanode之間的關係。 datanode負責儲存檔案,檔案被分割成block儲存在磁碟上。為保證資料安全,檔案會有多個副本。

MapReduce

f535cdbe61002ca7249595176d10342f_r.jpg
Map階段:首先是讀資料,資料來源可能是文字檔案,表格,MySQL資料庫。這些資料通常是成千上萬的檔案(叫做shards),這些shards被當做一個邏輯輸入源。然後Map階段呼叫使用者實現的函式,叫做Mapper,獨立且並行的處理每個shard。對於每個shard,Mapper返回多個鍵值對,這是Map階段的輸出。 Shuffle階段:把鍵值對進行歸類,也就是把所有相同的鍵的鍵值對歸為一類。這個步驟的輸出是不同的鍵和該鍵的對應的值的資料流。 Reduce階段: 輸入當然是shuffle的輸出。然後Reduce階段呼叫使用者實現的函式,叫做Reducer,對每個不同的鍵和該鍵的對應的值的資料流進行獨立、並行的處理。每個reducer遍歷鍵對應的值,然後對值進行“置換”。這些置換通常指的的是值的聚合或者什麼也不處理,然後把鍵值對寫入資料庫、表格或者檔案中。

384cb151e2df2dc988d7b4ac4a6f294a_r.jpg