配置 | 说明 | 默认值 |
---|---|---|
SPARK_WORKER_CORES | 作业可用的CPU内核数量 | 所有可用的CPU内核数 |
SPARK_WORKER_INSTANCES | 每台机器上运行的worker数量 | 1 |
SPARK_WORKER_CORES × SPARK_WORKER_INSTANCES | 每台机器总cores | |
SPARK_WORKER_INSTANCES × SPARK_WORKER_MEMORY | 每个节点使用的最大内存数 | |
SPARK_WORKER_MEMORY | 作业可使用的内存容量 | 1G |
SPARK_DAEMON_MEMORY | 分配给Spark master和worker守护进程的内存空间 | 512M |
提交Spark任务时可配置的选项:
配置 | 说明 |
---|---|
executor-memory | 在spark-shell或spark-submit提交spark应用程序时申请使用的内存数量;不要超过节点的SPARK_WORKER_MEMORY |
spark.storage.memoryFraction | spark应用程序在所申请的内存资源中可用于cache的比例 |
spark.shuffle.memoryFraction | spark应用程序在所申请的内存资源中可用于shuffle的比例 |
注意事项:
- 对于频繁使用的表或查询才进行缓存,对于只使用一次的表不需要缓存;
- 对于join操作,优先缓存较小的表;
- 要多注意Stage的监控,多思考如何才能更多的Task使用PROCESS_LOCAL;
- 要多注意Storage的监控,多思考如何才能Fraction cached的比例更多