结构化流量指标性能?

时间:2018-05-18 20:05:00

标签: apache-spark monitoring metrics spark-structured-streaming

在尝试了一些监视结构化流媒体性能,输入/输出指标的方法之后,我看到一种可靠的方法是附加streamingQueryListener来输出streamingQueryProgress以获取输入/输出数字。

除了SparkUI,

有没有更好的方法来监控结构化流媒体性能?

将queryProgress输出到文件或Kafka的最佳方法是什么?

比较火花流和火花结构流之间的性能(速度,输入,输出记录)的有效方法是什么?

1 个答案:

答案 0 :(得分:1)

其中一种方法是使用ELK堆栈。

Spark应用程序可以将jmx接收到Logstash,Logstash能够聚合数据,并将数据发送到ElasticSearch进行索引。

Kibana能够使用可视化功能显示ElasticSearch的数据。

1)你需要在build.sbt中包含spark-sql-kafka依赖项, (此刻,我使用Spark 2.2.0与spark-sql-kafka 0.10)

// https://mvnrepository.com/artifact/org.apache.spark/spark-sql-kafka-0-10
libraryDependencies += "org.apache.spark" %% "spark-sql-kafka-0-10" % "2.2.0"

或包括 - 执行spark-submit时的包,

spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.2.0 

2)为了让spark应用程序输出jmx,所有与jmx相关的行都需要在文件metrics.properties中取消注释,

并且,在spark-submit期间,指向文件目录,如下所示

--files=metrics.properties --conf spark.metrics.conf=metrics.properties  

3)安装ElasticSearch,Logstash,Kibana。

如果您在Window中,启动ELK堆栈的方式如下,

C:\elasticsearch> .\bin\elasticsearch.bat

C:\logstash> bin\logstash.bat -f .\jmx.conf

C:\kibana> .\bin\kibana.bat

在jmx.conf中,需要配置jmx路径和轮询频率。

input { 
   jmx {
     path => "C:/logstash/config/jmx/"
     polling_frequency => 15
     type => "jmx"
     nb_thread => 2
   }
}
output {
   elasticsearch {
      hosts => ["localhost:9200"]
   }
}

在jmx路径的文件夹中,需要创建一个json文件来列出您希望Logstash检索的object_names和属性。 (Logstash将根据polling_frequency读取此json文件,因此当Spark应用程序运行时,此json文件中的任何更新都会更新,Logstash将会启动,这意味着无需重新启动Logstash)

您可以在提交Spark应用程序

后列出jconsole中的可用object_names和属性

示例文件如下,

{
  "host" : "localhost",
  "port" : 9000,
  "alias" : "spark.jmx.sample1",
  "queries" : [
  {
    "object_name" : "kafka.consumer:type=consumer-metrics,client-id=*",
    "attributes" : ["incoming-byte-rate","outgoing-byte-rate"],
    "object_alias" : "byteRate"
  },
  {
    "object_name" : "metrics:name=local-1528139073457.driver.spark.streaming.e6c4b9da-a7d1-479f-b28f-ba2b9b1397d0.inputRate-total",
    "attrivutes" : ["Value"],
    "object_alias" : "somethingTeste1"
  }
]}

4)最后,您将通过http://localhost:5601

访问Kibana

然后,首先设置索引模式。 (您应该看到数据索引的日期)

然后,转到可视化页面,使用您从jmx json文件列出的object_names和属性创建指标。