MapReduce是一种编程模型,主要用于处理和生成大规模数据集,它最早由Google提出,并被广泛应用于各种大数据处理场景,MapReduce的核心思想是将一个复杂的问题分解成多个小问题,然后通过分布式计算并行处理这些小问题,最后将结果汇总得到最终答案,以下是对MapReduce开源增强特性的介绍:
JobHistoryServer HA特性
1、高可用性:JobHistoryServer(JHS)是查看MapReduce历史任务信息的服务器,当前开源JHS只支持单实例服务,JobHistoryServer HA能够解决JHS单点故障时,应用访问MapReduce接口无效,导致整体应用执行失败的场景,从而大大提升MapReduce服务的高可用性。
2、主备倒换:采用ZooKeeper实现主备选举和倒换,JobHistoryServer使用浮动IP对外提供服务,兼容JHS单实例,也支持HA双实例,同一时刻,只有一个节点启动JHS进程,防止多个JHS操作同一文件冲突。
3、功能支持:支持扩容减容、实例迁移、升级、健康检查等。
MapReduce的Merge/Sort流程优化
1、工作流程:Reduce过程分为三个不同步骤:Copy、Sort(实际应当称为Merge)及Reduce,在Copy过程中,Reducer尝试从NodeManagers获取Maps的输出并存储在内存或硬盘中,紧接着进行Shuffle过程(包含Sort及Reduce),这个过程将获取到的Maps输出进行存储并有序地合并然后提供给Reducer。
2、性能提升:当Job有大量的Maps输出需要处理的时候,Shuffle过程将变得非常耗时,对于一些特定的任务(例如hash join或hash aggregation类型的SQL任务),Shuffle过程中的排序并非必须的,但是Shuffle却默认必须进行排序,所以需要对此处进行改进,此特性通过对MapReduce API进行增强,能自动针对此类型任务关闭Sort过程,当Sort被关闭,获取Maps输出数据以后,直接合并后输出给Reduce,避免了由于排序而浪费大量时间,这种方式极大程度地提升了大部分SQL任务的效率。
History Server优化解决日志小文件问题
1、日志收集:运行在Yarn上的作业在执行完成后,NodeManager会通过LogAggregationService把产生的日志收集到HDFS上,并从本地文件系统中删除,日志收集到HDFS上以后由HistoryServer来进行统一的日志管理。
2、日志归档:在HistoryServer中新增AggregatedLogArchiveService模块,定期检查日志目录中的文件数,在文件数达到设定阈值时,启动归档任务进行日志归档,并在归档完成后删除原日志文件,以减少HDFS上的文件数量。
3、日志清理:由于Hadoop Archives不支持在归档文件中进行删除操作,因此日志清理时需要删除整个归档文件包,通过修改AggregatedLogDeletionService模块,获取归档日志中最新的日志生成时间,若所有日志文件均满足清理条件,则清理该归档日志包。
4、日志浏览:Hadoop Archives支持URI直接访问归档包中的文件内容,因此浏览过程中,当History Server发现原日志文件不存在时,直接将URI重定向到归档文件包中即可访问到已归档的日志文件。
MapReduce的开源增强特性主要包括JobHistoryServer HA特性、特定场景优化MapReduce的Merge/Sort流程以及History Server优化解决日志小文件问题,这些增强特性使得MapReduce在处理大规模数据集时更加高效、稳定和灵活。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1203287.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复