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
相关解决方案
- MapReduce-Logistic Regression (逻辑回归)
- MapReduce API基本概念 序列化,Reporter参数,回调机制 -《hadoop技术内幕》读书笔记
- 【大数据挖掘学习-一】计算模型:MapReduce
- Hadoop HA 和 MapReduce 学习笔记
- 《MapReduce: Simplified Data Processing on Large Cluster 》论文翻译
- Hadoop组件之-MapReduce(InputFormat)
- 使用 MapReduce 处理用电数据
- mapreduce 中setup()和cleanup()
- Google分布式三篇论文--MapReduce
- MapReduce 的 优化
- MapReduce 基础案例 之 平均值 计算
- MapReduce 基础案例 之 二次排序 自定义数据类型 实现
- Hadoop-2.7.3集群卡在INFO mapreduce.Job: Running job: job_1457182697428_0001
- google三大论文之--MapReduce:超大机群上的简单数据处理
- MapReduce 开发问题和解决方法汇总
- MapReduce:超大机群上的简单数据处理
- 大数据技术之Hadoop(MapReduce) 第8章 常见错误及解决方案
- 大数据技术之Hadoop(MapReduce)第6章 Hadoop企业优化
- 大数据技术之Hadoop(MapReduce) 第4章 Hadoop数据压缩
- MapReduce: DistributedCache的使用例子
- Hadoop Mapreduce Counters详解
- 8.4 MapReduce 三大组件(二):Sort
- Hadoop - MapReduce - YARN常用调优参数