gpt4 book ai didi

java - 收集单个 hadoop 作业的计数器和指标

转载 作者:可可西里 更新时间:2023-11-01 16:42:31 24 4
gpt4 key购买 nike

我正在寻找一种以事件驱动的方式收集单个 hadoop 作业的所有计数器和指标的方法,以将所有这些数据存储在 elasticsearch 中,以供以后进行故障排除和分析。

目前我发现了一些似乎符合要求的方法:

  1. 使用指标导出器,尤其是 ContainerMetrics这允许获取每个容器的内存和 cpu 使用情况和 MRAppMetrics ,但是那个聚合所有作业的所有指标。

  2. 轮询 MR 历史服务器及其 REST API这非常简单,但需要大量 HTTP 调用来收集作业、任务及其尝试的所有计数器。

  3. 插入一个额外的自定义 EventHandler进入MRAppMaster的 Activity dispatcher , 但是 MRAppMaster没有相应的机制来注册自定义事件处理程序。

  4. 使用 javaagents (java instrumentation api) 的黑魔法、字节码修改和类似 aop 的功能来拦截 EventHandler#handle(T) 的所有执行。方法。那种方式应该可以解决所有的需求,但是需要额外配置MR-jobs,javaagent的开发和注册,一般看起来比较复杂。

所以,我想问一下是否有更简单的方法来收集单个 hadoop 作业的指标和计数器?

最佳答案

您可以将您的指标提供给实际的任何接收者:实现您自己的 MetricsSink并配置 hadoop 以使用它。

或者您可以使用已经与 Hadoop 发行版捆绑在一起的 MetricsSink,例如 GraphiteSink并在 Graphite 中获取指标。

请注意,某些计数器在作业完成(成功与否)之前不可用。

此外,选项 2 也有可能让 HistoryServer 陷入麻烦(当您轮询具有大量映射器的作业时,它可能会 OOM)。

关于java - 收集单个 hadoop 作业的计数器和指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com