连接到 VM 上的 Spark 运行

Connect to Spark running on VM

我在 VirtualBox 上 Ubuntu 16.2 上有一个 Spark 环境 运行ning。它在本地配置为 运行,当我使用

启动 Spark 时

./start-all

我可以使用 URL 通过 web-ui 在 VM 上访问它:http://localhost:8080

从主机 (windows),我也可以使用 VM IP 访问它:http://192.168.x.x:8080.

当我尝试从我的主机创建上下文时出现问题。我在 eclipse 中有一个使用 maven 的项目,我尝试 运行 以下代码:

ConfigLoader.masterEndpoint = "spark://192.168.1.132:7077"

val conf = new SparkConf().setMaster(ConfigLoader.masterEndpoint).setAppName("SimpleApp")
val sc = new SparkContext(conf)

我收到这个错误:

16/12/21 00:52:05 INFO StandaloneAppClient$ClientEndpoint: Connecting to master spark://192.168.1.132:8080...
16/12/21 00:52:06 WARN StandaloneAppClient$ClientEndpoint: Failed to connect to master 192.168.1.132:8080
org.apache.spark.SparkException: Exception thrown in awaitResult
    at org.apache.spark.rpc.RpcTimeout$$anonfun.applyOrElse(RpcTimeout.scala:77)

我已经尝试更改 URL 为:

ConfigLoader.masterEndpoint = "spark://192.168.1.132:7077"

未成功。

此外,如果我尝试通过网络(VM 中的 http://localhost:7077)直接访问主 URL,我什么也得不到。不知道正常不正常

我错过了什么?

在您的 VM 中转到 spark-2.0.2-bin-hadoop2.7/conf 目录并使用以下命令创建 spark-env.sh 文件。

cp spark-env.sh.template spark-env.sh

在 vi 编辑器中打开 spark-env.sh 文件并添加以下行。

SPARK_MASTER_HOST=192.168.1.132

使用 stop-all.shstart-all.sh 停止和启动 Spark。现在在你的程序中你可以像下面这样设置 master。

val spark = SparkSession.builder()
  .appName("SparkSample")
  .master("spark://192.168.1.132:7077")
  .getOrCreate()