我在 Cloudera CDH5.3 集群上运行 Spark,使用 YARN 作为资源管理器。我正在用 Python (PySpark) 开发 Spark 应用程序。
我可以提交作业并且它们运行成功,但是它们似乎从未在超过一台机器(我提交的本地机器)上运行。
我尝试了多种选择,例如将 --deploy-mode 设置为 cluster 并将 --master 设置为 yarn-client 和 yarn-cluster,但它似乎从未在多个服务器上运行。
我可以通过传递 --master local[8] 之类的东西让它在多个核心上运行,但这显然不会将处理分布在多个节点上。
我有一个非常简单的 Python 脚本处理来自 HDFS 的数据,如下所示:
import simplejson as json
from pyspark import SparkContext
sc = SparkContext("", "Joe Counter")
rrd = sc.textFile("hdfs:///tmp/twitter/json/data/")
data = rrd.map(lambda line: json.loads(line))
joes = data.filter(lambda tweet: "Joe" in tweet.get("text",""))
print joes.count()
我正在运行一个提交命令,例如:
spark-submit atest.py --deploy-mode client --master yarn-client
我可以做些什么来确保作业在集群中并行运行?