【问题标题】:How can I tell how many mappers and reducers are running?我如何知道有多少映射器和减速器正在运行?
【发布时间】:2016-04-25 23:31:20
【问题描述】:

我有一个旨在运行数十个 map/reduce 作业的任务。其中一些是 IO 密集型的,一些是 mapper 密集型的,一些是 reducer 密集型的。我希望能够监控当前正在使用的映射器和缩减器的数量,以便在释放一组映射器时,我可以将另一个映射器密集型作业推送到集群。我不想只是将它们堆叠在队列中,因为它们可能会阻塞映射器并且不会让 reducer 密集型的运行。

是否有我可以调用的命令行界面从(例如)Python 脚本中获取这些信息?

【问题讨论】:

  • mapper 和 reducer 是如何实现的?

标签: python hadoop mapreduce


【解决方案1】:

可以通过以下方式访问Hadoop Job状态。

  • Hadoop 作业可以通过 hadoop Web UI 进行管理。

    Jobracker 显示作业详细信息,默认端口为 50030(伪模式下为 localhost:50030

    Tasktrackers 显示单个 map/reduce 任务,它在默认端口 50060 上可用。

  • Hadoop 提供 REST API 来访问集群、节点、应用程序和应用程序历史信息。

    也可以从 Python 脚本调用此 REST API 以获取应用程序状态。 http://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-site/WebServicesIntro.html

【讨论】:

  • 不完全是我所希望的,但我想如果命令行调用不能给我答案,我将不得不通过 REST API。谢谢。
【解决方案2】:

我发现了

mapred job -list

将列出当前正在运行的所有作业,并且

mapred job -status <job_id>

将为每个作业提供映射器和缩减器的数量。

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 2017-02-26
    • 1970-01-01
    • 2015-05-12
    相关资源
    最近更新 更多