簡體   English   中英

盡管設置了綁定地址,ApplicationMaster 仍無法找到 Spark 驅動程序(集群模式紗線)

[英]ApplicationMaster not able to find Spark Driver despite binding address set (Cluster Mode Yarn)

我有 3 個節點集群,通過 UI 顯示一切都連接良好。 現在,如果我確實提交了部署模式為集群的 Spark 應用程序,那么我會得到: java.net.BindException: Cannot assign requested address: bind: Service 'sparkDriver' failed 日志中的完整錯誤(從站之一的日志)(當應用程序在當前節點上啟動時,它運行良好。
Spark 會話定義如下:

 SparkSession spark = SparkSession.builder().enableHiveSupport().appName("sparkApp")
.master("yarn").config("spark.driver.host","VM2").getOrCreate();

2021-11-09 17:59:52,149 錯誤 yarn.ApplicationMaster:未捕獲的異常:org.apache.spark.SparkException:awaitResult 中拋出的異常:在 org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:301 ) 在 org.apache.spark.deploy.yarn.ApplicationMaster.runDriver(ApplicationMaster.scala:504) 在 org.apache.spark.deploy.yarn.ApplicationMaster.run(ApplicationMaster.scala:268) 在 org.apache.spark。 deploy.yarn.ApplicationMaster$$anon$3.run(ApplicationMaster.scala:899) 在 org.apache.spark.deploy.yarn.ApplicationMaster$$anon$3.run(ApplicationMaster.scala:898) 在 java.security.AccessController。 doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730) at org.apache.spark.deploy。 yarn.ApplicationMaster$.main(ApplicationMaster.scala:898) at org.apache.spark.deploy.yarn.ApplicationMaster.main(ApplicationMaster.scala) 引起:java.net.BindException:無法分配請求的地址 ss: bind: 服務 'sparkDriver' 重試 16 次后失敗(在隨機空閑端口上)! 考慮將服務“sparkDriver”的適當綁定地址(例如 SparkDriver 的 spark.driver.bindAddress)顯式設置為正確的綁定地址。 在 sun.nio.ch.Net.bind0(Native Method) 在 sun.nio.ch.Net.bind(Net.java:438) 在 sun.nio.ch.Net.bind(Net.java:430) 在 sun .nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:225) 在 io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:134) 在 io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel) .java:550) 在 io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334) 在 io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506) 在 io.netty.channel.AbstractChannelHandlerContext。 bind(AbstractChannelHandlerContext.java:491) at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973) at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:248) at io.netty.bootstrap.AbstractBootstrap $2.run(AbstractBootstrap.java:356) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) at io.netty.util.concurrent。 SingleThreadEventExecutor.runAllTask​​s(SingleThreadEventExecutor.java:472) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:98) io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 在 io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 在 java.lang.Thread.run(Thread.java) :748)

也通過這個 Yarn 接口用戶界面 , 如果應用程序執行的第一次嘗試是在 VM2(當前節點)上完成,則它會運行,否則不會(除非第二次嘗試是在 VM2 上)

我認為你應該改變你的代碼:

SparkSession spark = SparkSession.builder().enableHiveSupport().appName("sparkApp").master("yarn").getOrCreate();

您使用的是 YARN(非獨立),您無需指定驅動程序。 Yarn 為您完成任務。

文檔確實說:

spark.driver.host:驅動程序的主機名或 IP 地址。 這用於與 executors 和獨立的 Master通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM