新为Apache火花在Apache Kubernetes火花2.4版本
更新:11/12/2018
这是一个社区的博客忆南向李谷歌的软件工程师,工作在Kubernetes引擎团队。他是集团公司的一部分,是导致Kubernetes支持Apache火花测试盒框。
自从Kubernetes集群调度程序后端最初介绍了Apache 2.3火花,社区一直在一些重要的新特性,使火花Kubernetes更有用,准备更广泛范围的用例。的Apache 2.4火花发布了一些新功能,其中一些强调如下:
- 支持运行集装箱PySpark Kubernetes SparkR应用程序。
- 客户机模式支持,允许用户运行交互式应用程序和笔记本。
- 支持安装某些类型的Kubernetes卷。
下面我们将更深层次的考虑每一个新特性。
PySpark支持
即将发布的火花2.4现在支持在Kubernetes PySpark运行应用程序。Python 2。x和3。x支持,主要版本的Python可以指定使用新的配置属性spark.kubernetes.pyspark.pythonVersion
2或3,可以有价值但默认为2。火花附带一个Dockerfile基础镜像的Python绑定所需Kubernetes上PySpark运行应用程序。用户可以使用Dockerfile构建基础镜像或定制构建一个定制的映像。
火花R支持
火花在Kubernetes火花2.4现在支持运行R应用程序。火花附带的Dockerfile基图像的R绑定运行所需Kubernetes应用程序。用户可以使用Dockerfile建立一个基础图像或定制它构建一个定制的映像。
客户机模式支持
最要求的特性之一tripwire发布以来,客户机模式支持2.4现在可以在即将到来的火花。客户机模式允许用户运行交互式工具,如spark-shell或笔记本pod Kubernetes集群或运行在客户端机器集群外。注意,在这两种情况下,用户负责正确建立连接的执行人豆荚在集群中运行的驱动程序。当司机运行在一个集群中pod,推荐的方法是使用一个Kubernetes无头服务允许执行器连接到驱动程序使用的FQDN司机吊舱。当司机运行在集群之外,然而,重要的是为用户确保司机可以从集群中的遗嘱执行人吊舱。更详细的信息在客户端模式的支持,请参考文档时引发2.4正式发布。
其他值得注意的变化
除了上面的新特性突出,Kubernetes集群调度程序后端在即将到来的火花2.4版本也收到了一些bug修复和改进。
- 一个新的配置属性
spark.kubernetes.executor.request.cores
介绍了配置的物理CPU请求执行人豆荚的方式符合Kubernetes吗公约。例如,用户现在可以使用分数值或millicpus像0.5或500米。值是用于设置CPU要求容器执行程序运行。 火花驱动程序运行在一个舱在Kubernetes集群不再使用了init-container下载远程应用程序依赖项,例如,罐子和远程HTTP服务器上的文件,HDFS, AWS S3,或谷歌云存储。相反,司机使用spark-submit在客户端模式下,自动获取这样的远程依赖火花惯用的方式。
用户现在可以指定图像的秘密把火花图像从私人容器注册,使用新的配置属性
spark.kubernetes.container.image.pullSecrets。
用户现在可以通过secretKeyRef使用Kubernetes秘密作为环境变量。这是通过使用新的配置选项
spark.kubernetes.driver.secretKeyRef [EnvName]。
和spark.kubernetes.executor.secretKeyRef [EnvName]。
分别对司机和执行者。Kubernetes调度器的后端代码运行在司机现在管理执行人吊舱采用level-triggered机制和更健壮的问题跟Kubernetes API服务器。
结论和未来的工作
首先,我们想表达感谢Apache火花从多个组织和Kubernetes社区贡献者(彭博社、砖、谷歌、Palantir PepperData, Red Hat, Rockset和其他人)已经投入巨大的努力到这工作和帮助火花Kubernetes这么远。展望未来,社区正在或计划工作特性,进一步增强Kubernetes调度程序的后端。一些可用的特性,可能会在未来引发释放下面列出。
- 支持使用豆荚模板自定义驱动程序和执行人豆荚。这允许最大的灵活性为定制的司机和执行人豆荚。例如,用户可以任意卷或山ConfigMaps使用这个特性。
- 动态资源分配和外部转移服务。
- 支持Kerberos身份验证,例如,用于访问安全的HDFS。
- 更好地支持本地应用程序依赖于提交客户端机器。
- 司机火花流媒体应用程序的韧性。