目前我在使用spark时遇到了一个问题。这是细节。
我在vm上设置了一个spark集群,它有三个节点,一个是主节点,另两个是工作节点。
spark版本是3.0.0。
我创建了一个应用程序,并将其部署到k8spod中。
然后我在我的k8s吊舱里启动了这个应用程序。
我在spark上下文中创建的代码是这样的。
代码:
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 executor命令:“/usr/lib/jvm/java-11-openjdk-11.0.7.10-4.el7\u 8.x86\u 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.grossgrainedeexecutorbackend”“--驱动程序url”"spark://coarsegrainedscheduler@my-spark-application-gjwd7:34471”“--执行器id”“281”“--主机名”“100.84.162.9”“--核心”“1”“--应用程序id”“app-20200722115716-0000”“--工作程序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
我认为这个问题是由于worker节点不能回调驱动程序造成的,因为我的驱动程序在k8s pod中。
你知道我怎样才能解决这个问题吗。我有些担心。1.如何在spark上下文的代码中设置驱动程序主机和端口?端口根据Spark随机。2.spark executor如何回调到驱动程序正在运行的k8s pod?
暂无答案!
目前还没有任何答案,快来回答吧!