我正试图从Python3笔记本电脑(在本地笔记本电脑上运行)向gcp中运行的独立spark(2.1.1)cluster 3虚拟机提交spark应用程序,但由于某些原因,spark会话引发错误“standaloneappclient$clientendpoint:无法连接到主sp”arkmaster:7077".
环境细节:ipython和spark master在一个名为“sparkmaster”的gcp虚拟机中运行。另外3个gcp虚拟机运行spark从属和cassandra集群。我使用chrome从本地笔记本电脑(mbp)连接到“sparkmaster”中的gcp vm ipython笔记本电脑
请注意,码头工程:
bin/spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.1.1 --master spark://sparkmaster:7077 ex.py 1000
从python笔记本运行:
import os
os.environ["PYSPARK_SUBMIT_ARGS"] = '--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.1.1 pyspark-shell'
from pyspark.sql import SparkSession
from pyspark.sql.functions import *
spark=SparkSession.builder.master("spark://sparkmaster:7077").appName('somatic').getOrCreate() #This step works if make .master('local')
df = spark \
.readStream \
.format("kafka") \
.option("kafka.bootstrap.servers", "kafka1:9092,kafka2:9092,kafka3:9092") \
.option("subscribe", "gene") \
.load()
到目前为止,我已经尝试了以下方法:
我尝试更改spark master节点spark-defaults.conf和spark-env.sh以添加spark\ master\ ip。
试图找到独立的\u spark\u master\u host=hostname-f设置,以便删除“-f”。出于某种原因,我的spark master ui显示fqdn:7077 not hostname:7077
已将fqdn作为参数传递给.master()和os.environ[“pyspark\u submit\u args”]
如果你需要更多的细节,请告诉我。
1条答案
按热度按时间bsxbgnwa1#
在做了更多的研究之后,我终于解决了冲突。这是由于一个简单的环境变量称为spark\u home。在我的例子中,它指向conda的/bin(pyspark是从这个位置运行的),而我的spark设置在一个不同的路径中。简单的解决方法是将export spark\u home=“/home/<>/spark/”添加到.bashrc文件中(我希望它附加到我的个人资料中,而不是spark会话中)
我是如何做到的:
步骤1:ssh到主节点在我的例子中,它与gcp中的ipython内核/服务器vm相同
第二步:
cd~
sudo nano.bashrc公司
向下滚动到最后一行并粘贴下面的行
export spark_home=“/home/your/path/to/spark-2.1.1-bin-hadoop2.7/”
ctrlx和y,然后按enter保存更改
注意:为了清晰起见,我还向环境部分添加了更多细节。