如何运行 Spark 独立作业

概览

这是一个最小的 Spark 脚本,用于导入 PySpark、初始化 SparkContext 并在独立模式下在 Spark 集群上执行分布式计算。

这是给谁的?

本指南适用于希望运行 Python 代码的已配置为独立模式的 Spark 集群用户。

开始之前

要执行此示例,请将 下载 到您提交 Spark 作业的集群节点。cluster-spark-basic.py example script

对于此示例,您需要使用独立调度程序运行 Spark。您可以使用企业 Hadoop 发行版(例如Cloudera CDHHortonworks HDP)安装 Spark 。在独立模式下使用 Spark 可能需要一些额外的配置。

修改脚本

下载后,在集群上的文本编辑器中打开文件。替换为 Spark 集群头节点的主机名。cluster-spark-basic.py example scriptHEAD_NODE_HOSTNAME

# cluster-spark-basic.py
from pyspark import SparkConf
from pyspark import SparkContext

conf = SparkConf()
conf.setMaster('spark://HEAD_NODE_HOSTNAME:7077')
conf.setAppName('spark-basic')
sc = SparkContext(conf=conf)

def mod(x):
    import numpy as np
    return (x, np.mod(x, 2))

rdd = sc.parallelize(range(1000)).map(mod).take(10)
print rdd

下面我们来分析一下内容。第一个代码块包含来自 PySpark 的导入。spark-basic.rst example script

第二个代码块初始化 SparkContext 并设置应用程序名称。

第三个代码块包含分析代码,该代码使用 NumPy 包计算高达 1000 的数字范围的模数,并返回/打印前 10 个结果。

注意:您可能必须使用.acluster conda install numpy

运行作业

您可以通过使用spark-submit 或通过运行此命令将其提交到集群以执行来运行此脚本

python cluster-spark-basic.py

上述命令的输出显示了从cluster-spark-basic.py脚本返回的前十个值。

16/05/05 22:26:53 INFO spark.SparkContext: Running Spark version 1.6.0

[...]

16/05/05 22:27:03 INFO scheduler.TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, localhost, partition 0,PROCESS_LOCAL, 3242 bytes)
16/05/05 22:27:04 INFO storage.BlockManagerInfo: Added broadcast_0_piece0 in memory on localhost:46587 (size: 2.6 KB, free: 530.3 MB)
16/05/05 22:27:04 INFO scheduler.TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 652 ms on localhost (1/1)
16/05/05 22:27:04 INFO cluster.YarnScheduler: Removed TaskSet 0.0, whose tasks have all completed, from pool
16/05/05 22:27:04 INFO scheduler.DAGScheduler: ResultStage 0 (runJob at PythonRDD.scala:393) finished in 4.558 s
16/05/05 22:27:04 INFO scheduler.DAGScheduler: Job 0 finished: runJob at PythonRDD.scala:393, took 4.951328 s
[(0, 0), (1, 1), (2, 0), (3, 1), (4, 0), (5, 1), (6, 0), (7, 1), (8, 0), (9, 1)]

故障排除

如果出现问题,请查阅常见问题/已知问题页面。

更多信息

有关更多信息,请参阅SparkPySpark文档页面。