Amazon ec2 AmazonEC2中的spark提交

Amazon ec2 AmazonEC2中的spark提交,amazon-ec2,apache-spark,Amazon Ec2,Apache Spark,我在AmazonEC2实例中有一个linux实例。我在这个实例中手动安装了Spark,它运行良好。接下来,我想在亚马逊建立一个spark集群。 我在ec2文件夹中运行了以下命令: spark-ec2 -k mykey -i mykey.pem -s 1 -t t2.micro launch mycluster 它成功地启动了主节点和工作节点。我可以使用ssh-I mykey.pem ec2将ssh连接到主节点-user@master 我还导出了密钥:AWS\u ACCESS\u KEY\u I

我在AmazonEC2实例中有一个linux实例。我在这个实例中手动安装了Spark,它运行良好。接下来,我想在亚马逊建立一个spark集群。 我在ec2文件夹中运行了以下命令:

spark-ec2 -k mykey -i mykey.pem -s 1 -t t2.micro launch mycluster
它成功地启动了主节点和工作节点。我可以使用ssh-I mykey.pem ec2将ssh连接到主节点-user@master

我还导出了密钥:AWS\u ACCESS\u KEY\u ID和AWS\u SECRET\u ACCESS\u KEY

我有一个jar文件(它有一个简单的Spark程序),我试图提交给master:

 spark-submit --master spark://<master-ip>:7077 --deploy-mode cluster --class com.mycompany.SimpleApp ./spark.jar
spark提交--主spark://:7077--部署模式集群--类com.mycompany.SimpleApp./spark.jar
但我得到了以下错误:

 Error connecting to master (akka.tcp://sparkMaster@<master>:7077).
 Cause was: akka.remote.InvalidAssociation: Invalid address:    akka.tcp://sparkMaster@<master>:7077
 No master is available, exiting.
连接到主机(akka)时出错。tcp://sparkMaster@:7077). 原因是:akka.remote.InvalidAssociation:无效地址:akka。tcp://sparkMaster@:7077 没有可用的主机,正在退出。 我还更新了EC2安全设置,以便master接受所有入站流量:
类型:所有通信量,协议:所有,端口范围:所有,源:0.0.0.0/0

初学者的一个常见错误是假设Spark通信遵循程序到主程序和主程序到工作程序的层次结构,而目前它没有

当您运行
spark submit
时,您的程序将连接到本地运行的驱动程序,该驱动程序将与主机通信以获得工作人员的分配。然后司机与工人沟通。您可以在中的许多图表中看到驱动程序(而不是主控程序)和工作程序之间的这种通信


运行
spark submit
的计算机必须能够与所有工作人员通信,而不仅仅是与主机通信。虽然您可以在安全区域中启动一个额外的EC2实例,允许访问主机和工作程序,或者更改安全区域以包括您的家用电脑,但最简单的方法可能是登录主机并运行
spark submit
,主节点的
pyspark
spark shell

初学者的一个常见错误是假设spark通信遵循程序到主节点和主节点到工作节点的层次结构,而目前它没有

当您运行
spark submit
时,您的程序将连接到本地运行的驱动程序,该驱动程序将与主机通信以获得工作人员的分配。然后司机与工人沟通。您可以在中的许多图表中看到驱动程序(而不是主控程序)和工作程序之间的这种通信


运行
spark submit
的计算机必须能够与所有工作人员通信,而不仅仅是与主机通信。虽然您可以在安全区域中启动一个额外的EC2实例,允许访问主机和工作程序,或者更改安全区域以包括您的家用电脑,但最简单的方法可能是登录主机并运行
spark submit
,主节点的
pyspark
spark shell

微实例对于spark可能太小。我倾向于选择c3/c4实例,如果一项任务需要大量的CPU,那么像c3.8XL这样的大型实例可以减少联网的需要,并且可以通过低于零售价的“现货价格”支付一到两个小时的临时使用。对于spark来说,微型实例可能太小了。我倾向于选择c3/c4实例,如果一项任务需要大量的CPU,那么像c3.8XL这样的大型实例可以减少联网的需要,并且可以通过低于零售价的“现货价格”支付一到两个小时的临时使用费用。我认为这是可行的,但没有。我登录到主机并执行:./spark submit--masterspark://master:7077 --部署模式集群——类com.mycompany.SimpleApp file.jar,但奇怪的是,它抛出file.jar的FileNotFoundException。我可以在独立模式下执行,file.jar就在那里。前面我没有放--deploy mode cluster,它是在客户机模式下运行的。-deploy mode似乎会影响驱动程序运行的位置,即本地或工作区,这可能会影响文件需要运行的位置。您可以使用URL或HDF来分发JAR,这可能会更安全,因为应该发生的事情请参见:虽然它有效,但没有。我登录到主机并执行:./spark submit--masterspark://master:7077 --部署模式集群——类com.mycompany.SimpleApp file.jar,但奇怪的是,它抛出file.jar的FileNotFoundException。我可以在独立模式下执行,file.jar就在那里。前面我没有放--deploy mode cluster,它是在客户机模式下运行的。-deploy mode似乎会影响驱动程序运行的位置,即本地或工作区,这可能会影响文件需要运行的位置。您可以使用URL或HDF来分发JAR,这可能更安全,因为应该发生什么请参见: