成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MapReduce運行原理

大數據
MapReduce是一種編程模型,用于大規模數據集(大于1TB)的并行運算。MapReduce采用”分而治之”的思想,把對大規模數據集的操作,分發給一個主節點管理下的各個分節點共同完成,然后通過整合各個節點的中間結果,得到最終結果。

MapReduce是一種編程模型,用于大規模數據集(大于1TB)的并行運算。MapReduce采用”分而治之”的思想,把對大規模數據集的操作,分發給一個主節點管理下的各個分節點共同完成,然后通過整合各個節點的中間結果,得到最終結果。簡單地說,MapReduce就是”任務的分解與結果的匯總”。

MapReduce架構

先來看一下MapReduce1.0的架構圖

 

上圖中的TaskTracker對應HDFS中的DataNode,

在MapReduce1.x中,用于執行MapReduce任務的機器角色有兩個:一個是JobTracker;另一個是TaskTracker,JobTracker是用于調度工作的,TaskTracker是用于執行工作的。一個Hadoop集群中只有一臺JobTracker。

流程分析

  1. 在客戶端啟動任務,客戶端向JobTracker請求一個Job ID。
  2. 將運行任務所需要的程序文件復制到HDFS上,包括MapReduce程序打包的JAR文件、配置文件和客戶端計算所得的輸入劃分信息。這些文件都存放在JobTracker專門為該任務創建的文件夾中。文件夾名Job ID。
  3. JobTracker接收到任務后,將其放在一個隊列里,等待調度器對其進行調度,當作業調度器根據自己的調度算法調度到該任務時,會根據輸入劃分信息創建N個map任務,并將map任務分配給N個TaskTracker(DataNode)執行。
  4. map任務不是隨隨便便地分配給某個TaskTracker的,這里有個概念叫:數據本地化(Data-Local)。意思是:將map任務分配給含有該map處理的數據塊的TaskTracker上,同時將程序JAR包復制到該TaskTracker上來運行,這叫“運算移動,數據不移動”。而分配reduce任務時并不考慮數據本地化。
  5. TaskTracker每隔一段時間會給JobTracker發送一個Heartbeat(心跳),告訴JobTracker它依然在運行,同時心跳中還攜帶著很多的信息,比如當前map任務完成的進度等信息。當JobTracker收到作業的***一個任務完成信息時,便把該作業設置成“成功”。當JobClient查詢狀態時,它將得知任務已完成,便顯示一條消息給用戶。

以上是在客戶端、JobTracker、TaskTracker的層次來分析MapReduce的工作原理的,下面我們再細致一點,從map任務和reduce任務的層次來分析分析吧。

MapReduce運行流程

以wordcount為例,運行的詳細流程圖如下

 

1.split階段

首先mapreduce會根據要運行的大文件來進行split,每個輸入分片(input split)針對一個map任務,輸入分片(input split)存儲的并非數據本身,而是一個分片長度和一個記錄數據位置的數組。輸入分片(input split)往往和HDFS的block(塊)關系很密切,假如我們設定HDFS的塊的大小是64MB,我們運行的大文件是64x10M,mapreduce會分為10個map任務,每個map任務都存在于它所要計算的block(塊)的DataNode上。

2.map階段

