内容
1. Hadoop Reducer
在Hadoop中,Reducer将Mapper(中间键 – 值对)的输出作为输入。 Reducer的输出是最终输出,存储在HDFS中。 通常,在Hadoop Reducer中,我们执行聚合或求和计算。
在本章中,我们将学习什么是Hadoop MapReduce中的Reducer,Hadoop MapReduce Reducer的不同阶段,Hadoop中的混洗和排序,Hadoop reduce阶段以及Hadoop reducer类的功能。 我们还将讨论Hadoop中需要多少个reducer以及如何更改Hadoop MapReduce中reducer的数量。
2.什么是Hadoop Reducer?
现在我们先讨论MapReduce中的Reducer。
Reducer处理映射器的输出。 处理完数据后,它会生成一组新的输出。 最后HDFS存储这个输出数据。
Hadoop Reducer将映射器产生的一组中间键 – 值对作为输入,并在它们中的每一个上运行Reducer函数。 人们可以通过多种方式对这些数据(键,值)进行聚合,过滤和合并,以进行各种各样的处理。 Reducer首先处理由map函数生成的特定键的中间值,然后生成输出(零个或多个键 – 值对)。
Key和Reducer之间会进行一对一的映射。 Reducer由于彼此独立而并行运行。 用户决定Reducer的数量。 默认情况下,reducer的数量是1。
3. MapReduce Reducer的阶段
Hadoop MapReduce中有3个阶段的Reducer。 让我们逐个讨论它们中的每一个 –
3.1 MapReduce Reducer的混洗阶段?Shuffling
在这个阶段,映射器的排序输出是Reducer的输入。 在Shuffle阶段,在HTTP的帮助下,MapReduce框架获取所有映射器输出的相关分区。
3.2对MapReduce Reducer的阶段进行排序
在这个阶段,来自不同映射器的输入再次基于不同映射器中的相似键进行排序。 洗牌和分类排序阶段同时进行。
3.3 ?Reduce阶段
在这个阶段,在混洗和排序之后,Reduce任务会聚合键值对。 OutputCollector.collect()方法将reduce任务的输出写入文件系统。Reduce输出没有排序。
4. MapReduce Reducer的数量
在Hadoop Reducer的本节中,我们将讨论MapReduce中需要多少个Mapreduce Reducer以及如何更改MapReduce中的Hadoop Reducer数量?
在Job.setNumreduceTasks(int)的帮助下,用户设置作业的reducer数量。正确数量的reducer是0.95或1.75乘以(<节点数量> * <每个节点最大计算容器数量>)。
在0.95的情况下,所有reducer都会在mapper完成时立即启动并开始传输mapper输出。在1.75的情况下,第一轮reducer由更快的节点完成,并且第二轮reducer的启动实现了更好的负载平衡。
增加MapReduce reducer的数量:
增加框架开销。
增加负载平衡。
降低故障成本。
5. Hadoop?Reducer?– 结论
总之,Hadoop Reducer是MapReduce中的第二个处理阶段。 Hadoop Reducer通过三个阶段(混洗,排序和 Reduce)进行汇总或求和计算。?HDFS存储Reducer的最终输出。