我有一个5节点的Hadoop集群,其中2个节点专门用作数据节点,并且还运行tasktracker。
我像
一样运行我的hadoop工作sudo -u hdfs hadoop jar /tmp/MyHadoopJob2.jar com.abhi.MyHadoopJob2 -D mapred.reduce.tasks=2 /sample/cite75_99.txt /output3
作业成功运行,我可以看到正确的输出......但现在我去门户网站
我可以看到
因此只有1个减少工作正在运行。
我特别注意运行多个reduce作业的原因是我想确认hadoop是否仍会创建一个完美排序的输出文件,即使不同的机器上运行不同的reduce作业实例?
目前我的输出文件已完全排序,但这是因为只运行了1个reducer作业。
答案 0 :(得分:1)
Reducer有2个职位: 1.减少映射的键,值对 2.在执行此操作时组合两个映射器输出
因为你只有2个数据节点,所以只有2个映射器可以同时运行,在任何给定时刻只允许一个可能的减速器
答案 1 :(得分:1)
输出文件的数量将基于给定作业的reducer数量。但是,如果您的要求需要,您仍然可以将多个文件合并到一个文件中。
要合并使用下面的hadoop shell命令
command> hadoop fs -getmerge <src> <localdst>
src: hdfs output folder path
localdst: local system path with filename(one file)
希望这可以澄清你的怀疑。