map階段就是程序員編寫的map函數了,因此map函數效率相對好控制,而且一般map操作都是本地化操作也就是在數據存儲節點上進行。本例的map函數如下:

 

  1. publicclassWCMapperextendsMapperLongWritable,Text,Text,IntWritable{@Override  
  2. protectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{  
  3. Stringstr=value.toString();  
  4. String[]strs=StringUtils.split(str,'');for(Strings:strs){  
  5. context.write(newText(s),newIntWritable(1));  
  6.  
  7.  

根據空格切分單詞,計數為1,生成key為單詞,value為出現1次的map供后續計算。

3.shuffle階段

shuffle階段主要負責將map端生成的數據傳遞給reduce端,因此shuffle分為在map端的過程和在reduce端的執行過程。

先看map端:

 

  1. map首先進行數據結果數據屬于哪個partition的判斷,其中一個partition對應一個reduce,一般通過key.hash()%reduce個數來實現。
  2. 把map數據寫入到Memory Buffer(內存緩沖區),到達80%閥值,開啟溢寫進磁盤過程,同時進行key排序,如果有combiner步驟,則會對相同的key做歸并處理,最終多個溢寫文件合并為一個文件。

reduce端:

 

reduce節點從各個map節點拉取存在磁盤上的數據放到Memory Buffer(內存緩沖區),同理將各個map的數據進行合并并存到磁盤,最終磁盤的數據和緩沖區剩下的20%合并傳給reduce階段。

4.reduce階段

reduce對shuffle階段傳來的數據進行***的整理合并

 

  1. publicclassWCReducerextendsReducerText,IntWritable,Text,IntWritable{@Override  
  2. protectedvoidreduce(Textkey,IterableIntWritablevalues,Contextcontext)throwsIOException,InterruptedException{intsum=0;for(IntWritablei:values){  
  3. sum+=i.get();  
  4.  
  5. context.write(key,newIntWritable(sum));  
  6.  

MapReduce的優缺點

優點:

  1. 易于編程;
  2. 良好的擴展性;
  3. 高容錯性;

4.適合PB級別以上的大數據的分布式離線批處理。

缺點:

  1. 難以實時計算(MapReduce處理的是存儲在本地磁盤上的離線數據)
  2. 不能流式計算(MapReduce設計處理的數據源是靜態的)
  3. 難以DAG計算MapReduce這些并行計算大都是基于非循環的數據流模型,也就是說,一次計算過程中,不同計算節點之間保持高度并行,這樣的數據流模型使得那些需要反復使用一個特定數據集的迭代算法無法高效地運行。
責任編輯:未麗燕 來源: 搜狐
相關推薦

2016-09-19 15:14:41

Hadoop Hadoop MapRWordCount

2019-12-06 10:59:20

JavaScript運行引擎

2021-11-26 17:17:43

Android廣播運行原理源碼分析

2024-06-20 08:06:51

2010-09-17 15:25:03

JAVAJVM

2022-07-26 07:14:52

Docker宿主命令

2019-09-19 14:50:15

區塊鏈運行原理

2018-03-21 11:05:26

Spark大數據應用程序

2020-10-10 08:20:27

Spring Boot運行原理代碼

2011-10-18 14:00:30

MapReduce分布式流式

2019-03-21 11:03:47

HDFSMapReduceHadoop

2015-11-16 11:17:30

PHP底層運行機制原理

2023-09-22 10:45:47

云原生云計算

2021-12-20 00:03:38

Webpack運行機制

2017-04-19 11:17:48

SparkHadoopMapReduce

2014-03-20 09:49:51

MapReduce

2020-01-13 10:45:35

JavaScript解析前端

2010-05-06 17:54:54

Oracle鎖

2011-01-12 09:53:24

Linux運行級別

2020-08-13 11:24:45

Java技術開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精三区欧美精三区 | 中文字幕av网 | 亚洲精品一区二区网址 | www国产亚洲精品久久网站 | 成人激情视频免费在线观看 | 91麻豆久久久 | 国产高清精品一区二区三区 | 免费中文字幕 | 久久久亚洲精品视频 | 91麻豆产精品久久久久久夏晴子 | 97色在线视频 | 成人一区av| 祝你幸福电影在线观看 | 中国av在线免费观看 | 国产一级特黄视频 | 黄色免费在线观看网站 | 91久久国产综合久久91精品网站 | 久久婷婷色 | 欧美视频成人 | 久久综合狠狠综合久久 | 国产专区在线 | 欧美一级免费看 | 伊人精品视频 | 亚洲成av人影片在线观看 | 成人在线视频观看 | 日韩中文字幕一区二区 | 国产免费一区二区 | 精品伊人久久 | 久久免费国产视频 | 国产精品久久久久久久久久 | 成人精品国产免费网站 | 国产一区二区在线91 | av免费网站在线观看 | 亚洲先锋影音 | www.亚洲视频 | 天天操欧美| 欧美一区二区三区精品 | 日韩精品一区二区三区在线观看 | 欧美成人二区 | a黄在线观看 | 91视频一区 |