【问题标题】:Determining the number of reduce slots in Hadoop cluster确定 Hadoop 集群中的 reduce 槽数
【发布时间】:2019-11-01 02:18:02
【问题描述】:

使用 Java API,如何确定当前集群的 reduce slot 总数? (如果我能得到 当前正在使用的插槽数,那将是一个奖励。)

我的用例:我有一个启动另一个 Hadoop 作业的 Hadoop 作业。对于第二个工作,我必须设置减速器的数量。这应该基于可用插槽的数量。此外,集群的大小可能会发生变化。

我使用的是 Hadoop 2.7.3。它通常在 Amazon EMR 上运行,但我更喜欢只使用 Hadoop API 的解决方案。

【问题讨论】:

    标签: hadoop hadoop-yarn


    【解决方案1】:

    您可以使用 Java HTTP 客户端通过 ResourceManager REST API 从 YARN 请求集群指标。

    响应将是一个 JSON,其中包含集群上的总内存、分配的、保留的和可用的内存和 vcore。

    $ curl -G -k https://<resource-manager-host>:8090/ws/v1/cluster/metrics
    {"clusterMetrics":      
    {"appsSubmitted":999999,"appsCompleted":999999,"appsPending":0,"appsRunning":99,"appsFailed":99,"appsKilled":999,
     "reservedMB":0,"availableMB":99999999,"allocatedMB":9999999,
    "reservedVirtualCores":0,"availableVirtualCores":9999,"allocatedVirtualCores":9999,
    "containersAllocated":9999,"containersReserved":0,"containersPending":999,
    "totalMB":9999999,"totalVirtualCores":99999,
    "totalNodes":999,"lostNodes":9,"unhealthyNodes":9,"decommissioningNodes":0,"decommissionedNodes":99,"rebootedNodes":0,"activeNodes":999}}
    $
    

    不确定您所说的“插槽”是什么意思,因为您实际上可以在提交 MR 作业时指定减速器容器大小。

    【讨论】:

    • 我想我的意思是“容器”。 “插槽”是他们在旧版本 Hadoop 中使用的术语。
    • 所以据你所知,没有办法通过Java API 做到这一点?我必须自己发出 HTTP 请求吗?如果是这样,那就引出了另一个问题:如何获取资源管理器的 URL?
    • @MikeBaranczak 如果您在 ResourceManager 上配置和启用 JMX,我知道的唯一另一种方法是通过 JMX 客户端。但考虑到所有事情,我发现 RM 的 REST API 超级简单且足够——提供来自所有 NodeManager 的聚合指标,密切关注调度程序和资源池,跟踪所有应用程序等。
    • 你可以从yarn-site.xml配置文件中获取RM主机/端口。
    • 好的,谢谢。这看起来像我可以使用的东西。一些澄清:相关的配置属性是yarn.resourcemanager.address(它包含主机和端口)。在 file 中查找它是没有意义的,因为 EMR 会覆盖此属性 - 相反,请检查作业上下文中可见的配置对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多