【问题标题】:set the number of reducers does not work设置减速器数量不起作用
【发布时间】:2015-01-06 23:31:25
【问题描述】:

我正在使用带有 -io typedbytes 的 Hadoop 流并设置 mapred.reduce.tasks=2,但我最终只得到了一个输出文件。如果我设置 mapred.reduce.tasks=0,那么我会得到很多输出文件。我很困惑。

所以我的问题是: 当我在流中使用 -io typedbytes 时如何使 mapred.reduce.tasks = num (num >1) 配置有效?

PS:我的映射器的输出是 (key:string of python, value:array of numpy)。 还有我的 .sh 文件:
hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-1.2.1.jar \ -D mapred.reduce.tasks=2 \ -fs 本地\ -jt 本地\ -io 类型字节\ -inputformat org.apache.hadoop.mapred.SequenceFileAsBinaryInputFormat \ -输入 FFT_SequenceFile \ -输出pinv输出\ -映射器'pinvmap.py'\ -文件 pinvmap.py \

【问题讨论】:

    标签: python hadoop streaming


    【解决方案1】:
    -D mapred.reduce.tasks=2 \ -fs local \ -jt local
    

    通过检查-fs-jt 的值,我知道您正在local 模式下运行它。
    local模式下,0个或1个reducer最多可以运行
    因为它使用本地文件系统和单个 JVM,所以在这种模式下没有 Hadoop 守护进程。
    在所有守护进程在同一台机器上运行的psuedo distributed 模式下,属性-D mapred.reduce.tasks=n 将起作用并产生n 减速器。
    所以你应该使用psuedo distributed 模式来处理多个reducer。
    希望对您有所帮助!

    【讨论】:

    • 顺便说一句,如果您在使用mapred.reduce.tasks=0 时有很多输出文件,那是因为没有减速器,所以您正在寻找映射器的输出。
    • 谢谢你,Chowdary 和 ALSimon。现在一切正常。
    • @KevinS 欢迎您。如果它解决了您的问题,请接受答案。
    猜你喜欢
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多