我刚开始在Kubernetes上运行Spark,我有一个非常简单的应用程序,我正在尝试将其打包在我已经安装的星火K8s集群中运行。我面临的挑战是如何打包我的应用程序运行在星火?我在火花算子的K8上安装了Spark,我注意到示例中使用了图像gcr.io/spark-operator/spark:v3.0.0。
我注意到火花文档提到这个docker-image-tool.sh脚本来生成一个应用程序。但这看起来像是定制的环境定制。我只想要一个轻量级的图像,我的应用程序可以用来运行星火集群。不知道怎么把这一切联系起来。
所以我从文档中看到了两个选项
docker-image-tool.sh脚本。但是我不确定我需要选择哪个选项,或者什么时候使用这两个选项?为什么要用一个而另一个呢?还有别的选择吗?是否有一个预先构建的映像,我可以将我的应用程序复制到并使用它来运行?
发布于 2020-09-10 23:59:26
星星之火的docker-image-tool.sh是一个创建星火形象的工具脚本。如果您想要一个轻量级的码头映像,您只需调整项目附带的Dockerfile,或者编写您自己的Dockerfile--也不要忘记编辑entrypoint.sh脚本。
通常,将Spark应用程序转到Kubernetes的步骤如下所示:
-m标志移动它到迷你库env。spark-submit命令。注意:如果您没有在Kubernetes上投入那么多资金,并且只想快速尝试整个平台,只需运行以下命令就可以代理kube-api-server:
kubectl proxy它将开始在localhost:8001上为api服务器提供服务,然后您可以通过运行以下命令来提交spark应用程序
bin/spark-submit \
--master k8s://http:localhost:8001 \ #If you don't specify the protocol here, it'd default to https
--deploy-mode client \ #if you want to go for `cluster mode` then you'd have to set up a service account
--name sparkle \
--class edu.girdharshubham \
--conf spark.executor.instances=1 \ #Number of pods
--conf spark.kubernetes.container.image=<your-spark-image>
--conf spark.kubernetes.driver.pod.name="sparkle"
--conf spark.kubernetes.hadoop.configMapName="HADOOP_CONF_DIR"
--conf spark.kubernetes.executor.deleteOnTermination
path/to/jar在客户端模式下运行的考虑因素:
init。spark.kubernetes.executor.deleteOnTermination -如果刚开始,这个conf应该是您去conf的地方,默认情况下,在失败或正常终止的情况下,吊舱会被删除。这将帮助您更快地调试您的执行器吊舱所发生的事情--不管它们是否失败。发布于 2020-09-11 17:34:41
我想我把你弄糊涂了。准备星火分布的图像和打包你的应用程序是两件事。下面是如何使用Kuberentes作为调度器来部署应用程序。
第一步:建立星火的形象
./bin/docker-image-tool.sh -r asia.gcr.io/menace -t v3.0.0 build步骤2:将图像推送到您的码头注册中心
./bin/docker-image-tool.sh -r asia.gcr.io/menace -t v3.0.0 push步骤3:配置您的Kubernetes以便能够提取您的映像,在大多数情况下,它只需要设置imagePullSecrets。
第四步:编写您的星火应用程序
package edu.girdharshubham
import scala.math.random
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession
object Solution {
def main(args: Array[String]) {
val spark = SparkSession
.builder
.master("k8s://http://localhost:8001")
.config("spark.submit.deployMode","client")
.config("spark.executor.instances", "2")
.config("spark.kubernetes.container.image", "asia.gcr.io/menace/spark:v3.0.0")
.appName("sparkle")
.getOrCreate()
import spark.implicits._
val someDF = Seq(
(8, "bat"),
(64, "mouse"),
(-27, "horse")
).toDF("number", "word")
println("========================================================")
println(someDF.take(1).foreach(println))
println("========================================================")
spark.stop()
}
}步骤4:运行应用程序
sbt run这将导致在群集上生成执行程序荚。
步骤5:打包应用程序
sbt package步骤6:使用星火提交命令运行应用程序--请参阅我的初步答案。
接下来是关于打包Spark发行版的问题,请注意打包的版本和使用的依赖项。星星之火对版本有点不确定。
https://stackoverflow.com/questions/63838521
复制相似问题