MapReduce运行模式
集群运行模式
1.将mapReduce程序提交给yarn集群,分发到很多节点上并发执行
2.处理的数据和输出结果应该位于HDFS文件系统
3.提交集群的实现步骤:将程序打成jar包,并上传,然后在集群上用hadoop命令启动
本地运行模式
1.MapReduce程序是在本地以单进程的形式运行
2.处理的数据及输出结果在本地文件系统
即在TextputFormat的时候,可以指定是hdfs路径还是Hdfs路径压缩上传
MapReduce分区
分区概述
在mapreduce中,通过我们指定分区,会将同一个分区的数据发送到同一个Reduce当中进行处理
MapReduce中的计数器
计数器是收集作业统计信息的有效手段之一,用于质量控制或应用级统计。计数器还可以辅助诊断系统故障。如果需要将日志信息输出到map或reduce任务,更好的方法通常是看能否用一个计数器值来记录某一特定时间的发生。对于大型分布式作业而言,使用计数器更为方便。除了因为获取计数器值比输出日志更方便,还有根据计数器值统计特定事件发生次数要比分析一堆日志文件容易得多。
MapReduce排序和序列化
序列化是指把结构化对象转为字节流
反序列化时序列化的逆过程,把字节流转为结构化对象,当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,反之当要将接收到或从磁盘读取的字节流转换为对象,就要进行反序列化
java的序列化是一个重量级序列化框架,一个对象被序列化后,会附带很多信息,就显得臃肿,而hadoop自己开发了自己的一套序列化机制,需要什么属性就传什么,大大减少了网络传输的开销
writable时hadoop的序列格式化,hadoop定义了这样一个writable接口,一个类要支持可序列化只需要实现这个接口
writable有一个子接口writableComparable是一个既可实现序列化接口又可以进行排序功能的接口。
规约Combiner
概念
每一个map都可能会产生大量的本地输出,combiner的作用就是对map端的输出先做一次合并,以减少再map和reduce节点的数据传输量,以提高网络IO性能,时mapreduce的一种优化手段之一
combiner时mr程序中的mapper和reducer之外的一种组件
combiner组件的父类就是reducer
combiner和reducer的区别在于运行的位置:combiner是在每一个maptask所在的节点运行;reducer是接收全局所有mapper的输出结果
combiner的意义就是对每一个maptask的输出进行局部汇总,以减小网络传输量
本文介绍了MapReduce的两种运行模式:集群和本地模式,强调了数据位置和提交步骤。接着,讨论了MapReduce的分区原理,指出分区能确保相同数据在同一Reduce中处理。计数器作为收集作业统计信息的重要工具,用于监控和故障诊断。文章还涉及排序和序列化,解释了Hadoop自定义序列化的优势。最后,讲解了Combiner的作用,作为map端的局部汇总,有效减少了网络IO,提高了性能。
540

被折叠的 条评论
为什么被折叠?



