如何将PySpark(本地计算机)连接到EMR集群?

zzlelutf  于 12个月前  发布在  Spark
关注(0)|答案(2)|浏览(98)

我部署了一个使用Apache Spark引导的3节点AWS ElasticMapReduce集群。在我的本地机器上,我可以通过SSH访问主节点
ssh -i <key> hadoop@ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com通过ssh进入主节点后,我可以通过pyspark访问PySpark。此外,(尽管不安全)我已经配置了我的主节点的安全组,以接受来自我的本地机器的IP地址(特别是端口7077)的TCP流量。
但是我的本地PySpark示例仍然无法连接到集群:
MASTER=spark://ec2-master-node-public-address:7077 ./bin/pyspark
上面的命令会导致许多异常,并导致PySpark无法初始化SparkContext对象。
有人知道如何成功地创建一个远程连接,就像我上面描述的那样?

3qpi33ja

3qpi33ja1#

我做过类似的事情,在我将安装在ec2机器上的spark连接到Hadoop集群的Master节点。
确保正确配置了ec2到Hadoop主节点的访问

import os
from pyspark.sql import SparkSession
os.environ['HADOOP_CONF_DIR']='/etc/hadoop/hadoop/etc/hadoop'
os.environ['YARN_CONF_DIR']='/etc/hadoop/hadoop/etc/hadoop'
spark = SparkSession.builder \
  .appName("MySparkApp") \
  .master("yarn") \
  .config("spark.hadoop.fs.defaultFS", "<master_ip>:9000") \
  .config("spark.hadoop.yarn.resourcemanager.address", "<master_ip>:8040") \
  .config("spark.hadoop.yarn.resourcemanager.scheduler.address", "<master_ip>:8030") \
  .getOrCreate()

字符串

ylamdve6

ylamdve62#

除非您的本地机器是集群的主节点,否则您不能这样做。您将无法使用AWS EMR执行此操作。

相关问题