[英]Connecting to remote master on standalone Spark
我通過以下步驟在遠程服務器上以獨立模式啟動Spark:
cp spark-env.sh.template spark-env.sh
spark-env.sh
SPARK_MASTER_HOST=IP_OF_MY_REMOTE_SERVER
sbin/start-master.sh
sbin/start-slave.sh spark://IP_OF_MY_REMOTE_SERVER:7077
我嘗試連接到遠程主控:
val spark = SparkSession.builder()
.appName("SparkSample")
.master("spark://IP_OF_MY_REMOTE_SERVER:7077")
.getOrCreate()
我收到以下錯誤:
ERROR SparkContext: Error initializing SparkContext.
java.net.BindException: Cannot assign requested address: Service 'sparkDriver' failed after 16 retries!
和警告:
WARN Utils: Service 'sparkMaster' could not bind on port 7077. Attempting port 7078.
.....
WARN Utils: Service 'sparkMaster' could not bind on port 7092. Attempting port 7092.
我建議不要使用端口打開策略遠程提交火花作業,因為它可能會產生安全問題,而且根據我的經驗,比它的價值更麻煩,特別是由於必須對通信層進行故障排除。
備擇方案:
1)Livy - 現在是一個Apache項目! http://livy.io或http://livy.incubator.apache.org/
2)Spark Job服務器 - https://github.com/spark-jobserver/spark-jobserver
類似的問答: 遠程向Spark EC2集群提交作業
如果你堅持連接沒有像Livy這樣的庫,那么打開端口以確保需要通信。 Spark網絡通訊文檔: http : //spark.apache.org/docs/latest/security.html#configuring-ports-for-network-security
由於您沒有使用YARN(根據您的獨立設計),YARN遠程提交的先前鏈接可能不相關。
Spark文檔說
spark.driver.port
(random) Port for the driver to listen on. This is used for communicating with the executors and the standalone Master.
spark.port.maxRetries
16 Maximum number of retries when binding to a port before giving up. When a port is given a specific value (non 0), each subsequent retry will increment the port used in the previous attempt by 1 before retrying. This essentially allows it to try a range of ports from the start port specified to port + maxRetries.
您需要確保Spark Master在端口7077上的遠程主機上運行。此外,防火牆必須允許連接到它。
和
此外,您需要將core-site.xml文件從群集復制到HADOOP_CONF_DIR,以便Spark服務可以讀取hadoop設置,例如主服務器的IP地址。 在這里閱讀更多..
希望能幫助到你!
spark-jobserver似乎非常誘人但有一些問題。 我推薦“隱藏”的火花REST api! 它沒有記錄,但它非常簡單,更舒適,不像需要維護的jobserver(另外你需要擔心和解決問題 - 它有它的問題)你還有很棒的庫 - https://github.com/ ywilkof /火花工作休息-客戶端
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.