我应该在哪个文件中设置reducer的数量并设置mapred.reduce.tasks
参数?
我的conf
文件夹中只有以下文件,它们都没有这个参数:
ubuntu@group-3-vm1:~/conf$ ls
capacity-scheduler.xml hdfs-site.xml mapred-site.xml yarn-site.xml
core-site.xml hive-site.xml tez-site.xml
所有Hadoop配置属性都被划分为以下组:
hadoop - 1. - x.x:
- core- core-site.xml
- hdfs - hdfs-site.xml
- mapred - mapred-site.xml
hadoop - 2. - x.x
- core- core-site.xml
- hdfs - hdfs-site.xml
- mapreduce - mapred-site.xml
- yarn - yarn-site.xml
所以你想改变reducer的数量,即mapred.reduce.tasks。您必须在'mapred-site.xml'文件中保留此参数。
更新:
可以在"mapred-site.xml"文件中指定mapred.reduce.tasks
。这将为所有将在hadoop安装上运行的作业设置配置。在我看来,这不是一个好主意。
减速机的理想数量按作业要求设定。您可以使用下面提供的选项来执行此操作。
可以在运行/启动hadoop作业时通过命令行设置作业的
Reducer
数量。
hadoop jar <main_jar.jar> Main_class -D mapred.reduce.tasks=<number_of_reducers>
另一种方法是,在你的
Driver
类中加入Job
配置。
job.setNumReduceTasks(number_of_reducers);
不需要在任何配置文件中设置属性(mapred.reduce.tasks)
。默认值为1。
如果你正在使用hadoop 2,最好使用 mapreduce.job.reduces
而不是 mapred.reduce.tasks
。