如何将pyspark作业从本地计算机提交到在AWS EC2实例上运行的Yarn / Hadoop集群?

时间:2019-02-20 19:19:08

标签: apache-spark hadoop amazon-ec2 pyspark

我创建了一个运行有Hadoop-2.7.3的AWS EC2实例,并在* -site.xml文件中使用了大多数默认配置。 我的core-site.xml仅包含以下条目:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>localhost:8020</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/tmp/hadoop-2.7.3</value>
        </property>
</configuration>

和其他条目也类似,我正在默认端口上运行所有程序。

现在,我已经实现了一个基本的pyspark代码[在我的本地计算机上],我想在我的AWS EC2实例上的YARN上运行,还想对同一节点上HDFS上的数据进行某些处理。< / p>

我已经使用winutils.exe在本地计算机上配置了Hadoop,还下载了spark-2.2.0-bin-hadoop2.7并正确设置了env。 HADOOP_HOME,SPARK_HOME,HADOOP_CONF_DIR的变量[指向从给定EC2实例下载的core-site.xml和hdfs-site.xml,我还在core-site.xml条目中为fs.defaultFS而不是本地主机添加了全局DNS] 。 当我尝试执行以下代码时:

spark = SparkSession.builder.master("yarn").appName("myappName").getOrCreate()
df = spark.read.format("csv").option("inferSchema", "true").option("sep", sep).option("header", header).load("hdfs://my.ec2.global.dns.ip:8020/test/data.csv")
print("extractedDF schema : ",extractedDF.printSchema())

使用本地计算机上的spark-submit:

spark-submit --py-files ../dependencies.zip ProcessingJob.py

它没有连接到我的EC2实例,并引发如下错误:

my.ec2.ip:8020 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

我能够通过namenode浏览所有文件:

my.ec2.global.dns.ip:50070

此外,我还从任何地方打开了所有端口的TCP端口,ICMP,HTTP以及对我的实例的访问。

我不确定我在这里想念什么。

任何快速参考对我都会有所帮助。

谢谢。

0 个答案:

没有答案