【问题标题】:structured streaming metrics performance?结构化流媒体指标性能?
【发布时间】:2018-05-18 20:04:59
【问题描述】:

在尝试了一些监控结构化流性能、输入/输出指标的方法后,我发现一种可靠的方法是附加 streamingQueryListener 以输出 streamingQueryProgress 以获取输入/输出数。

除了 SparkUI,

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

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

比较 spark 流式传输和 spark 结构化流式传输之间的性能(速度、输入、输出记录)的有效方法是什么?

【问题讨论】:

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


    【解决方案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 时包含 --packages,

    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 和属性创建指标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-09
      • 2021-03-23
      • 2018-06-01
      • 2018-12-20
      • 2018-07-20
      • 2021-02-09
      • 2018-03-30
      • 2020-11-16
      相关资源
      最近更新 更多