无法在远程EC2实例上执行Spark任务

时间:2018-07-17 15:49:23

标签: amazon-web-services apache-spark amazon-ec2

我在EC2实例上运行了Spark 2.3。所有端口都是开放的,我从“ start-master.sh”和“ start-slave.sh”开始启动。我尝试使用Java与以下代码进行连接:

 SparkConf sparkConf = new SparkConf()
            .setAppName("myappname")
            .setMaster(System.getProperty("spark.master", "spark://<EC2 DNS>:7077"));

它似乎已连接,并且可以在Web UI中看到它。但是,当我尝试实际执行某些操作时,出现以下错误消息:

Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

应该有足够的可用资源,包括内核和内存,可以完成这项工作。我认为这是驱动程序(我的本地计算机)和工作程序(在EC2上)无法通信的问题。

1 个答案:

答案 0 :(得分:0)

我可以通过以下方法解决此问题:

使用Java更新我的SparkConf:

SparkConf sparkConf = new SparkConf()
    .setAppName("myappname")
    .setMaster(System.getProperty("spark.master", "spark://<EC2 DNS>:7077"))
    .set("spark.driver.host", "localhost")
    .set("spark.driver.port", String.valueOf(23584));

然后我运行它以建立SSH隧道:

ssh -R 23584:localhost:23584 ubuntu@<EC2 DNS>

您可以使用任何端口,我随机选择23584。我仍然有问题,但这似乎已经解决了我遇到的错误。