日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop- MapReduce分布式计算框架原理

發(fā)布時間:2025/7/25 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop- MapReduce分布式计算框架原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

分布式計算:  

原則:移動計算而盡可能減少移動數(shù)據(jù)(減少網(wǎng)絡(luò)開銷)

分布式計算其實就是將單臺機器上的計算拓展到多臺機器上并行計算。

?

MapReduce是一種編程模型。Hadoop MapReduce采用Master/slave 結(jié)構(gòu)。只要按照其編程規(guī)范,只需要編寫少量的業(yè)務(wù)邏輯代碼即可實現(xiàn)一個強大的海量數(shù)據(jù)并發(fā)處理程序。核心思想是:分而治之。Mapper負責分,把一個復(fù)雜的業(yè)務(wù),任務(wù)分成若干個簡單的任務(wù)分發(fā)到網(wǎng)絡(luò)上的每個節(jié)點并行執(zhí)行,最后把Map階段的結(jié)果由Reduce進行匯總,輸出到HDFS中,大大縮短了數(shù)據(jù)處理的時間開銷。MapReduce就是以這樣一種可靠且容錯的方式進行大規(guī)模集群海量數(shù)據(jù)進行數(shù)據(jù)處理,數(shù)據(jù)挖掘,機器學習等方面的操作。

MapReduce分布式計算框架體系結(jié)構(gòu)

首先理解幾個概念:

Master:是整個集群的唯一的全局管理者,功能包括:作業(yè)管理、狀態(tài)監(jiān)控和任務(wù)調(diào)度等,即MapReduce中的JobTracker slave:負責任務(wù)的執(zhí)行和任務(wù)狀態(tài)回報,即MapReduce中的TaskTracker ?

Job&Task:在hadoop mapreduce中,一個 Job 它是一個任務(wù),主業(yè)務(wù)。一個Job 可以拆分成多個Task,map Task與reduce Task。

?

JobTracker:JobTracker是一個后臺服務(wù)進程,啟動之后,會一直監(jiān)聽并接收來自各個TaskTracker發(fā)送的心跳信息,包括資源使用情況和任務(wù)運行情況等信息?

JobTracker的主要功能: 作業(yè)控制:在hadoop中每個應(yīng)用程序被表示成一個作業(yè),每個作業(yè)又被分成多個任務(wù),JobTracker的作業(yè)控制模塊則負責作業(yè)的分解和狀態(tài)監(jiān)控。 最重要的狀態(tài)監(jiān)控:主要包括TaskTracker狀態(tài)監(jiān)控、作業(yè)監(jiān)控和任務(wù)狀態(tài)監(jiān)控。主要作用:容錯和為任務(wù)調(diào)度提供決策依據(jù)。 資源管理。 TaskTracker:TaskTracker是JobTracker和Task之間的橋梁:一方面,從JobTracker接收并執(zhí)行各種命令:運行任務(wù)、殺死任務(wù)等;另一方面講本地節(jié)點上各個任務(wù)狀態(tài)通過心跳周期性匯報給JobTracker。TaskTracker與JobTracker和Task之間采用了RPC協(xié)議進行通信。 TaskTracker的功能: 匯報心跳:Tracker周期性講所有節(jié)點上各種信息通過心跳機制匯報給JobTracker。這些信息包括兩部分: *機器級別信息:節(jié)點健康情況,資源使用情況等。 *任務(wù)級別信息:任務(wù)執(zhí)行進度、任務(wù)運行狀態(tài)等。 ?執(zhí)行命令:JobTracker會給TaskTracker下達各種命令,主要包括:啟動任務(wù)(LaunchTaskAction)、提交任務(wù)(CommunitTaskAction),殺死任務(wù)(KillJobAction)和重新初始化(TaskTrackerReinitAction)。

?

MapReduce體系結(jié)構(gòu)里有兩類節(jié)點,第一個是JobTracker,它是一個master管理節(jié)點,另一個是TaskTracker。客戶端(Client)提交一個任務(wù)(Job),JobTracker把他提交到候選列隊里,將Job拆分成map任務(wù)(Task)和reduce任務(wù)(Task),把map任務(wù)和reduce任務(wù)分給TaskTracker執(zhí)行。在mapreduce編程模型里,Task一般起在和DataNode所在的同一臺物理機上。如下圖(圖片來自網(wǎng)絡(luò)):

?

MapReduce分布式工作流程

1.分布式的運算程序往往需要分成至少2個階段

  MapReduce的第一階段是Map,運行的實例叫Map Task,第二階段是Reduce,運行的實例叫Reduce Task。每個Task只需要完成后把文件輸出到自己的工作目錄即可。

2.第一階段的Task并發(fā)實例各司其職,各自為政,互不相干,完全并行

3.第二階段的Task并發(fā)實例互不相干,但是他們的數(shù)據(jù)以來于上一階段的所有Task并發(fā)實例的輸出

4.MapReduce編程模型,只能包含一個Map階段和一個Reduce階段,如果用戶的業(yè)務(wù)邏輯非常復(fù)雜,那就只能來多個mapreduce程序,串行運行

MapReduce容錯機制

?  MapReduce的第一階段是Map,運行的實例叫Map Task,第二階段是Reduce,運行的實例叫Reduce Task。第二階段Reduce要等第一階段Map上的Map Task完成之后才能開始。如果Map Task運行失敗,如何處理? 這時候就要啟動mapreduce的容錯機制了,它允許整個執(zhí)行過程中TaskTracker中間出現(xiàn)宕機,發(fā)生故障,JVM發(fā)生重啟等等這些情況,允許它出錯。處理的方式: 1.重復(fù)執(zhí)行   有可能是job本身問題,硬件問題,數(shù)據(jù)的問題都有可能,默認會重新執(zhí)行,如果重新執(zhí)行4次都失敗就放棄執(zhí)行。 2.推測執(zhí)行   由于要Map端所有任務(wù)執(zhí)行完才會執(zhí)行reduce任務(wù),可能存在某個節(jié)點完成的特別慢,JobTracker發(fā)現(xiàn)它很慢的時候,說明它出現(xiàn)了問題,另外找一臺TaskTrack執(zhí)行同一任務(wù),哪個先完成就取該結(jié)果,結(jié)束另一個TaskTracker。

總結(jié)

以上知識體系基本能解決一下幾個問題了:

1.你的MapTask如何進行任務(wù)分配? 2.ReduceTask如何分配要處理的任務(wù)? 3.MapTask和ReduceTask之間如何銜接? 4.如果某MapTask運行失敗,如何處理? master監(jiān)控到有MapTask失敗就會啟動在另一臺機器上啟動maptask,主要由MapReduce容錯機制處理。詳情看上面的MapReduce容錯機制。 5.mapreduce如果都需要自己自己負責輸出的分區(qū),很麻煩,所以有一個master管理,MapTask只需要把文件輸出到自己的工作目錄即可,ReduceTask執(zhí)行時由master中的管理節(jié)點JobTracker把MapTask的資源調(diào)動給ReduceTask,發(fā)揮資源管理作用。 MapReduce運行的兩種模式 MapReduce運行模式分為兩種,本地模式和運行在yarn上 拓展:MapReduce的輸出目錄原則上是不能存在的,已經(jīng)存在的話會報錯。

轉(zhuǎn)載于:https://www.cnblogs.com/RzCong/p/7362352.html

總結(jié)

以上是生活随笔為你收集整理的Hadoop- MapReduce分布式计算框架原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。