背景
为什么为Apache Spark选择K8Apache Spark在一个平台上统一了批处理、实时处理、流分析、机器学习和交互式查询。尽管Apache Spark提供了许多功能来支持各种用例,但它为集群管理员带来了额外的复杂性和较高的维护成本。让我们看一下底层资源协调器的一些高级要求,以使Spark成为一个平台:
• 容器化的Spark计算可在不同的ML和ETL作业之间提供共享资源
• 支持在共享K8s集群上的多个Spark版本、Python版本和版本控制的容器,以实现更快的迭代和稳定的生产
• 单一、统一的基础架构,可同时处理大多数批处理工作负载和微服务
• 共享集群上的细粒度访问控制
与其他资源协调器相比,Kubernetes作为事实上的服务部署标准可在所有上述方面提供更好的控制。Kubernetes提供了一种简化的方法来管理基础架构和应用程序,并提供了一种实用的方法来隔离工作负载、限制资源的使用、按需部署资源以及根据需要自动扩展功能。 运行Apache Spark on K8S调度的挑战 Kubernetes默认调度程序在高效调度批处理工作负载方面存在差距,该集群中还将调度长期运行的服务。 由于所需的计算并行性,批处理工作负载大多需要一起调度,并且需要更频繁地调度。 让我们详细看看其中的一些差距。 缺乏一流的应用概念 批处理作业通常需要根据容器部署的类型按顺序安排。例如,Spark驱动程序pod需要比工作程序pod更早地调度。一个清晰的一流应用程序概念可以帮助对每个容器部署进行排序或排队。同样,这样的概念有助于管理员可视化计划用于调试目的的作业。 缺乏