我尝试使用本地 Ubuntu 虚拟机作为 master 和一个远程 Ubuntu 虚拟机作为 worker 构建一个 Spark 集群。由于本地虚拟机在 virtualbox 中运行,为了使其可被远程访客访问,我将虚拟机的 7077 端口转发到主机的 7077 端口。我开始掌握:
./sbin/start-master.sh -h 0.0.0.0 -p 7077
Run Code Online (Sandbox Code Playgroud)
我让它监听0.0.0.0,因为如果我使用默认值127.0.1.1,远程来宾将无法连接到它。我通过在远程机器上执行以下命令来启动工作程序:
./bin/spark-class org.apache.spark.deploy.worker.Worker
spark://129.22.151.82:7077
Run Code Online (Sandbox Code Playgroud)
worker 能够连接到 master,这可以在 UI 上看到:

然后我尝试运行“pi”示例python代码:
from pyspark import SparkContext, SparkConf
conf=SparkConf().setAppName("Pi").setMaster("spark://0.0.0.0:7077)
sc=SparkContext(conf=conf)
Run Code Online (Sandbox Code Playgroud)
.... 一旦我运行它,程序就永远不会停止,我注意到程序总是在删除和添加执行程序,因为执行程序总是以错误代码 1 退出。这是执行程序的stderr:
Using Spark's default log4j profile: org/apache/spark/log4j- defaults.properties
16/02/25 13:22:22 INFO CoarseGrainedExecutorBackend:
Registered signal handlers for [TERM, HUP, INT]
16/02/25 13:22:22 WARN NativeCodeLoader: Unable to load
native-hadoop library for your platform... using …Run Code Online (Sandbox Code Playgroud)