mat*_*sbe 1 apache-spark apache-spark-standalone spark-submit
我正在尝试在本地托管一个 Spark 独立集群。我有两台连接在 LAN 上的异构计算机。下面列出的架构的每个部分都在 docker 上运行。我有以下配置
我使用一个测试应用程序来打开一个文件并计算其行数。当文件复制到所有工作人员上并且我使用时,该应用程序可以工作SparkContext.readText()
但是,当我在工作人员上访问该文件时,该文件仅存在于SparkContext.parallelize()
工作人员上时,我会显示以下内容:
INFO StandaloneSchedulerBackend: Granted executor ID app-20180116210619-0007/4 on hostPort 172.17.0.3:6598 with 4 cores, 1024.0 MB RAM
INFO StandaloneAppClient$ClientEndpoint: Executor updated: app-20180116210619-0007/4 is now RUNNING
INFO StandaloneAppClient$ClientEndpoint: Executor updated: app-20180116210619-0007/4 is now EXITED (Command exited with code 1)
INFO StandaloneSchedulerBackend: Executor app-20180116210619-0007/4 removed: Command exited with code 1
INFO StandaloneAppClient$ClientEndpoint: Executor added: app-20180116210619-0007/5 on worker-20180116205132-172.17.0.3-6598 (172.17.0.3:6598) with 4 cores```
Run Code Online (Sandbox Code Playgroud)
这种情况不断重复,而无需实际计算应用程序。
当我将驱动程序与工作人员放在同一台电脑上时,这是有效的。所以我猜想网络上的两个人之间存在某种连接。您是否知道如何做到这一点(要打开哪些端口,要在 /etc/hosts 中添加哪些地址...)
TL;DR确保spark.driver.host:spark.driver.port
可以从集群中的每个节点进行访问。
一般来说,您必须确保所有节点(执行程序和主节点)都可以到达驱动程序。
spark.driver.host
必须解析为可公开访问的地址。在这两种情况下,您都必须记住,默认情况下驱动程序在随机端口上运行。可以通过设置使用固定的spark.driver.port
。显然,如果您想同时提交多个申请,这效果不太好。
此外:
当文件仅存在于工作人员上时
行不通的。所有输入都必须可以从驱动程序以及每个执行程序节点访问。
归档时间: |
|
查看次数: |
3932 次 |
最近记录: |