首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中kubernetes集群的Spark提交(2.3)

Python中kubernetes集群的Spark提交(2.3)
EN

Stack Overflow用户
提问于 2018-03-13 18:24:00
回答 1查看 2K关注 0票数 5

因此,既然k8s在2.3中直接与spark集成,那么我从控制台发出的spark提交将在没有运行任何火花主播客的情况下正确地执行。因此,spark处理所有的k8s详细信息:

代码语言:javascript
复制
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向我的k8s集群提交一个火花。以前,我通过火花主REST API直接使用了这个命令(没有kubernetes):

代码语言:javascript
复制
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请求,并拥有了所有的k8s细节,最好是这样:

代码语言:javascript
复制
request = requests.Request(
    'POST',
    "k8s://https://myK8scluster.com:443",
    data=json.dumps(parameters))

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-18 11:01:57

如果您使用本地Kubernetes支持,那么对于Spark2.3来说,这恐怕是不可能的。

根据来自部署指令的描述,提交过程容器有几个步骤:

  1. 火花创造了一个火花驱动器运行在库伯内特斯吊舱。
  2. 驱动程序创建在Kubernetes吊舱中运行的执行器并连接到它们,并执行应用程序代码。
  3. 当应用程序完成时,执行器荚终止并被清理,但是驱动程序结束符保存日志,并在Kubernetes API中保持“完成”状态,直到它最终被垃圾收集或手动清除为止。

因此,事实上,你没有地方提交一个工作,直到你开始一个提交过程,这将启动第一个火花的吊舱(司机)为你。在应用程序完成后,一切都结束了。

因为在AWS Lambda上运行fat容器并不是最好的解决方案,也因为if不是在容器本身运行任何命令的方法(这是可能的,但使用hack,下面是关于在AWS Lambda中执行Bash的蓝图 ),最简单的方法是编写一些小的自定义服务,它将在AWS之外的机器上工作,并在应用程序和spark-submit实用程序之间提供REST接口。我看不出有什么别的方法能让它不疼。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49263299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档