On the way

丨靡不有初,鲜克有终;不忘初心,方得始终丨大数据方向自学探索者 | 欢迎交流学习 ™️...

Hadoop MapReduce 计算框架剖析与学习笔记


要点剖析

【1】该键和值类必须由框架序列化,因此需要实现Writable接口。此外,关键类必须实现WritableComparable接口,以方便框架进行排序。
Input and Output types of a MapReduce job:
(input) <k1, v1> -> map -> <k2, v2> ->[Grouping | Partitioner] combine [compress] -> <k2, v2> -> reduce -> <k3, v3> (output)

【2】一般输入数据的block块数决定map数,除非 Configuration.set(MRJobConfig.NUM_MAPS, int)

MR程序性能优化

【1】通常将计算节点和存储节点是相同的,即MapReduce框架和Hadoop分布式文件系统在同一组节点上运行。该配置允许框架在数据已经存在的节点上有效地调度任务,从而在整个集群中产生非常高的总带宽。
【2】对于MR程序,可以在Mapper阶段,执行中间输出的本地聚合combiner,这有助于减少从Mapper传输到Reducer的数据量。
【3】对于Mapper端的输出数据可以执行compress数据压缩,降低中间数据的读写I/O延迟.
【4】在存储mapper阶段产生的中间数据时,增加序列化缓冲区大小,避免map线程阻塞。
【5】在shuffle阶段,增大磁盘上可同时合并的数据段数,增加并行度从而提升shuffle效率。
【6】提高数据本地行,计算和存储同节点部署。

作业优化

【1】比较器的使用,在作业的mapper阶段分组中执行,在Reducer阶段的排序中可能用到二次排序
【2】对于大量只读的数据使用DistributedCache。
【3】对中间数据或者作业输出数据进行压缩存储,减少磁盘IO
【4】对于数据量很大的作业,job通过一个预测机制执行,具体是在两个结点上并行执行map任务的相同实例,谁先执行完取谁的结果,再kill掉另外一个,可以通过configuration关闭预测机制。
【5】任务最大尝试次数的调整
【6】对Mapper/Reducer 任务执行的子虚拟机运行参数和环境的调整与优化,例如分别指定map和reduce执行的最大堆大小,java运行库等
【7】对框架各部分的可用内存的配置,因为这将会影响数据写入磁盘的频率

作业输入和作业输出

InputFormat中常用的是FileInputFormat,其默认实现是TextInputFormat。
OutputFormat中默认实现是TextOutputFormat。

阅读更多
版权声明:✔️ 觉得此文有用的,不嫌麻烦的,就留个言呐,或者点个赞呐 https://blog.csdn.net/Coder__CS/article/details/79662694
文章标签: mr MapReduce
个人分类: Hadoop MapReduce
想对作者说点什么? 我来说一句

hadoop MapReduce介绍

2016年03月04日 1.32MB 下载

没有更多推荐了,返回首页

不良信息举报

Hadoop MapReduce 计算框架剖析与学习笔记

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