Hadoop 如果我们只有一个减速器呢

Hadoop 如果我们只有一个减速器呢,hadoop,Hadoop,正如我们所知,Hadoop倾向于在运行相应映射程序的机器上禁用reducer。如果我们有100个映射器和1个减速机呢。我们知道映射器将数据存储在本地磁盘上,所有映射的数据是否都将传输到单个还原器?如果将还原器编号固定为1(按job.setNumReduceTasks(1)或-Dmapred.reduce.tasks=1),则映射器中的所有数据将传输到一个将处理所有键的还原器。是,如果还原器只有一个,所有数据都将传输到该减速器 每个映射器最初将其输出存储在其本地缓冲区中(默认为100mb),当缓冲

正如我们所知,Hadoop倾向于在运行相应映射程序的机器上禁用reducer。如果我们有100个映射器和1个减速机呢。我们知道映射器将数据存储在本地磁盘上,所有映射的数据是否都将传输到单个还原器?

如果将还原器编号固定为1(按job.setNumReduceTasks(1)或-Dmapred.reduce.tasks=1),则映射器中的所有数据将传输到一个将处理所有键的还原器。

是,如果还原器只有一个,所有数据都将传输到该减速器

每个映射器最初将其输出存储在其本地缓冲区中(默认为100mb),当缓冲区填充到由io.sort.spill.percent定义的某个百分比时,结果将溢出到由mapred.local.dir定义的磁盘上


复制阶段将这些文件复制到reducer上,其中每个映射器的输出由mapred.reduce.parallel.copies并行线程复制。(默认值5)

如果只有一个reducer,则所有数据将传输到该reducer,所有输出将作为单个文件存储在HDFS中。 如果不提供任何减速器,则运行的减速器的默认数量为1

您可以使用job.setNumReduceTasks(_uu)设置减速器的数量,如果您使用的是ToolRunner,则可以通过命令行本身设置减速器的数量。 -Dmapred.reduce.tasks=4