Sparklens:Spark应用程序优化工具
Sparklens是帶有內置Spark Scheduler模擬器的Spark概要分析工具:它使您更容易理解Spark應用程序的可伸縮性限制。 它有助于了解給定Spark應用程序使用提供給它的計算資源的效率。 它已在Qubole實施并維護。 它是開源的( Apache License 2.0 ),并已在Scala中實現。
Sparklens的一個有趣特征是它具有通過一次運行Spark應用程序生成估計的能力。 它報告信息,例如估計的完成時間和使用不同數量的執行者的估計的群集利用率,作業/階段時間線,該時間線顯示了如何在作業中安排并行階段以及每階段有趣的指標。 有四種使用Sparklens的方法:
- 現場模式
- 離線模式
- 在事件歷史記錄文件上運行
- 筆記本電腦
在這篇文章中,我僅關注實時和離線模式。
現場模式
通過使用以下選項,Sparklens可以在應用程序執行時運行(對于
火花提交和
火花殼 ):
或通過編程方式將Sparklens依賴項添加到Java / Scala項目中(這是Maven的示例):
<repositories><!-- Mandatory: the Sparklens artifact aren't in Maven Central --><repository><id>qubole-maven-repo</id><name>Qubole Maven Repo</name><url>http://dl.bintray.com/spark-packages/maven/</url></repository><repository><id>central</id><name>Maven Repository Switchboard</name><layout>default</layout><url>http://repo1.maven.org/maven2</url><snapshots><enabled>false</enabled></snapshots></repository> </repositories> ... <dependency><groupId>qubole</groupId><artifactId>sparklens</artifactId><version>0.2.1-s_2.11</version> </dependency>然后通過如下配置其偵聽器(對于Spark 1.X)
SparkConf conf = new SparkConf(); conf.setMaster(master); conf.setAppName("Spark app name"); conf.set("spark.extraListeners", "com.qubole.sparklens.QuboleJobListener"); JavaSparkContext jsc = new JavaSparkContext(conf);或如下(對于Spark 2.x)
SparkSession spark = SparkSession.builder().appName("Spark app name").master(master).config("spark.extraListeners", "com.qubole.sparklens.QuboleJobListener").getOrCreate();離線模式
Sparklens可以稍后運行,而不必在執行時運行。 可以通過在Spark應用程序配置中添加以下屬性來進行設置:
conf.set("spark.sparklens.reporting.disabled", "true");在Spark應用程序執行結束時,僅生成JSON數據文件。 默認的保存目錄是/ tmp / sparklens ,但是可以通過以下配置屬性更改目標:
conf.set("spark.sparklens.data.dir", "/home/guglielmo/sparklens"); 然后,該文件可用于通過以下方式獨立運行Sparklens:
spark-submit命令如下:
上面的命令從JSON數據文件開始,生成的報告具有與實時模式下生成的布局相同且包含相同結果的報告。
那個報告
這些是最終報告中可用的信息:
- 效率統計信息(驅動程序與執行程序時間,關鍵和理想應用時間,驅動程序和執行程序浪費的核心計算時間)。
- 預測的掛鐘時間和具有不同執行程序計數的群集利用率。
- 每階段指標。
- 隨著時間的推移,可用的執行器和所需的執行器。
- 基于任務的匯總指標。
結論
我和我的團隊最近開始采用此工具,到目前為止,我們發現了解其他團隊開發的Spark應用程序的可伸縮性限制確實很有用,但是需要在我們的基礎架構中執行。 該工具生成的最終報告提供了一組全面的信息,這些信息絕對有助于指出正確的方向,以發現潛在的可伸縮性問題和需要改進的地方。
生成的報告采用文本格式,其中包含上述所有指標和信息。 Qubole提供了 在線服務 ,可從上傳的JSON數據文件開始,生成具有交互式圖表和表格的用戶友好且優雅的報告。 無論您是組織機構,還是不允許您共享在公司基礎結構中運行的Spark應用程序上運行Sparklens生成的JSON數據,都需要保留文本報告。 為了解決此類情況,我正在考慮實現并發布一個開源Java庫,以在本地環境中從Sparklens JSON數據文件或文本報告開始生成用戶友好的報告。 請通過評論此帖子來注冊您對此庫的興趣。 謝謝。
翻譯自: https://www.javacodegeeks.com/2019/02/sparklens-tool-spark-applications-optimization.html
總結
以上是生活随笔為你收集整理的Sparklens:Spark应用程序优化工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米商城推出“特惠屏”活动,小米 13、
- 下一篇: 从StreamCorruptedExce