您的位置:首页 > 运维架构

运维系列:06、Spark调优

2014-09-12 10:12 302 查看

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 实验
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: