【问题标题】:only one mapper and reducer are running even though i change to 5 mappers and 2 reducers即使我更改为 5 个映射器和 2 个减速器,也只有一个映射器和减速器正在运行
【发布时间】:2014-12-04 09:53:39
【问题描述】:

我是Hadoop 的新手,我已经设置了一个Hadoop 2.5.1 版本的多节点Hadoop。 当我使用命令运行 mapreduce 作业时

hadoop jar jarFile <ClassName> <InputFile> <outputDirectory> -D mapreduce.job.reduces=2 mapreduce.job.maps=5

但是当我看到输出时,我只看到一个映射器和一个减速器在运行。

我看到Hadoop 2.5.1中没有map slot和reducer slot的概念

我的文件大小是78MB。那么是不是因为我的文件大小非常小,并且块非常低,所以只有一个映射器在运行?

帮助我继续前进。

感谢和问候, 斯里拉塔 K.

【问题讨论】:

    标签: hadoop mapreduce hadoop2


    【解决方案1】:

    这是因为块的默认大小是 128MB,因此您的 78M 大小的文件永远不会被分割成多个块。请参阅this,它表示默认块大小为 128。

    如果您想查看两个映射器,请在 $HADOOP_HOME/conf/hdfs-site.xml 中添加以下行

    <property>
       <name>dfs.blocksize</name>
       <value>64M</value>
    </property>
    

    【讨论】:

    • 感谢Almas 的回复,但我什至还有一个问题。我有另一个带有 Hadoop 1.0.4 的单节点集群。当我在该集群中运行相同的 MR 作业时,我看到 2 个地图任务正在运行,我尝试更改块大小甚至 -D mapreduce.job.maps=1。但我仍然看到 2 个地图任务正在运行。你能帮我解决这个问题吗,比如我应该在哪里修改才能看到只有一个地图任务正在运行。
    • 这是因为在 1.0.4 中,默认块大小为 64M。有关默认属性的详细信息,请参阅here
    • 好的,感谢您的回答 Almas,但我已将默认大小更改为 128M,启动所有服务并检查,仍然有 2 个映射器,所以这种行为有什么特殊原因吗?跨度>
    • 你还有两个块。格式化您的名称节点,再次放置该文件,这将使您的文件分配在一个块内并重新运行您的 mapred 并检查。如果您不想格式化,则将该文件放在另一个位置并将其作为 mapred 调用的输入。
    • 但是我已经尝试了这两种方法,格式化namenode并尝试再次复制文件,甚至将文件放在另一个位置而不格式化namenode我仍然看到问题。我看到 2 个映射器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2010-10-23
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多