Reducer

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的最终输出。

Reducer

发表评论

邮箱地址不会被公开。 必填项已用*标注

− 三 = 三

滚动到顶部