跳转到主要内容

sparkmon

项目描述

PyPI Python Version License

Read the documentation at https://sparkmon.readthedocs.io/ Tests Codecov

pre-commit Black

描述

sparkmon 是一个Python包,用于监控Spark应用程序。您可以将其视为一个高级Spark UI,它跟踪所有Spark REST API指标随时间的变化,这使得它与其他解决方案相比相当独特(请参见下方的比较)。它特别适用于进行内存分析,包括Python UDF内存。

特性

监控绘图示例

docs/_static/monitoring-plot-example.png

免责声明:请注意,如果您以本地模式运行Spark,某些子图可能为空,sparkmon旨在分析在集群中运行的Spark应用程序。

  • 记录执行器指标

  • 绘制监控,显示在笔记本中,或导出为文件

  • 可以监控远程Spark应用程序

  • 可以直接在您的PySpark应用程序中运行,或在笔记本中运行,或通过命令行界面运行

  • 记录到mlflow

与其他解决方案的比较

此包提供了比Spark UI或其他包更多的信息。以下是快速比较

  • sparkmonitor:

    • 在笔记本中有很好的集成

    • 没有提供比Spark UI更多的信息,特别是在内存使用方面。

  • sparklint:

    • 需要在本地启动服务器,可能在本地上较为困难。sparkmon不需要有可访问的端口。

    • 仅监控CPU随时间的变化,sparkmon则监控所有内容,包括Java和Python内存随时间的变化。

    • 自2018年以来没有更新

  • 数据力学之乐:

    • 非常好且完整

    • 但无法完全在本地运行

    • 不是完全的开源

  • Sparklens:

    • 但无法完全在本地运行

    • 不是完全的开源

需求

  • Python

  • Spark

  • mlflow(可选)

安装

您可以通过pipPyPI安装sparkmon

$ 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是免费和开源软件。

问题

如果您遇到任何问题,请详细描述后提交问题

致谢

该项目是从@cjolowiczHypermodern Python Cookiecutter模板生成的。

项目详情


下载文件

下载您平台的文件。如果您不确定要选择哪个,请了解安装包的更多信息。

源分发

sparkmon-0.1.10.tar.gz (16.6 kB 查看哈希值)

上传时间

构建分发

sparkmon-0.1.10-py3-none-any.whl (19.5 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面