conf/spark-env.sh參數說明:
- SPAKR_WORKER_MEMORY : 指單個Worker節點在本機上可以使用的內存上限, 如512m, 2g等. 默認大小爲本機所有內存減去1GB
- SPARK_EXECUTOR_MEMORY : 指單個進程(應用程序)在每個機器上可以使用的內存 , 默認是1g
- SPARK_WORKER_CORES : 指單個Worker節點在本機上可以使用的CPU core上限, 默認是所有core
partition的使用
Spark中有partition概念, 每個partition都會對應一個task, task越多在處理大數據量時越有效率, 但是task不是越多越好, 當數據量不大時task越多反而效率越低.
如何設置task的個數呢, 有三種方式:
- 方式一: 配置spark-default.conf文件
spark.default.parallelism 100
spark.sql.shuffle.partitions 50 (針對 spark sql的task數量)
- 方式二: 編寫代碼時指定task的個數
rdd.repartition(100).map(xxx)
- 方式三: spark-submit提交運行時進行配置
spark-submit --master xxx --conf spark.default.parallelism=100 --class xxx xxx.jar
優先級: 方式三 > 方式二 > 方式一
範圍: worker > executor > task = partition