分布式处理框架MapReduce的深入简出

1).MapReduce的概述

2).MapReduce 编程模型

3).MapReduce架构

4).MapReduce编程

Google MapReduce论文,论文发表于2004年

Hadoop MapReduce是Google MapReduce的克隆版

MapReduce优点:海量数据离线处理&易开发&易运行

Mapreduce缺点:式时流程计算

接下来是讲的是单节点

MapReduce编程模型

WordCount:统计文件中每个单词出现的次数

需求:求wc

1)文件内容小:shell

2)文件内容大:TB GB ??? 如何解决大数据量的分析

==>URL(TOP N)==>wc的衍生

工作中的很多场景都是经过wordcount改造的

关键搜索词的提醒适用于大数据量

借助于分布式计算框架来解决了

MapReduce编程模型通过wordcount词频统计案例

数据输入-拆分-按照指定的是分隔符进行拆分并且给每个单词出现的1的次数-Shuffing对多个计算进行合并-Reduce对每个出现的次数进行合并-最后输出出来

分而制之 Map的输出作为Reduce的输入

MapReuce 是存储在HDFS上面的

MapReduce编程模型的Map和Reduce阶段

一个MapReduce会将作业拆分成Map和Reduce阶段

Map阶段:Map Tasks

Reduce阶段:Reduce Tasks

MapReduce执行步骤

1)准备map处理的输入数据

2)Mapper处理

3)Shuffle

4)Reduce处理

5)结果输出

 MapReduce核心概念

1)Split:交由MapReduce作业来处理的数据块

HDFS:blocksize 是HDFS中最小的存储单元 128m

split 是mapredece最小的计算单元

这两个是一一对应的

InputFormat:将我们的输入数据进行分片(split):  InputSplit[] getSplits(jobConf job,in TextInputFormat):处理文本格式的数据

OutputFormat:输出

Combiner

Partitioner

MapReduce1.x的架构图

 MapReduce2.x架构

MapReduce1.x的架构

1)JobTracker:JT

作业的管理者

将作业分解成一堆的任务:Task (MapTask和ReduceTask)

将任务分派给TaskTracker运行

作业的监控,容错处理(task作业挂了,重启task的机制)

在一定的时间间隔内,JT没有收到TT的心跳信息,,TT可能是挂了 ,TT上运行的任务会被只拍到其他TT上去执行

2)TaskTracker:TT

任务的执行者          干活的

在TT上执行的我们的Task(MapTask和ReduceTask)

会与JT进行交互:执行/启动/停止作业,发送心跳信息给JT

3)MapTask

自己开发的map任务交由TASK出来

解析每条记录的数据  交给自己的map方法处理

将map的输出结果写到本地磁盘(有的作业只有map没有Reduce==>HDFS)

ReduceTask

将Map Task输出的数据进行读取

按照数据进行分组传给我们自己编写的reduce方法处理

输出结果写到HDFS

MapReduce2.x的架构

 java版本wordcount功能的实现

原文地址:https://www.cnblogs.com/chenligeng/p/9351427.html