MapReduce框架(Map/Reduce) MapTask/ReduceTask 数据分发机制
MapTask接口实现类 : 对一行数据进行处理,map方法
ReduceTask接口实现类:对一组数据进行处理,reduce方法
MapReduce工作机制
划分输入切片: 数据切片
job.split文件
分布式数据处理
K相同的KV数据分配给同个ReduceTask
组合拳:CompareTo + Partation + Group
分区控制/分组控制
MapReduce编程模型
map task的实现
读数据:TextInputFormat
SequenceFileInputFormat
DBInputFormat
portation 分区
调用Partitaioner 的getPartition 决定数据分区
reduce task的实现
读数据:下载"区"数据,并且合并多个"同区"并且排序
写数据:TextInputFormat
SequenceFileOutputFormat
DBOutputFormat
GroupingComparator:分组
确定那些数据属于同一组
对倾斜数据的处理
1. 通过Combiner组件进行maptask端局部聚合数据减轻倾斜影响
2. 通过打算倾斜数据来消除倾斜的影响,通过在Key值后面添加随机值,这样就可以均衡的分布在ReduceTaks端。
MapReduce编程模型具体实现及处理流程:
MRAppMaster
YarnChild(maptask/reducetask)
main()
1. MapTask:
->TextInputFormat
->LineRecordFromat
->Mapper
->map()
->context ---> MapOutputCollector 环形缓存,存在大小限制
->spilter (80%) 分区(partation),排序(compare)
->write 溢出文件(可能包含多个文件,有序文件) 写本地磁盘
->merge 分区有序,分区索引文件
多个maptask会生成多个merge文件
2. Shuffle: Store && Rest
map task 生成的数据传输给reduce task 的过程 多个maptask会生成多个merge文件,这些文件会保存在NodeManager中,NodeManager具有Web服务,ReduceTask会通过Web服务下载merge文件,进行处理
3. ReduceTask
-> http下载:从多个DataManager中下载merge文件下载单个分区的KV数据,多个文件合并为一个文件
-> Reducer
->reduce
->context
->KV ----> TextInputFormat(可重写)
->getRecordWrite
->recordWrite
->write
->Local/HDFS 文件
多个ReduceMask 会生成多个 Local/HDFS 文件
数据输入输出类型:
TextInputFormat
TextOutputFormat
SequenceFile
Job.setInputFormat
Job.setOutputFormat
Job.setPartation
Job.setGroupComparator
Job.setMapperClass
Job.setReduceClass
Job.setReduceTaskNum
Job.setCombinerClass
YARN框架:
ResourceManager 不一定对应NameNode
ApplicationMaster 可能在任何DataNode上
DataManager 对应DataNode
容器
MapTask/ReduceTask
YARN WEB端口:8088
配置文件:yarn-site.xml,mapred-site.xml
CPU/MEMERY配置:1Core/2G
Mapper
map(key,value,context)
Reducer()
reduce(key,interator,content)
cleanUp(content)
Partation(分区) :配合Reducer进行分组处理
WritablePartation
hashCode(key,value,content)
Comparator(分组)
WritableComparator
compare
Content
configuration
spiit
FileSplit/DBSplit
filename/dbname
offset/linenum
### 执行(三种方式):
1. (任务下发)windows下调用yarn启动job:需要在客户端配置configuration
2. (生产) linux下调用yarn启动job:需要在启动jar包的主机配置 相关xml参数
3. (调试) windows下执行local job:需要包含hadoop运行环境,即下载windos执行包,并且配置HADOOP_HOME路径并且添加到PATH
详细解决方案
MapReduce整体介绍
热度:40 发布时间:2023-09-05 18:32:11.0
相关解决方案
- Hbase + Mapreduce + eclipse范例
- MapReduce-Logistic Regression (逻辑回归)
- MapReduce API基本概念 序列化,Reporter参数,回调机制 -《hadoop技术内幕》读书笔记
- 【转】MapReduce:默许Counter的含义
- 海量数据挖掘——第一讲.MapReduce and PageRank
- 【大数据挖掘学习-一】计算模型:MapReduce
- Hadoop HA 和 MapReduce 学习笔记
- Hadoop学习3:Hadoop核心组件-MapReduce
- # Hadoop MapReduce(一)
- 第3章 Hadoop分布式计算框架-MapReduce
- Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
- Hadoop ----HDFS MapReduce
- hadoop 任务运行到running job就卡住了 INFO mapreduce.Job: Running job: job_XXXXXXX
- MapReduce(MR)的整体执行流程: (Yarn 模式)
- 「GoCN酷Go推荐」简单易用的进程内并发任务处理库—— mapreduce
- 通过 MapReduce 降低服务响应时间
- 《MapReduce: Simplified Data Processing on Large Cluster 》论文翻译
- yarn的8088 GUI界面 看 mapreduce 任务
- MapReduce 中用于划分数据的那些函数 以及它们在streaming中的实现
- Hadoop组件之-MapReduce(InputFormat)
- Mapreduce Shuffle运行机制
- 【Mapreduce】从代码上解决Output directory already exists错误
- 干货 | 实践Hadoop MapReduce 任务的性能翻倍之路
- 一步一步完成 MIT-6.824-Lab1 : MapReduce 之三
- 一步一步完成 MIT-6.824-Lab1 : MapReduce 之二
- 一步一步完成 MIT-6.824-Lab1 : MapReduce 之一
- 《MapReduce:Simplified Data Processing on Large Cluster》 阅读笔记
- Mapreduce--wordcount
- MapReduce-shuffle 流程详解
- MapReduce 生成HFile导入Hbase