因此,既然k8s在2.3中直接与spark集成,那么我从控制台发出的spark提交将在没有运行任何火花主播客的情况下正确地执行。因此,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向我的k8s集群提交一个火花。以前,我通过火花主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请求,并拥有了所有的k8s细节,最好是这样:
request = requests.Request(
'POST',
"k8s://https://myK8scluster.com:443",
data=json.dumps(parameters))在Spark2.3/Kubernetes集成中有可能吗?
发布于 2018-03-18 11:01:57
如果您使用本地Kubernetes支持,那么对于Spark2.3来说,这恐怕是不可能的。
根据来自部署指令的描述,提交过程容器有几个步骤:
因此,事实上,你没有地方提交一个工作,直到你开始一个提交过程,这将启动第一个火花的吊舱(司机)为你。在应用程序完成后,一切都结束了。
因为在AWS Lambda上运行fat容器并不是最好的解决方案,也因为if不是在容器本身运行任何命令的方法(这是可能的,但使用hack,下面是关于在AWS Lambda中执行Bash的蓝图 ),最简单的方法是编写一些小的自定义服务,它将在AWS之外的机器上工作,并在应用程序和spark-submit实用程序之间提供REST接口。我看不出有什么别的方法能让它不疼。
https://stackoverflow.com/questions/49263299
复制相似问题