如何使用 YARN 资源管理器运行

概览

该脚本在带有 YARN 资源管理器的 Spark 集群上运行,并返回集群中每个节点的主机名。

这是给谁的?

本指南适用于希望使用 YARN 资源管理器运行 Python 代码的 Spark 集群用户。

开始之前

要执行此示例, 请将下载到您的集群。cluster-spark-yarn.py example script

对于此示例,您需要使用 YARN 资源管理器运行 Spark。您可以使用Cloudera CDHHortonworks HDP等企业 Hadoop 发行版安装 Spark 和 YARN 。

运行作业

这是在 PySpark 中运行 Spark + YARN 示例的完整脚本:

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

conf = SparkConf()
conf.setMaster('yarn-client')
conf.setAppName('spark-yarn')
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

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

使用spark-submit在 Spark 集群上运行脚本 。输出显示从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文档页面。