Python开发者不容错过7个VS Code扩展
3.6.5 Combiner 合并
3.6.6 关于 MapReduce 排序 MapReduce框架最重要的操作就是排序,MapTask 跟 ReduceTask 都会根据key进行按照字典顺序进行快排。 MapTask 将缓冲区数据快排后写入到磁盘,然后磁盘文件会进行归并排序。 ReduceTask统一对内存跟磁盘所有数据进行归并排序。 3.6.7 ReduceJoin 跟 MapJoin Reducejoin 思路:通过将关联条件作为Map 输出的 Key,将两表满足 Join条件的数据并携带数据源文件发送同一个ReduceTask,在Reduce端进行数据串联信息合并。 缺点:合并操作在Reduce端完成,Reduce 端处理压力太大,并且Reduce端易产生数据倾斜。 MapJoin 适用:适用于一张表十分小、一张表很大的场景。 思路:在 Map 端缓存多张表,提前处理业务逻辑,这样增加 Map 端业务,减少 Reduce 端数据的压力,尽可能的减少数据倾斜。 3.6.8 注意点 ReduceTask = 0 说明没有Reduce节点,输出文件个数和 Map 个数一样。 ReduceTask 默认= 1,所以结果是一个文件。 ReduceTask 的个数不是任意设置的,需跟集群性能还有结果需求而定。 逻辑处理 Mapper 时候可根据业务需求实现其中三个方法,map、setup、cleanup。 3.7 压缩 压缩是提高Hadoop运行效率的一种优化策略,通过在Mapper、Reducer运行过程的数据进行压缩来减少磁盘空间跟网络传输,最终实现提高MR运行速度。但需注意压缩也给CPU运算带来了负担。 压缩的基本原则: 运算密集型任务 ,少压缩。
IO密集型任务,多压缩。 (编辑:柳州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |