apache-spark - Spark 执行器驱动程序未知主机问题
问题描述
目前我在使用 spark 时遇到了问题。这是详细信息。
- 我在 VM 上设置了一个具有三个节点的 Spark 集群,一个是主节点,另外两个是工作节点。
- Spark 版本为 3.0.0。
- 我创建了一个应用程序并将其部署到 K8S pod 中。
- 然后我在我的 K8S pod 中触发了应用程序。
- 我创建 Spark Context 的代码是这样的。
代码:
val conf = SparkConf().setMaster(sparkMaster).setAppName(appName)
.set("spark.cassandra.connection.host", hosts)
.set("spark.cassandra.connection.port", port.toString())
.set("spark.cores.max", sparkCore)
.set("spark.executor.memory", executorMemory)
.set("spark.network.timeout", "50000")
然后我得到了错误:
Spark 执行器命令:“/usr/lib/jvm/java-11-openjdk-11.0.7.10-4.el7_8.x86_64/bin/java”“-cp”“/opt/spark3/conf/:/opt/spark3/ jars/*:/etc/hadoop/conf" "-Xmx1024M" "-Dspark.network.timeout=50000" "-Dspark.driver.port=34471" "-Dspark.cassandra.connection.port=9042" "org. apache.spark.executor.CoarseGrainedExecutorBackend" "--driver-url" "spark://CoarseGrainedScheduler@my-spark-application-gjwd7:34471" "--executor-id" "281" "--hostname" "100.84. 162.9" "--cores" "1" "--app-id" "app-20200722115716-0000" "--worker-url" "spark://Worker@100.84.162.9:33670"
错误是这样的:
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
Caused by: org.apache.spark.SparkException: Exception thrown in awaitResult:
Caused by: java.io.IOException: Failed to connect to my-spark-application-gjwd7:34471
Caused by: java.net.UnknownHostException: my-spark-application-gjwd7
我认为这个问题是由于工作节点无法回调驱动程序引起的,因为我的驱动程序在 K8S pod 中。
你知道我该如何解决这个问题。我在这里有些担心。1.如何在我的代码中为火花上下文设置驱动程序主机和端口?根据 Spark,端口是随机的。2.Spark executor如何回调到驱动运行的K8S pod?
解决方案
推荐阅读
- react-native - 渲染不同组件(`Signinscreen`)时无法更新组件(`ForwardRef(BaseNavigationContainer)`)
- linux - 显示所有以 3 位数字开头的文件
- python - 如何使用flask框架将变量值从html文件传递到python文件?
- netsuite - 在供应商账单上复制自定义拒绝原因
- junit - 如何使用 bazel 向 junit xml 报告添加自定义属性?
- java - org.apache.solr.common.SolrException:未定义字段
- php - PHP scandir limit of files number
- c# - Asp.net core Razor 单选按钮未将所需值传递给控制器
- nvidia-jetson - 使用 Waveshare JetRacer Pro AI 套件在 2GB 版本的 Nano 上运行 JetRacer
- python - 评估和绘制具有不同 x 和 y 数组大小的函数 z = f(x,y)