Я создал экземпляр AWS EC2 с запущенным на нем Hadoop-2.7.3 с большинством конфигураций по умолчанию в * -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[на моем локальном компьютере], который я хочу запустить на YARN, присутствующем в моем экземпляре AWS EC2, а также я хочу выполнить определенную обработку данных, присутствующих в HDFS на том же узле.
Я настроил Hadoop на своемлокальный компьютер, использующий winutils.exe, также скачал spark-2.2.0-bin-hadoop2.7 и правильно установил env.переменные для HADOOP_HOME, SPARK_HOME, HADOOP_CONF_DIR [указывающие на core-site.xml и hdfs-site.xml, загруженные из данного экземпляра EC2, также я добавил Global DNS в запись core-site.xml для fs.defaultFS вместо локального хоста],Когда я пытаюсь выполнить следующий код:
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 отовсюду.
Я не уверен, что мне здесь не хватает.
Мне пригодится любая краткая справка.
Спасибо.