zoukankan      html  css  js  c++  java
  • spark性能调优之一:分配更多资源

    一、性能调优的王道,就是增加和分配更多的资源:首先第一步,就是调节最优的资源配置;在这个基础上,资源有限,才考虑性能调优的点。

    二、怎么配置资源,如下

    spark-submit

    --class com.sparktest.wordcount 

    --num-executors 4        配置executor数量

    --driver-memory 1000m      配置driver内存

    --executor-memory 2000m       配置每个executor内存

    --executor-cores 4       配置每个executor的cpu数量

    Spark-SNAPSHOT-jar-with-dependencies.jar

    三、怎么调节资源

    standalone ,比如共20台机器,每台机器配置是4g内存,2个cpu core,那么executor是20个,cpu core为2,内存为4g

    yarn,   比如资源队列一共500g内存,100个cpu core;那么你可以设置50个executor,每个executor10g内存,2个cpu core

    最大限度地给予spark资源是基本原则

    四、为什么要分配更多资源

    1、spark并行度

    application总核数=executor数量*每个executor的cpu数量

    spark并行度=task数量

    spark计算批次=task数量/application总核数

    那么当task数量不变,application总核数增加,计算的批次就相应减少了

    2、executor内存

    当你cache RDD时,更多的内存可以缓存更多的数据,就能减少磁盘的io;对于shuffle操作,reduce端会需要内存来存放拉取的数据进行聚合,如果内存不够,也会写入磁盘。分配了更多的内存,也能减少磁盘io;对于task的执行,可能需要创建很多对象。如果内存较小,可能导致频繁gc,影响程序运行的速度。

    3、task数量设置当总核数增加了,task数据反倒没有相应增加,如task数量小于spark application总核数,那么集群的利用率就很低了。官方推荐task数量设置成spark
    application总cpu core数量的2~3倍,比如150个cpu core,基本要配置task数量为300~500;

    在spark代码中,一般通过

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

    来设置,在sparksql中,通过

    spark.sql.shuffle.partitions=500

    来设置

  • 相关阅读:
    eclipse和jdk版本对应问题
    2017第49周四黑珍珠的价值
    如何写python插件、包,放到pypi上供其他人使用
    zerorpc的安装
    httplib 和 httplib2区别之 gzip解压
    mac下报错 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    使用zerorpc踩的第一个坑:
    Jmeter Summariser report及其可视化
    sublime快捷键设置
    来,来,来,哥哥告诉你一个把文件搞大的方法
  • 原文地址:https://www.cnblogs.com/jinniezheng/p/8539087.html
Copyright © 2011-2022 走看看