Hadoop中HDFS和MapReduce節點基本簡介

    Hadoop提供存儲文件和分析文件的機制。node

    HDFS負責文件的存儲,MapReduce負責文件的分析過程。服務器

HDFS主要組件由NameNodeDataNode組成ide

HDFS文件切分紅塊(默認大小64M),以塊爲單位,每一個塊有多個副本存儲在不一樣的機器上,副本數可在文件生成時指定(默認3函數

NameNode是主節點,存儲文件的元數據如文件名,文件目錄結構,文件屬性(生成時間,副本數,文件權限),以及每一個文件的塊列表以及塊所在的DataNode等等。它是一箇中心服務器,單一節,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問,它維護着每一個文件系統樹和整棵樹內全部的文件和目錄,這些信息已兩個文件形式永久保存在本地磁盤上:命名控件鏡像文件(Fsp_w_picpath)和編輯日誌(Edit log)。文件操做,NameNode負責文件元數據的操做,DataNode負責處理文件內容的讀寫請求,跟文件內容相關的數據流不通過NameNode,只會詢問它跟那個DataNode聯繫,不然NameNode會成爲系統的瓶頸oop

DataNode在本地文件系統存儲文件塊數據,以及塊數據的校驗和。能夠建立、刪除、移動或重命名文件,當文件建立、寫入和關閉以後不能修改文件內容。一個數據塊在DataNode以文件存儲在磁盤上,包括兩個文件,一個是數據自己,一個是元數據包括數據塊的長度,塊數據的校驗和,以及時間戳。DataNode啓動後向NameNode註冊,經過後,週期性(1小時)向NameNode上報全部的塊信息。心跳是每3秒一次,心跳返回結果帶有NameNode給該DataNode的命令如複製塊數據到另外一臺機器,或刪除某個數據塊。若是超過10分鐘沒有收到某個DataNode 的心跳,則認爲該節點不可用。spa

DataNode磁盤掛了,都會盡快的通知NameNode。若是該機器掛了,因爲datanode3秒鐘向namenode發送心跳,若是10分鐘datanode沒有向namenode發送心跳,則namenode認爲該datanode已經deadnamenode將取出該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和多個TaskTrackerJobTracker主要就是調度TaskTracker來運行小任務,協調全部運行在系統上的做業。TaskTracker在運行小任務的時候,將進度報告給JobTracker,這樣一旦發生錯誤,就由JobTracker來負責調度另外一個TaskTrackerTaskTracker每隔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任務創建一個分區

相關文章
相關標籤/搜索