sparkmon
项目描述
描述
sparkmon 是一个Python包,用于监控Spark应用程序。您可以将其视为一个高级Spark UI,它跟踪所有Spark REST API指标随时间的变化,这使得它与其他解决方案相比相当独特(请参见下方的比较)。它特别适用于进行内存分析,包括Python UDF内存。
特性
监控绘图示例
免责声明:请注意,如果您以本地模式运行Spark,某些子图可能为空,sparkmon旨在分析在集群中运行的Spark应用程序。
记录执行器指标
绘制监控,显示在笔记本中,或导出为文件
可以监控远程Spark应用程序
可以直接在您的PySpark应用程序中运行,或在笔记本中运行,或通过命令行界面运行
记录到mlflow
与其他解决方案的比较
此包提供了比Spark UI或其他包更多的信息。以下是快速比较
-
在笔记本中有很好的集成
没有提供比Spark UI更多的信息,特别是在内存使用方面。
-
需要在本地启动服务器,可能在本地上较为困难。sparkmon不需要有可访问的端口。
仅监控CPU随时间的变化,sparkmon则监控所有内容,包括Java和Python内存随时间的变化。
自2018年以来没有更新
-
非常好且完整
但无法完全在本地运行
不是完全的开源
-
但无法完全在本地运行
不是完全的开源
需求
Python
Spark
mlflow(可选)
安装
$ pip install sparkmon
$ pip install sparkmon[mlflow]
用法
简单用例
import sparkmon
# Create and start the monitoring process via a Spark session
mon = sparkmon.SparkMon(spark, period=5, callbacks=[
sparkmon.callbacks.plot_to_image,
sparkmon.callbacks.log_to_mlflow,
])
mon.start()
# Stop monitoring
mon.stop()
更高级用例
import sparkmon
# Create an app connection
# via a Spark session
application = sparkmon.create_application_from_spark(spark)
# or via a remote Spark web UI link
application = sparkmon.create_application_from_link(index=0, web_url='http://localhost:4040')
# Create and start the monitoring process
mon = sparkmon.SparkMon(application, period=5, callbacks=[
sparkmon.callbacks.plot_to_image,
sparkmon.callbacks.log_to_mlflow,
])
mon.start()
# Stop monitoring
mon.stop()
您还可以从笔记本中使用它:笔记本示例
还有一个命令行界面,有关详细信息,请参阅命令行参考。
它是如何工作的?
SparkMon在后台运行一个Python线程,该线程查询Spark Web UI API并记录所有执行器随时间的信息。
callbacks列表参数允许您定义每次更新后要执行的操作,例如将执行器历史信息导出到csv文件,或将图表保存到文件或笔记本中。
贡献
欢迎贡献。要了解更多信息,请参阅贡献指南。
许可证
根据MIT许可证分发,sparkmon是免费和开源软件。
问题
如果您遇到任何问题,请详细描述后提交问题。
致谢
项目详情
下载文件
下载您平台的文件。如果您不确定要选择哪个,请了解安装包的更多信息。