2015-09-18 258 views
1

我在Amazon EC2实例中有一个linux实例。我在这个实例中手动安装了Spark并且工作正常。接下来,我想在亚马逊建立一个火花集群。 我在EC2上的文件夹运行以下命令:spark-submit亚马逊EC2

spark-ec2 -k mykey -i mykey.pem -s 1 -t t2.micro launch mycluster 

它成功地推出了主机和一个工作节点。我可以ssh进入主节点使用ssh -i mykey.pem ec2-user @ master

我还导出了密钥:AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。

我有一个jar文件(其中有一个简单的星火计划),我试图向到主:

spark-submit --master spark://<master-ip>:7077 --deploy-mode cluster --class com.mycompany.SimpleApp ./spark.jar 

,但我得到了以下错误:

Error connecting to master (akka.tcp://[email protected]<master>:7077). 
Cause was: akka.remote.InvalidAssociation: Invalid address: akka.tcp://[email protected]<master>:7077 
No master is available, exiting. 

我m也更新了主设备接受所有入站流量的EC2安全设置: 类型:所有流量,协议:全部,端口范围:全部,来源:0.0.0.0/0

+0

微观实例对于火花来说可能太小。我倾向于选择c3/c4实例,如果需要大量CPU来完成某项任务,像c3.8xlarge这样的较大型CPU可以减少对网络的需求,并且可以使用“现货定价”在一两个小时内实现负担得起低于零售价。 – Paul

回答

0

一个常见的初学者错误是假设Spark通信遵循一个程序来掌握和掌握工人层次结构,而现在却没有。

当您运行​​时,您的程序将附加到本地运行的驱动程序,该驱动程序与主站通信以获取工作人员的分配。司机然后与工人沟通。你可以看到这种和工人驱动器之间的通信(未掌握),在一些图在this slide presentation on Spark at Stanford

计算机运行​​能够与所有工人的沟通是很重要的,而不是简单的主人。虽然您可以在安全区域启动额外的EC2实例,以允许访问主控和员工或更改安全区域以包含家用PC,但最简单的方法是直接登录主控并运行​​,pysparkspark-shell主节点。

+1

谢谢!有效。 – user203617

+0

认为它的工作,但没有。我登录到master并执行:./spark-submit --master spark:// master:7077 --deploy-mode cluster --class com.mycompany.SimpleApp file.jar但奇怪的是它会为文件引发FileNotFoundException 。罐。我可以在独立模式下执行,file.jar就在那里。早些时候,我没有把在客户端模式下运行的--deploy-mode群集。 – user203617

+0

- 部署模式似乎会影响驱动程序的运行位置,即本地或工作人员,这可能会影响文件的位置。您可以使用URL或HDFS来分发jar文件,可能会更安全,因为应该发生的事情请参见:[Spark:高级依赖管理](https://spark.apache.org/docs/1.4.1/submitting-applications。 HTML#先进的依赖管理) – Paul