amz*_*mza 5 python apache-spark kubernetes aws-lambda
因此,既然 k8s 在 2.3 中直接与 spark 集成,我从控制台提交的 spark 提交在 kuberenetes master 上正确执行,而没有运行任何 spark master pod,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
Run Code Online (Sandbox Code Playgroud)
我想要做的是通过 AWS lambda 向我的 k8s 集群进行 spark-submit。以前我直接通过 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)
Run Code Online (Sandbox Code Playgroud)
它奏效了。现在我想集成 Kubernetes 并在我从 python 向我的 kubernetes 集群提交 API 请求的情况下执行类似的操作,并让 spark 处理所有 k8s 细节,理想情况下是这样的:
request = requests.Request(
'POST',
"k8s://https://myK8scluster.com:443",
data=json.dumps(parameters))
Run Code Online (Sandbox Code Playgroud)
是否可以在 Spark 2.3/Kubernetes 集成中使用?
如果您使用原生 Kubernetes 支持,恐怕这对于 Spark 2.3 来说是不可能的。
\n\n根据部署指令的描述,容器提交过程分为以下几个步骤:
\n\n因此,事实上,在开始提交过程之前,您没有地方可以提交作业,这将为您启动第一个 Spark 的 pod(驱动程序)。申请完成后,一切都结束了。
\n\n因为在 AWS Lambda 上运行胖容器并不是最好的解决方案,而且也因为这不是在容器本身中运行任何命令的方法(这是可能的,但是通过 hack,这里是关于在 AWS Lambda 中执行 Bash 的蓝图)最简单的方法是编写一些小型自定义服务,它将在 AWS Lambda 之外的计算机上运行,并在应用程序和spark-submit实用程序之间提供 REST 接口。我看不出有任何其他方法可以不痛苦地做到这一点。
| 归档时间: |
|
| 查看次数: |
1723 次 |
| 最近记录: |