运维系列:06、Spark调优

1、垃圾回收

在conf/spark-env.sh中添加
SPARK_JAVA_OPTS=-verberos:gc -XX;+PrintGCDetails -XX:+PrintGCTimeStamps
如果发现集群耗费过多时间在垃圾回收上,可以通过spark.storage.memoryFaction调低RDD缓存的使用,这个值的默认值是0.66。
 
如果要运行的是耗时很久的Spark作业,可以通过设定spark.cleaner.ttl为一个非零值n,表示每隔n秒清理一次元数据。默认Spark不会清理任何元数据。
 

2、persist()缓存

默认都以非序列化模式存储,以节省读取数据时的反序列化开销。如:
    MEMORY_ONLY
    MEMORY_AND_DISK
    DISK_ONLY
 
如果存储级别后面添加了_SER后缀,Spark会在存储时对数据进行序列化,以节省存储空间。
    MEMORY_ONLY_SER
    MEMORY_AND_DISK_SER
    DISK_ONLY_SER
 

3、序列化

默认使用Java内置的序列化算法,建议使用KyroSerialier算法,针对性的做了优化。
可以通过spark.serializer改成org.apache.spark.KryoSerializer来切换
// TODO 实验
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

posted on 2014-09-12 10:12  宁 弘道  阅读(401)  评论(0编辑  收藏  举报

导航