当前位置: 首页 > 知识库问答 >
问题:

基于Python的kubernetes集群的Spark submit(2.3)

邹俊拔
2023-03-14

现在k8s在2.3中直接与spark集成了,我的spark submit从控制台在kuberenetes master上正确执行,而没有运行任何spark master pods,spark处理k8s的所有细节:

spark-submit \
  --deploy-mode cluster \
  --class com.app.myApp \
  --master k8s://https://myCluster.com \
  --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
  --conf spark.app.name=myApp \
  --conf spark.executor.instances=10 \
  --conf spark.kubernetes.container.image=myImage \
  local:///myJar.jar

我正在尝试做的是做一个火花-提交通过AWS lambda到我的k8s集群。以前,我直接通过spark master REST API(不使用kubernetes)使用该命令:

request = requests.Request(
    'POST',
    "http://<master-ip>:6066/v1/submissions/create",
    data=json.dumps(parameters))
prepared = request.prepare()
session = requests.Session()
response = session.send(prepared)

而且奏效了。现在,我想集成Kubernetes,并以类似的方式实现,我从python向我的Kubernetes集群提交一个API请求,并让spark处理所有k8s细节,理想情况下是这样的:

request = requests.Request(
    'POST',
    "k8s://https://myK8scluster.com:443",
    data=json.dumps(parameters))

在Spark2.3/Kubernetes集成中有可能吗?

共有1个答案

朱通
2023-03-14

恐怕这对于Spark2.3是不可能的,如果您使用本机的Kubernetes支持的话。

根据部署指令的描述,提交流程容器包含了几个步骤:

  1. Spark创建在Kubernetes Pod中运行的Spark驱动程序。
  2. 驱动程序创建也在Kubernetes pods中运行的执行程序,并连接到这些执行程序,执行应用程序代码。
  3. 当应用程序完成时,执行程序pod终止并被清理,但驱动程序pod将保留日志并保持在Kubernetes API中的“已完成”状态,直到最终被垃圾收集或手动清理为止。
 类似资料:
  • 我使用KOPS在AWS上部署了一个工作的基于Kubernetes Gossip的集群。在这个问题上,我部署了Fabric8。命令“gofabric8 validate”表示成功。 光栅

  • 我正试图在我的kubernetes集群中安装Jenkins。当我探索的时候,我发现有两个方面。我理解的第一种方法是,安装詹金斯主从。在这里,我找到了在kubernetes集群上安装Jenkins主从代理的文档。第二种方法是我发现Kubernetes插件的用法。如果我们用这种方法,只需要安装master和配置插件。当创建一个部署时,从吊舱将自动工作。 在第一种方法中,我们需要定义安装主从机的工作机器

  • 本文描述了如何销毁 Kubernetes 集群上的 TiDB 集群。 销毁使用 TidbCluster 管理的 TiDB 集群 要销毁使用 TidbCluster 管理的 TiDB 集群,执行以下命令: kubectl delete tc ${cluster_name} -n ${namespace} 如果集群中通过 TidbMonitor 部署了监控,要删除监控组件,可以执行以下命令: kube

  • 在使用 TiDB 集群的过程中,如果你发现某个 Pod 存在内存泄漏等问题,需要对集群进行重启,本文描述了如何优雅滚动重启 TiDB 集群内某个组件的所有 Pod 或通过优雅重启指令来将 TiDB 集群内某个 Pod 优雅下线然后再进行重新启动。 警告: 在生产环境中,未经过优雅重启而手动删除某个 TiDB 集群 Pod 节点是一件极其危险的事情,虽然 StatefulSet 控制器会将 Pod

  • 基于 Kubernetes 环境部署的 TiDB 集群监控可以大体分为两个部分:对 TiDB 集群本身的监控、对 Kubernetes 集群及 TiDB Operator 的监控。本文将对两者进行简要说明。 TiDB 集群的监控 TiDB 通过 Prometheus 和 Grafana 监控 TiDB 集群。在通过 TiDB Operator 创建新的 TiDB 集群时,可以参考通过 TidbMo

  • 在 Kubernetes 集群内访问 TiDB 时,使用 TiDB service 域名 ${cluster_name}-tidb.${namespace} 即可。 若需要在集群外访问,则需将 TiDB 服务端口暴露出去。在 TidbCluster CR 中,通过 spec.tidb.service 字段进行配置: spec: ... tidb: service: ty