天天看點

Hadoop中HDFS和MapReduce節點基本簡介

    Hadoop提供存儲檔案和分析檔案的機制。

    HDFS負責檔案的存儲,MapReduce負責檔案的分析過程。

HDFS主要元件由NameNode和DataNode組成

HDFS檔案切分成塊(預設大小64M),以塊為機關,每個塊有多個副本存儲在不同的機器上,副本數可在檔案生成時指定(預設3)

NameNode是主節點,存儲檔案的中繼資料如檔案名,檔案目錄結構,檔案屬性(生成時間,副本數,檔案權限),以及每個檔案的塊清單以及塊所在的DataNode等等。它是一個中心伺服器,單一節,負責管理檔案系統的名字空間(namespace)以及用戶端對檔案的通路,它維護着每個檔案系統樹和整棵樹内所有的檔案和目錄,這些資訊已兩個檔案形式永久儲存在本地磁盤上:命名控件鏡像檔案(Fsimage)和編輯日志(Edit log)。檔案操作,NameNode負責檔案中繼資料的操作,DataNode負責處理檔案内容的讀寫請求,跟檔案内容相關的資料流不經過NameNode,隻會詢問它跟那個DataNode聯系,否則NameNode會成為系統的瓶頸

DataNode在本地檔案系統存儲檔案塊資料,以及塊資料的校驗和。可以建立、删除、移動或重命名檔案,當檔案建立、寫入和關閉之後不能修改檔案内容。一個資料塊在DataNode以檔案存儲在磁盤上,包括兩個檔案,一個是資料本身,一個是中繼資料包括資料塊的長度,塊資料的校驗和,以及時間戳。DataNode啟動後向NameNode注冊,通過後,周期性(1小時)向NameNode上報所有的塊資訊。心跳是每3秒一次,心跳傳回結果帶有NameNode給該DataNode的指令如複制塊資料到另一台機器,或删除某個資料塊。如果超過10分鐘沒有收到某個DataNode 的心跳,則認為該節點不可用。

當DataNode磁盤挂了,都會盡快的通知NameNode。如果該機器挂了,由于datanode每3秒鐘向namenode發送心跳,如果10分鐘datanode沒有向namenode發送心跳,則namenode認為該datanode已經dead,namenode将取出該datanode上對應的block,對其進行複制。

Map的資料流

   原理:利用一個輸入key/value pair集合來産生一個輸出的key/value pair集合

   Map函數:接受一個輸入的key/value pair值,然後産生一個中間key/value pair值的集合。

   Reduce函數:接受一個由Map函數産生的中間key值和其相關的一個value值集合,然後分析合并這些value值

   在MapReduce中作業(Job)是用戶端需要執行的工作單元,它包含了輸入資料、MapReduce程式和配置資訊。Hadoop将作業分為若幹個小任務(task)來執行,其中每個小任務又分為Map任務和Reduce任務。

兩類節點控制着作業執行過程:一個JobTracker和多個TaskTracker。JobTracker主要就是排程TaskTracker來運作小任務,協調所有運作在系統上的作業。TaskTracker在運作小任務的時候,将進度報告給JobTracker,這樣一旦發生錯誤,就由JobTracker來負責排程另一個TaskTracker。TaskTracker每隔3秒向JobTracker發送心跳來詢問是否有任務可做,如有則讓你分發任務給它,此時就是slave主動向master咨詢。

Hadoop對于使用者輸入的作業中的輸入資料,由MapReduce将其劃分為等長的小資料塊。

Hadoop僅僅在存儲有輸入資料的節點上運作Map任務,而且Map任務将其輸出寫入到本地磁盤中。當Map開始産生輸出時候,資料首先寫到記憶體的緩沖區中,進行預排序。這個預設的記憶體循環緩沖區大小為100MB,直到緩沖區達到80%的時候才将其資料spill到磁盤中。在輸出中間結果的時候,可以使用Combiner來對其進行一個簡單壓縮。當緩沖區達到閥值的時候,都會産生一個spill檔案,一個Map可能産生多個spill,在Map任務完成之前,都會将其産生的spill檔案進行歸并排序,然後删除臨時的spill檔案,通知TaskTracker自己的Map執行完畢.

隻要有一個Map任務完成,則Reduce就開始拷貝其輸出,一個Reduce有多個拷貝線程。Reduce會對其Map的輸出進行歸并排序處理。Reduce的輸出結果最終會存儲在HDFS中,當有多個reduce任務,每個map任務都會為每一個reduce任務建立一個分區

本文轉自 zhao_xiao_long 51CTO部落格,原文連結:http://blog.51cto.com/computerdragon/1258573

繼續閱讀