Sparklens:Spark应用程序优化工具
Sparklens是帶有內(nèi)置Spark Scheduler模擬器的Spark概要分析工具:它使您更容易理解Spark應(yīng)用程序的可伸縮性限制。 它有助于了解給定Spark應(yīng)用程序使用提供給它的計(jì)算資源的效率。 它已在Qubole實(shí)施并維護(hù)。 它是開源的( Apache License 2.0 ),并已在Scala中實(shí)現(xiàn)。
Sparklens的一個(gè)有趣特征是它具有通過一次運(yùn)行Spark應(yīng)用程序生成估計(jì)的能力。 它報(bào)告信息,例如估計(jì)的完成時(shí)間和使用不同數(shù)量的執(zhí)行者的估計(jì)的群集利用率,作業(yè)/階段時(shí)間線,該時(shí)間線顯示了如何在作業(yè)中安排并行階段以及每階段有趣的指標(biāo)。 有四種使用Sparklens的方法:
- 現(xiàn)場模式
- 離線模式
- 在事件歷史記錄文件上運(yùn)行
- 筆記本電腦
在這篇文章中,我僅關(guān)注實(shí)時(shí)和離線模式。
現(xiàn)場模式
通過使用以下選項(xiàng),Sparklens可以在應(yīng)用程序執(zhí)行時(shí)運(yùn)行(對(duì)于
火花提交和
火花殼 ):
或通過編程方式將Sparklens依賴項(xiàng)添加到Java / Scala項(xiàng)目中(這是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>然后通過如下配置其偵聽器(對(duì)于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);或如下(對(duì)于Spark 2.x)
SparkSession spark = SparkSession.builder().appName("Spark app name").master(master).config("spark.extraListeners", "com.qubole.sparklens.QuboleJobListener").getOrCreate();離線模式
Sparklens可以稍后運(yùn)行,而不必在執(zhí)行時(shí)運(yùn)行。 可以通過在Spark應(yīng)用程序配置中添加以下屬性來進(jìn)行設(shè)置:
conf.set("spark.sparklens.reporting.disabled", "true");在Spark應(yīng)用程序執(zhí)行結(jié)束時(shí),僅生成JSON數(shù)據(jù)文件。 默認(rèn)的保存目錄是/ tmp / sparklens ,但是可以通過以下配置屬性更改目標(biāo):
conf.set("spark.sparklens.data.dir", "/home/guglielmo/sparklens"); 然后,該文件可用于通過以下方式獨(dú)立運(yùn)行Sparklens:
spark-submit命令如下:
上面的命令從JSON數(shù)據(jù)文件開始,生成的報(bào)告具有與實(shí)時(shí)模式下生成的布局相同且包含相同結(jié)果的報(bào)告。
那個(gè)報(bào)告
這些是最終報(bào)告中可用的信息:
- 效率統(tǒng)計(jì)信息(驅(qū)動(dòng)程序與執(zhí)行程序時(shí)間,關(guān)鍵和理想應(yīng)用時(shí)間,驅(qū)動(dòng)程序和執(zhí)行程序浪費(fèi)的核心計(jì)算時(shí)間)。
- 預(yù)測的掛鐘時(shí)間和具有不同執(zhí)行程序計(jì)數(shù)的群集利用率。
- 每階段指標(biāo)。
- 隨著時(shí)間的推移,可用的執(zhí)行器和所需的執(zhí)行器。
- 基于任務(wù)的匯總指標(biāo)。
結(jié)論
我和我的團(tuán)隊(duì)最近開始采用此工具,到目前為止,我們發(fā)現(xiàn)了解其他團(tuán)隊(duì)開發(fā)的Spark應(yīng)用程序的可伸縮性限制確實(shí)很有用,但是需要在我們的基礎(chǔ)架構(gòu)中執(zhí)行。 該工具生成的最終報(bào)告提供了一組全面的信息,這些信息絕對(duì)有助于指出正確的方向,以發(fā)現(xiàn)潛在的可伸縮性問題和需要改進(jìn)的地方。
生成的報(bào)告采用文本格式,其中包含上述所有指標(biāo)和信息。 Qubole提供了 在線服務(wù) ,可從上傳的JSON數(shù)據(jù)文件開始,生成具有交互式圖表和表格的用戶友好且優(yōu)雅的報(bào)告。 無論您是組織機(jī)構(gòu),還是不允許您共享在公司基礎(chǔ)結(jié)構(gòu)中運(yùn)行的Spark應(yīng)用程序上運(yùn)行Sparklens生成的JSON數(shù)據(jù),都需要保留文本報(bào)告。 為了解決此類情況,我正在考慮實(shí)現(xiàn)并發(fā)布一個(gè)開源Java庫,以在本地環(huán)境中從Sparklens JSON數(shù)據(jù)文件或文本報(bào)告開始生成用戶友好的報(bào)告。 請(qǐng)通過評(píng)論此帖子來注冊(cè)您對(duì)此庫的興趣。 謝謝。
翻譯自: https://www.javacodegeeks.com/2019/02/sparklens-tool-spark-applications-optimization.html
總結(jié)
以上是生活随笔為你收集整理的Sparklens:Spark应用程序优化工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米商城推出“特惠屏”活动,小米 13、
- 下一篇: 从StreamCorruptedExce