如何在节点自动缩放下运行Spark客户端模式

时间:2019-09-03 12:19:37

标签: azure apache-spark kubernetes pyspark azure-databricks

我有一个要求,我找不到合适的答案。

我们有一个桌面应用程序,希望将计算量爆发到Spark。要求桌面应用程序在保持与群集的上下文的意义上表现得更像笔记本,因此,例如,我们可以重用缓存的数据帧以进行有效的重新计算。

因此,提交此Spark作业的spark-submit或REST API的概念不适用于此用例。我以为合适的设计是在与Spark相同的VNET中创建一个Web服务器,并将该Web服务器用作我的驱动程序节点,从那里创建一个SparkSession并通过Web API服务用户请求。

想法是UI向Web服务器发送模型定义,Web服务器将其转换为火花图,并且用户可以迭代地处理该图的节点,对其进行修改,重新计算和扩展图,而不必从头开始。从头开始-就像笔记本,而不是工作。

但是我找不到一种可靠的方法来进行这种设计,但又拥有一个自动缩放的群集(例如Azure AKS节点自动缩放器):

  • Databricks不支持客户端模式
  • 我也找不到HDInsight Spark的任何证据
  • 在Kubernetes上运行火花,但是Spark Kubernetes目前不支持动态分配
  • 即使Spark Kubernetes确实支持动态分配,我相信我仍然不会减少所需的节点规模,因为洗牌服务可以防止节点被释放

那我该怎么办?

我了解Databricks同时具有REST API和Databricks-connect功能,但我不想将其绑定到Databricks生态系统中。同样,Apache Livy和Job-Server也不适用于这些目的,因为它们更专注于提交作业。

我所追求的是一个Spark集群环境,我可以拥有一个运行时间很长的驱动程序进程,但是可以根据需求扩展工作进程。我不喜欢客户端模式,也不愿意在集群之外进行sparksession,但是我认为这是唯一的方法吗?

0 个答案:

没有答案