分布式追踪工具 Uber JVM Profiler

Apache 2.0
Java
跨平台
Uber
2018-08-21
王练

JVM Profiler 是 Uber Engineering 团队开源的一个分布式探查器,用于收集性能和资源使用率指标为进一步分析提供服务。尽管它是为 Spark 应用而构建的, 但它的通用实现使其适用于任何基于 JVM 的服务或应用。


JVM Profiler 由三项主要功能组成, 它使收集性能和资源使用率指标变得更容易, 然后可以将这些指标 (如 Apache Kafka) 提供给其他系统进行进一步分析:

  • 代理功能 ( java agent ) : 支持用户以分布式的方式收集各种指标 (例如如 CPU/内存利用率) ,用于 JVM 进程的堆栈跟踪。

  • 高级分析功能(Advanced profiling capabilities): 支持跟踪任意 Java 方法和用户代码中的参数, 而不进行任何实际的代码更改。此功能可用于跟踪 Spark 应用的 HDFS NameNode RPC 调用延迟, 并标识慢速方法调用。它还可以跟踪每个 Spark 应用读取或写入的 HDFS 文件路径, 用以识别热文件后进一步优化。

  • 数据分析报告( Data analytics reporting ): 使用 JVM Profile 可以将指标数据推送给 Kafka topics 和 Apache Hive tables , 提高数据分析的速度和灵活性。

典型用例

JVM Profiler 支持各种用例, 最典型的是能够检测任意 Java 代码。基于简单的配置, JVM Profiler 就可以附加到 Spark 应用中的每个执行者(executor)收集 Java 方法运行时度量。下面, 我们对其中的一些用例进行讨论:

  • Right-size executor : JVM Profiler 中的内存度量支持跟踪每个执行者的实际内存使用情况。借此 可以在 Spark 应用中 ”executor-memory” 设置最优参数。

  • 监视 HDFS NameNode RPC 延迟: 例如在 Spark 应用中对类 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB 的方法进行了分析并确定 NameNode 调用的延迟。Uber 每天都要监控5万多个 Spark 应用, 其中有数以亿计的这种 RPC 调用。

  • 监视驱动程序丢弃的事件: 例如监视 org.apache.spark.scheduler.LiveListenerBus.onDropEvent, 跟踪 Spark 驱动程序事件队列太长、队列删除事件。

  • 跟踪数据沿袭: 例如分析 Java 方法上的文件路径参数 ( org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getBlockLocations , org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock ) , 可以跟踪哪些文件是由 Spark 应用读取和写入的。

 介绍来源:RiboseYim

的码云指数为
超过 的项目
加载中

评论(1)

许雷神
许雷神
Uber 每天都要监控5万多个 Spark 应用, 其中有数以亿计的这种 RPC 调用。太不可思议了,对于我来说一个Spark应用就已经深似海了!

暂无资讯

暂无问答

Uber 开源分布式追踪工具:JVM Profiler

《JVM Profiler: An Open Source Tool for Tracing Distributed JVM Applications at Scale 》 Apache Spark 计算框架已经被广泛用来构建大规模数据应用。对 Uber 而言, 数据是战略决策和产品...

2018/08/19 16:33
2.8K
2
Uber JVM Profiler实战

背景 日常工作经常需要监控一些java进程的内存、cpu资源使用情况,也就是jmx中的信息。一般的java应用都有暴露jmx的机制,然后由客户端连接进程信息查看。此种方式有个限制,就是你必须知道j...

2017/06/08 13:17
1
0
9 个帮助你进行Java性能调优的工具

9 个帮助你进行Java性能调优的工具

2014/06/16 18:21
260
1
无需实名流量卡去哪里可以买到

无需实名流量卡去哪里可以买到威信→【CXMK12345】 Apache Spark 计算框架已经被广泛用来构建大规模数据应用。对 Uber 而言, 数据是战略决策和产品开发的核心。为了更好地利用这些数据, Ube...

2018/08/19 18:02
45
0
DWR:Direct Web Remoting JS调用Java远程代码框架

Direct Web Remoting DWR is a Java library that enables Java on the server and JavaScript in a browser to interact and call each other as simply as possible. DWR is Easy Ajax for...

02/26 10:04
3
0
深入浅出学测试——(五)

性能测试——压力测试

2015/11/15 11:21
54
0
常用Java性能测试工具的分析与对比

在Java程序的开发过程中,不可避免地会遇到内存使用、性能瓶颈等问题。Java性能测试工具可以帮助开发人员快速、有效地解决性能问题。目前,市场上的Java性能测试工具种类多样,每一种工具都有...

2014/03/18 11:43
719
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部