• 30、提高并行度&广播共享数据


    一、提高并行度

    1、图解

    image

    实际上Spark集群的资源并不一定会被充分利用到,所以要尽量设置合理的并行度,来充分地利用集群的资源。才能充分提高Spark应用程序的性能。
    
    Spark会自动设置以文件作为输入源的RDD的并行度,依据其大小,比如HDFS,就会给每一个block创建一个partition,也依据这个设置并行度。
    对于reduceByKey等会发生shuffle的操作,就使用并行度最大的父RDD的并行度即可。
    
    可以手动使用textFile()、parallelize()等方法的第二个参数来设置并行度;也可以使用spark.default.parallelism参数,来设置统一的并行度。
    Spark官方的推荐是,给集群中的每个cpu core设置2~3个task。
    
    比如说,spark-submit设置了executor数量是10个,每个executor要求分配2个core,那么application总共会有20个core。此时可以
    设置new SparkConf().set("spark.default.parallelism", "60")来设置合理的并行度,从而充分利用资源。


    二、广播共享数据

    1、图解

    image


    如果你的算子函数中,使用到了特别大的数据,那么,这个时候,推荐将该数据进行广播。这样的话,就不至于将一个大数据拷贝到每一个task上去。
    而是给每个节点拷贝一份,然后节点上的task共享该数据。
    
    这样的话,就可以减少大数据在节点上的内存消耗。并且可以减少数据到节点的网络传输消耗。
  • 相关阅读:
    BindingException: Parameter 'approval_state' not found. Available parameters are [arg1, arg0, param1, param2]]
    vue.js学习笔记(一)——vue-cli项目的目录结构
    memcpy函数
    与、或、异或运算
    C++中的dynamic_cast和dynamic_pointer_cast
    django中orm之什么是正向查询什么是反向查询
    jquery笔记
    jquery
    前端操作数组
    Auto Layout Guide----(三)-----Anatomy of a Constraint
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/11263544.html
Copyright © 2020-2023  润新知