hadoop的工作原理?hadoop是什麼?hadoop的內部三大模塊是怎麼運行的?

hadoop是什麼?

hadoop是一個開源框架,主要包括三大塊內容:hdfs(分佈式文件存儲系統),yarn(資源管理和任務調度系統),mapreduce(分佈式計算框架);

hadoop的工作原理是什麼?或者說hadoop的內部工作機制是什麼?

想要知道上邊問題的答案,就首先需要了解hadoop這三大塊的架構,接下來就先一一介紹這三大塊分別是什麼?這三大塊內部都是怎麼運行的?

hdfs內部架構:

NameNode:存儲元數據信息,負責管理DataNode,給從節點分配任務,並起到監控從節點心跳的作用;

SecondaryNameNode:輔助NameNode管理,但是不可以替代NameNode,即使NameNode主節點宕機也輪不到SecondaryNameNode上位,而是由zookeeper中的選舉機制在DataNode從節點中重新選舉新的主節點。那麼SecondaryNameNode到底是輔助管理哪些工作呢?主節點啓動時會把元數據信息存在FSImage中,同時每次對主節點有操作記錄的行爲都存儲在Edits中,那麼這些小文件肯定會越來越多,佔據的空間也就會越來越大,這個時候就需要看時間長短和文件大小來決定什麼時候這些小文件合併,合併之後主節點將這些文件交由SecondaryNameNode輔助管理;

DataNode:從節點,主要用於存儲具體的數據,負責執行主節點分配的任務;

hdfs內部工作流程

客戶端上傳文件,把文件需要切分成若干個block塊,然後向主節點發出創建文件夾的請求,主節點創建成功後將消息告知給客戶端,同時主節點查找閒置的從節點,同時把從節點的地址信息告知給客戶端,從節點同時需要保證時刻和主節點的心跳彙報,然後客戶端按照主節點告知的具體存儲地址去找從節點,然後block塊依次進行上傳,這個時候上傳文件的時候每臺服務器上需要保證至少有三個副本信息,也就是爲什麼hdfs能保證數據不丟失的原因,這就是hdfs的內部工作流程;

Yarn內部架構:

ResourceManager主節點:負責資源管理和任務調度,監控着所有資源;

ApplicationMaster:負責具體每個應用程序的任務調度協調;

NodeManager從節點:負責對自己節點的維護;

Container:資源容器,容器中運行Task任務,或者更通俗點來說就是MapReduce計算的容器,敲黑板,劃重點!!!

yarn內部原理:

客戶端向主節點發出請求運行時所需的計算機資源,然後主節點也就是ResourceManager開始啓動最近的一個從節點,啓動該從節點的Container,運行ApplicationMaster,然後AM向主節點註冊自己,並且保持心跳信息的實時通信,AM向主節點申請需要的若干數目的Container容器,主節點向每個容器分配資源,同時AM把申請的容器地址告知給客戶端,客戶端把資源完整的發給每個容器,而AM就是負責對從節點進行監控管理.。

MapReduce內部架構:

Map:負責分,將文件分片處理,然後轉化成map階段自定義邏輯的K,V鍵值對形式;

shuffle:分區,排序,規約,分組,簡單直白點說就是map階段的輸出到reduce階段的輸入的中間過程這就是shuffle階段;

reduce:對數據進行全局彙總;

MapReduce內部工作原理機制:

原理其實就是上邊架構的順序,依次執行即可,此處就不再贅述了

重點了,現在開始講講這三大塊是怎麼連到一起的?

敲黑板!講重點了!!!!

hadoop工作原理是什麼?其中三大塊怎麼互相調用的?

當客戶端提向yarn資源調度框架提交job任務,並申請處理該job的資源,yarn調度系統返回給客戶端一個job任務的唯一標識ID,然後yarn這個資源管理調度系統馬上通知hdfs主節點,告知hdfs有任務過來了,準備接駕,然後hdfs主節點就開始去找能調用的閒置從節點,hdfs中具體怎麼運轉的上邊剛講過,然後hdfs找到可以調用的從節點地址後馬上返給yarn資源調度系統,然後資源調度系統拿着hdfs從節點的地址去找負責具體存儲的從節點datanode,然後把數據上傳到指定的從節點中。存儲到hdfs上之後,客戶端的任務可以開始進行真正的分析統計了,yarn資源調度系統開始給客戶端分配計算機資源,按照就近原則找一個從節點,啓動該從從節點的容器,然後啓動該從節點中的AM,這個時候當AM向yarn主節點申請相應數目的容器時,敲黑板了!主節點會分配給若干個容器給AM,然後這些容器去到hdfs上下載資源,其實這個時候這些分配的容器去下載資源的時候就已經進入到Map階段了,爲什麼這樣說呢?因爲mapreduce運行任務就是在容器中進行的,所以就開始對文件進行切分,分區,排序,規約,分組,聚合,全局彙總,最終將結果保存在hdfs上,這個時候可能就會有人問了?那hdfs上已經存儲過分析前的數據了,那分析時的容器中的數據要放在哪裏呢?如果想保存在hdfs上就保存在hdfs上,如果不想保存就直接釋放掉就ok了,具體看場景而定!

累死本宮了!總結完畢,碎覺!以上內容僅代表自己現階段的初步認識,如有不對之處還望指出!!!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章