GCP推出Spark Operator,能在云计算以Kubernetes执行Apache Spark

GCP现为Apache Spark推出Kubernetes Operator,简称Spark Operator,能够让用户在云计算原生地使用Kubernetes管理Spark应用程序。

Spark Operator由于原生集成Kubernetes,可以执行、监控和管理Spark应用程序生命周期。 Google提到,Spark Operator为Kubernetes自定义的控制器,能对Spark应用程序进行高精细度的生命周期管理,包括使用可配置的重启政策,自动重新启动Spark应用程序,以及执行使用Cron调度的应用程序。

Spark Operator也提供高度弹性的功能,还集成日志记录和监控等Kubernetes服务,让用户可以创建描述Spark应用程序的声明式规范,并使用Kubernetes原生工具诸如Kubectl,来管理应用程序。用户能获得通用控制接口,以管理Kubernetes的各式工作负载,简化应用程序管理工作,并提高集群资源利用率。

Google在Spark Operator中支持Apache Spark 2.4,并为Python和R语言量身定做Docker镜像文件,供用户在Kubernetes上执行PySpark和SparkR应用程序。另外,Spark Operator还有客户端模式,允许如Spark Shell等交互式应用程序,以及Jupyter和Apache Zeppelin笔记本等数据科学工具,原生地在Kubernetes上执行。也因为Apache Spark 2.4为Kubernetes添加的强化和修复功能,让其原生Kubernetes集成更加可靠。

Spark Operator集成了多种GCP服务,包括记录和监控服务Stackdriver,以及分析数据存储BigQuery。其以Prometheus数据格式公开应用程序等级的指标,并自动设置Spark应用程序,提供驱动程序与执行器(Executor)等级的Prometheus指标。结合Prometheus以及Stackdriver,集群可以自动收集指标并将其发送至Stackdriver进行监控,当应用程序在GKE上执行时,系统将会自动收集驱动程序与执行器日志,并推送至Stackdriver。

Spark Operator还提供了命令行工具sparkctl,能用来自动检测应用程序在用户计算机上的依赖性,并将其上传至云计算存储桶中,并把客户端的本机依赖性,替换成存储在云计算的应用程序规范,如此便能大幅简化客户端应用程序在Kubernetes环境的依赖性设置。

另外,Spark Operator还附带了一个自定义的Spark 2.4 Dockerfile,在应用程序中支持输入或是输出数据至云计算存储,Dockerfile也支持Prometheus JMX输出器,当Spark Operator激活Prometheus监控时,该输出器为默认使用和配置应用程序的方法。