当前位置:
文档之家› MapReduce应用场景、原理、基本架构及使用方法
MapReduce应用场景、原理、基本架构及使用方法
7
MapReduce的实例—Wordcount
Ø Case 1:整个文件可以加载到内存中; ü sort datafile | uniq -c Ø Case 2:文件太大不能加载到内存中,但 <word, count>可以存放到内存中; Ø Case 3:文件太大无法加载到内存中,且 <word, count>也不行
ü R是Reduce Task数目 ü 允许用户自定义
Ø 很多情况需自定义Partitioner
ü 比如“hash(hostname(URL)) mod R”确保相同域 名的网页交给同一个Reduce Task处理
21
MapReduce编程模型 Ø Map阶段
ü InputFormat(默认TextInputFormat) ü Mapper ü Combiner(local reducer) ü Partitioner
10
MapReduce编程模型—WordCount
Ø Input: 一系列key/value对 Ø 用户提供两个函数实现:
ü map(k,v) à list(k1,v1) ü reduce(k1, list(v1)) à v2
Ø (k1,v1) 是中间key/value结果对 Ø Output:一系列(k2,v2)对
ü 输入数据格式解析:InputFormat ü 输入数据处理:Mapper ü 数据分组:Partitioner
Ø Reduce阶段由一定数量的Reduce Task组成
ü 数据远程拷贝 ü 数据按照key排序 ü 数据处理:Reducer
13 ü 数据输出格式:OutputFormat
⑥
Reduce Task
Container
④ Resource Manager ② Node Manager ③
⑤
MR AppMaster
Client
⑤ ⑤
Client Node Manager
Map Task
Container
⑥
MapReduce概述
MapReduce编程模型
MapReduce基本架构和原理
MapReduce程序设计
MapReduce的实例—Wordcount Ø 场景:有大量文件,里面存储了单词, 且一个单词占一行 Ø 任务:如何统计每个单词出现的次数? Ø 类似应用场景:
ü 搜索引擎中,统计最流行的K个搜索词; ü 统计搜索词频率,帮助优化搜索词提示
Ø Reduce阶段
ü Reducer ü OutputFormat(默认TextOutputFormat)
22
主要内容
1 2 3 4
MapReduce概述
MapReduce编程模型
MapReduce基本架构和原理
MapReduce程序设计
MapReduce 1.0架构
24
MapReduce 1.0(分布式计算框架)
ü 功能类似于 1.0中的JobTracker,但不负责资源管理; ü 功能包括:任务划分、资源申请并将之二次分配个Map Task和Reduce Task、任务状态监控和容错。
28
MapReduce 2.0运行流程
Map Task
Container
Client
Node Manager ①
11
MapReduce编程模型—WordCount
map(key, value): // key: document name; value: text of document for each word w in value: emit(w, 1) reduce(key, values): // key: a word; values: an iterator over counts result = 0 for each count v in values: result += v emit(key,result)
MR MR App App Mstr Mstr Container
27
MapReduce 2.0架构 Ø Client
ü 与MapReduce 1.0的Client类似,用户通过Client与YARN 交互,提交MapReduce作业,查询作业运行状态,管理作 业等。
Ø MRAppMaster
29
MapReduce 2.0容错性 Ø MRAppMaster容错性
ü 一旦运行失败,由YARN的ResourceManager负责重新启 动,最多重启次数可由用户设置,默认是2次。一旦超过 最高重启次数,则作业运行失败。
Ø Map Task/Reduce Task
ü Task周期性向MRAppMaster汇报心跳; ü 一旦Task挂掉,则MRAppMaster将为之重新申请资源, 并运行之。最多重新运行次数可由用户设置,默认4次。
ü 处理跨行问题
Ø 将分片数据解析成key/value对
ü 默认实现是TextInputFormat
Ø TextInputFormat
ü Key是行在文件中的偏移量,value是行内容 ü 若行被截断,则读取下一个block的前几个字符
16
MapReduce编程模型—Split与Block Ø Block
Ø MapReduce特点
ü 易于编程 ü 良好的扩展性 ü 高容错性 ü 适合PB级以上海量数据的离线处理
4
MapReduce的特色—不擅长的方面 Ø 实时计算
Edited by Foxit Reader Copyright(C) by Foxit Software Company,2005-2008 For Evaluation Only.
30
MapReduce计算框架—数据本地性
机架间带宽为2-10Gbps Switch 同一个机架 内任意两个 节点间共享 1Gbps带宽
Resource Scheduler
2 3,8 Node Manager 6 Map Map Task Task Container 7 2 5 5 4 Node Manager Container 6 Reduce Reduce Task Task 7 7 6 Container Map Map Task Task
12
MapReduce编程模型
Edited by Foxit Reader Copyright(C) by Foxit Software Company,2005-2008 For Evaluation Only.
Ø MapReduce将作业的整个运行过程分为两个阶段: Map阶段和Reduce阶段 Ø Map阶段由一定数量的Map Task组成
ü 像MySQL一样,在毫秒级或者秒级内返回结果
Ø 流式计算
ü MapReduce的输入数据集是静态的,不能动态变化 ü MapReduce自身的设计特点决定了数据源必须是静 态的
Ø DAG计算
ü 多个应用程序存在依赖关系,后一个应用程序的 输入为前一个的输出
5
主要内容
1 2 3 4
26
MapReduce 2.0架构
ResourceManager Client Client 1 Applications Manager
Edited by Foxit Reader Copyright(C) by Foxit Software Company,2005-2008 For Evaluation Only.
MapReduce编程模型—内部逻辑
HDFS Split 0
Read (Inputformat)
Split 1
Read (Inputformat)
Split 2
Read (Inputformat)
Split 3
Read (Inputformat)
Mapper
Map Task
Mapper c 1 c 1
18
MapReduce编程模型—Combiner
19
MapReduce编程模型—Combiner Ø Combiner可做看local reducer
ü 合并相同的key对应的value(wordcount例子) ü 通常与Reducer逻辑一样
Ø 好处
ü 减少Map Task输出数据量(磁盘IO) ü 减少Reduce-Map网络传输数据量(网络IO)
ü HDFS中最小的数据存储单位 ü 默认是64MB
Ø Spit
ü MapReduce中最小的计算单元 ü 默认与Block一一对应
Ø Block与Split
ü Split与Block是对应关系是任意的,可由用户控制
17
MapReduce编程模型—InputFormat
Edited by Foxit Reader Copyright(C) by Foxit Software Company,2005-2008 For Evaluation Only.
Shuffle & Sort c 1 c 1 Reducer
Write (Outputformat)
a
Write (Outputformat)
a 1
b 1
c 1
Reduce 阶段
Reducer
HDFS 14
Part-0
Part-1
Part-2
MapReduce编程模型—外部物理结构
15
MapReduce编程模型—InputFormat Ø 文件分片(InputSplit)方法
25
MapReduce 1.0(分布式计算框架)
Map Task
• Map引擎 • 解析每条数据记录,传递给
用户编写的map() • 将map()输出数据写入本地 磁盘(如果是map-only作业, 则直接写入HDFS)