我创建了一个运行有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以及对我的实例的访问。
我不确定我在这里想念什么。
任何快速参考对我都会有所帮助。
谢谢。