我在ubuntu下使用pyspark和python 2.7 我安装它使用
pip install pyspark --user
并尝试按照说明设置 Spark 集群
我找不到脚本start-master.sh 我认为这与我安装了 pyspark 而不是常规 Spark
有关我发现here我可以通过pyspark将工作节点连接到主节点,但是如何使用pyspark启动主节点?
通过
pip install pyspark
安装pyspark后,您可以使用以下命令启动Spark独立集群主进程:
export SPARK_LOCAL_IP=127.0.0.1 # restricts Spark to local access
spark-class org.apache.spark.deploy.master.Master -h 127.0.0.1
然后您可以添加一些工作人员(执行者),它们将处理作业:
export SPARK_LOCAL_IP=127.0.0.1 # restricts Spark to local access
spark-class org.apache.spark.deploy.worker.Worker \
spark://127.0.0.1:7077 \
-c 4 -m 8G
标志
-c
和 -m
指定工作线程提供的 CPU 核心数量和内存量。
出于安全原因,此处使用
127.0.0.1
本地地址(如果有人只是复制/粘贴此行会在其网络中公开“任意代码执行服务”,那就不好了),但对于分布式独立 Spark 集群设置应使用不同的地址(例如,隔离网络中的专用 IP 地址仅适用于此集群节点及其目标用户,并且应阅读官方 Spark 安全指南)。
spark-class
脚本包含在“pyspark”python包中,它是一个包装器,用于从spark-env.sh
加载环境变量并将相应的spark jar位置添加到-cp
命令的java
标志中。
如果您可能需要配置环境 - 请参阅官方 Spark 文档,但它也可以工作,并且可能适合使用默认参数的常规使用。另外,请使用
--help
查看 master/worker 命令的标志。
这是如何使用
pyspark
脚本和 ipython
shell 连接到此独立集群的示例:
PYSPARK_DRIVER_PYTHON=ipython \
pyspark --master spark://127.0.0.1:7077 \
--num-executors 2
--executor-cores 2
--executor-memory 4G
手动实例化 Spark 会话的代码,例如。在 Jupyter 中:
from pyspark.sql import SparkSession
spark = (
SparkSession.builder
.master("spark://127.0.0.1:7077")
# the number of executors this job needs
.config("spark.executor.instances", 2)
# the number of CPU cores memory this needs from the executor,
# it would be reserved on the worker
.config("spark.executor.cores", "2")
.config("spark.executor.memory", "4G")
.getOrCreate()
)
我在操作中做了一些混淆。
您需要在应作为主机运行的机器上启动 Spark。 您可以在这里下载
解压后,你有spark/sbin文件夹,里面有start-master.sh脚本。你需要以 -h 参数开始。
请注意,您需要创建一个像here所述的spark-env文件并定义spark本地变量和主变量,这在主计算机上很重要。
之后,在worker节点上,使用start-slave.sh脚本启动worker节点。
一切顺利,您可以在 python 中使用 Spark 上下文来使用它!
如果您已经通过 conda / pip 安装使用 pyspark,则无需再次安装 Spark 并设置环境变量来进行集群设置。
对于 conda / pip pyspark 安装仅缺少
'conf'
、'sbin'
、'kubernetes'
、'yarn'
文件夹,您只需下载 Spark 并将这些文件夹移动到 pyspark 所在的文件夹中(通常是 site-packages 文件夹中)蟒蛇)。