如何运行 Spark 独立作业¶
概览¶
这是一个最小的 Spark 脚本,用于导入 PySpark、初始化 SparkContext 并在独立模式下在 Spark 集群上执行分布式计算。
这是给谁的?¶
本指南适用于希望运行 Python 代码的已配置为独立模式的 Spark 集群用户。
开始之前¶
要执行此示例,请将 下载
到您提交 Spark 作业的集群节点。cluster-spark-basic.py example script
对于此示例,您需要使用独立调度程序运行 Spark。您可以使用企业 Hadoop 发行版(例如Cloudera CDH 或Hortonworks HDP)安装 Spark 。在独立模式下使用 Spark 可能需要一些额外的配置。
修改脚本¶
下载后,在集群上的文本编辑器中打开文件。替换为 Spark 集群头节点的主机名。cluster-spark-basic.py example script
HEAD_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)]