一次Spark应用程序参数优化案例
2016-07-17 18:13
309 查看
并行度
对于*ByKey等需要shuffle而生成的RDD,其Partition数量依如下顺序确定:1. 方法的第二个参数 > 2. spark.default.parallelism参数 > 3. 所有依赖的RDD中,Partition最多的RDD的Partition的数量。对于其他的RDD则其依赖于父RDD的分区个数。对于读取Hadoop文件的RDD,其默认的分区个数是HDFS块个数。同时textFile函数也接受参数,指定分区个数,但不能小于HDFS块个数——不使用HDFS块个数。
优化内存
当内存不足时,Spark应用程序运行时,会出现超时而导致任务失败。原因是内存不足,引起GC。而GC又引起通讯超时。其中的一种解决办法如下:1、减小用于cache的内存比例
将spark.storage.memoryFraction参数改为(默认为0.6)。
2、增加并行度
加大spark.default.parallelism参数。
以总数据大小为3.6G、只有两个NodeManager节点(三个中扣掉一个要跑Driver,每节点1vCPU,480M可用内存)为例。3.6G=(3600M/并行度100)*2 CPU核=72M内存。则每节点内存为:72M/2=36M内存。
480M > 36M内存,所以足够(这还没有算上临时对象等其他内存)。
常见配置
spark-defaults.conf: spark.default.parallelism 100 spark.storage.memoryFraction 0.2 spark.executor.memory 480m spark.yarn.am.memory 400m #for yarn-clent mode spark.yarn.am.cores 1 #for yarn-cluter mode #spark.driver.cores 1 spark-env.sh: JAVA_OPTS=" -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
相关文章推荐
- [置顶] 使用Redux管理你的React应用
- 部署exchange2010三合一:之十二:部署数据库高可用DAG
- Linux 多线程编程(不限Linux)
- localStorage
- 字符串查找(2)KMP算法
- 实时调度类
- html5地理位置定位功能小析
- Jdbc
- Spring的JdbcTemplate
- CenterOS6.5(Minimal) 搭建nginx
- Linux 系统结构详解
- 【从0到1】经典语录
- HTML的dl、dt、dd标记制作表格对决Table制作表
- Handler的两种用法
- 管道
- JSP学习笔记之二
- 修改.lnk文件的后缀
- 使用sklearn进行集成学习——理论
- 自动发送邮件工具-Auto Send Mail Tool (ASM)
- 自动发送邮件工具-Auto Send Mail Tool (ASM)