|
本帖最后由 Zeng 于 2015-4-23 00:47 编辑
最近需要提交Spark Streaming的Job,如何设置参数成为一个问题,根据Spark的文档,在基于yarn模式时,可以指定如下参数:- bin/spark-submit \
- --class org.apache.spark.examples.SparkPi \
- --master yarn-cluster \ # can also be `yarn-client` for client mode
- --executor-memory 20G \
- --num-executors 50 \
- /path/to/examples.jar \
- 1000
复制代码 其实,这里缺乏对--executor-memory和--num-executors的解释。
通过参考网上文档,可以计算出这些参数的大小,比如有5个node的集群,每个node有4核和30.5G的内存(AWS r3.xlarge配置),
那么,可以在每个node上设置3个executor,每个executor有1核,留出1核给系统,另外,有个node只有2个executor,还得留出1核给AM。
executor-cores=1
executor-memory=(30.5-1)/3*(1-0.07)=9G
num-executors=3*4+2=14
为了提升Spark集群的处理能力,需要优化并行参数,其中最为关键的是设置RDD的分区数spark.default.parallelism,根据Spark调优文档,可以设置为集群的CPU核数的2-3倍。在本例中,可以设置spark.default.parallelism为14*3=42。spark.default.parallelism的设置文件在<Spark安装目录>/conf/spark-defaults.conf。
|
|