我正在向本地运行的容器式星火集群提交一个作业。火花版本3.2.1。我用的是比纳米的火花筒图像。
这项工作是用scala编写的。我创造了一个“胖罐子”。
现在,当我以客户端模式(--deploy-mode client
)将jar提交到集群(从本地容器到容器外部)时,在本地文件系统中提供jar的路径。工作成功完成。
但是,当我切换到集群模式(--deploy-mode cluster
)并提供指向上传到s3的jar的链接时,作业就失败了。我收到的错误是:
INFO DriverRunner: Launch Command: "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java" "-cp" "/Users/username/Downloads/spark-3.2.1/conf:/opt/bitnami/spark/jars/*" "-Xmx1024M" "-Dspark.driver.supervise=false" "-Dspark.app.name=CsvToDelta" "-Dspark.jars=linkToS3" "-Dspark.master=spark://localhost:7077" "-Dspark.submit.deployMode=cluster" "-Dspark.submit.pyFiles=" "-Dspark.rpc.askTimeout=10s" "org.apache.spark.deploy.worker.DriverWrapper" "spark://Worker@172.20.0.3:46501" "/opt/bitnami/spark/work/driver-20220908212120-0004/spark-scala-csv-to-delta_2.12-1.0.jar" "CsvToDelta"
spark-worker_1 | 22/09/08 21:22:39 INFO DriverRunner: Killing driver process!
spark-worker_1 | 22/09/08 21:22:39 WARN Worker: Driver driver-20220908212120-0004 failed with unrecoverable exception: java.io.IOException: Cannot run program "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java" (in directory "/opt/bitnami/spark/work/driver-20220908212120-0004"): error=2, No such file or directory
如您所见,它无法找到java可执行文件。这是因为它试图找到java的位置是不正确的。
"/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java"
是java存在于本地(容器外)的地方。在容器中,java存在于不同的路径中:/opt/bitnami/java/bin/java
我不明白为什么spark submit告诉驱动程序(我假设驱动程序正在工人容器上运行)在本地而不是容器有效的位置查找java (为什么spark提交告诉驱动程序在哪里找到java?)是因为在构建胖罐子的方式上有某种配置吗?(不应该是因为相同的jar在客户端模式下工作)
在集群模式下,我的submit命令如下所示:spark-submit --deploy-mode cluster --class "CsvToDelta" --master spark://localhost:7077 'linkToS3Jar'
客户端模式的命令:spark-submit --deploy-mode client --class "CsvToDelta" --master spark://localhost:7077 spark-scala-csv-to-delta_2.12-1.0.jar
发布于 2022-09-16 16:18:29
首先,将所有文件(包括jar)放置到HDFS中,然后运行星火提交集群模式。
https://stackoverflow.com/questions/73655323
复制相似问题