在SparkStreaming任务运行的过程中,由于数据流量或者网络的抖动,任务的batch很可能出现delay,所以就出现了一个需求:实时监控任务对kafka消息的消费,及时了解堆积情况。
这个需求应该有很多种解决方案,我这边提供的思路是基于Spark Metrics System的。SparkStreaming任务在运行过程中,会产生很多Metrics信息,不断地推送到Sink上面,我们这里使用到的是MetricsServlet。
打开Spark UI,我们能够很方便地通过RestAPI方式请求任务Metrics信息,接口如下:
http://ClusterHostName:8088/proxy/AppID/metrics/json
返回的Metrics信息如下:
这里应用的方案就是在这些Metrics里面添加一个新Metrics,这个Metrics应该能够向监控应用程序提供任务batch对records的消费情况。
我们知道,SparkStreaming应用消费Kafka数据有两种API:Reciever模式和Direct模式。所以针对使用的不同的API,需要提供不同的Metrics信息,其格式可以如下设置:
- Reciever-Metrics
kafka.consumer.zkQuorum.zkQuorum.

最低0.47元/天 解锁文章
1143

被折叠的 条评论
为什么被折叠?



