我正在尝试在本地托管一个 spark 独立集群。我在 LAN 上连接了两台异构机器。下面列出的每个架构都在 docker 上运行。我有以下配置
- 机器 1 上的主机(端口 7077 暴露)
- 机器 1 上的工人
- 机器 2 上的驱动程序
我使用一个测试应用程序来打开一个文件并计算它的行数。当文件复制到所有工作人员和我使用时,该应用程序工作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```
在没有实际计算应用程序的情况下不断重复。
当我将驱动程序与工人放在同一台电脑上时,这是可行的。所以我猜想在网络上的这两个之间存在某种连接。您是否知道这样做的方法(要打开哪些端口,要在 /etc/hosts 中添加哪个地址...)