频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
spark性能调优:常规调优
2016-10-20 09:13:00         来源:youfashion的博客  
收藏   我要投稿

一,分配更多的资源

bin/spark-submit \
 --class cn.spark.sparktest.core.WordCountCluster \
 --driver-memory 100m \配置driver的内存(影响不大)
 --num-executors 3 \ 配置executor的数量
 --executor-memory 100m \ 配置每个executor的内存大小
 --executor-cores 3 \ 配置每个executor的cpu core数量 
 /usr/local/SparkTest-0.0.1-SNAPSHOT-jar-with-dependencies.jar 

001.PNG-103.6kB

002.PNG-92.9kB

二,设置spark application的并行度

SparkConf conf=new SparkConf().set("spark.default.paralelism","500")

003.PNG-118.7kB

004.PNG-78.2kB

005.PNG-122.7kB
006.PNG-39.4kB

三,RDD架构重构和优化

001.PNG-117.8kB

002.PNG-92.2kB

四,广播大变量

001.PNG-83.9kB

002.PNG-112.7kB

003.PNG-111.2kB

004.PNG-82.3kB

final Broadcast>>> dateHourExtractMapBroadcast=sc.broadcast(dateHourExtractMap);

Map>> dateHourExtractMap =dateHourExtractMapBroadcast.value();

五,在项目中使用Kryo序列化

set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")

001.PNG-148.2kB

002.PNG-106.8kB

六,在项目中使用fastutil框架

001.PNG-104.6kB

002.PNG-67.3kB

import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntList;

        Map> fastutilDateHourExtractMap=new HashMap>();
        for(Map.Entry>> dateHourExtractEntry:dateHourExtractMap.entrySet()){
            String date=dateHourExtractEntry.getKey();
            Map> hourExtractMap=dateHourExtractEntry.getValue();
            Map fastutilHourExtractMap = new HashMap();
            for(Map.Entry> hourExtractEntry : hourExtractMap.entrySet()){
                String hour = hourExtractEntry.getKey();
                List extractList = hourExtractEntry.getValue();

                IntList fastutilExtractList = new IntArrayList();
                for(int i = 0; i < extractList.size(); i++) {
                    fastutilExtractList.add(extractList.get(i));  
                }
                fastutilHourExtractMap.put(hour, fastutilExtractList);
            }
            fastutilDateHourExtractMap.put(date, fastutilHourExtractMap);
        }

七,调节本地化等待时长

SparkConf conf = new SparkConf()
                        .setAppName(Constants.SPARK_APP_NAME_SESSION)
                        .setMaster("local")
                        .set("spark.default.paralelism", "500")
                        .set("spark.locality.wait","10")
                        .set("spark.serializer","org.apache.spark.serializer.KryoSerializer")

001.PNG-44.9kB

002.PNG-88.7kB

003.PNG-85.9kB

004.PNG-55.8kB

点击复制链接 与好友分享!回本站首页
上一篇:Drupal8源码分析之php流Streams、公共文件、私有文件
下一篇:58HouseSearch项目迁移到asp.net core
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站