zoukankan      html  css  js  c++  java
  • 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共享该数据。
    
    这样的话,就可以减少大数据在节点上的内存消耗。并且可以减少数据到节点的网络传输消耗。
  • 相关阅读:
    border-radius属性失效了Ծ‸Ծ
    Python默认版本切换
    Mac系统下安装PyCharm
    Python查看与安装
    MySql查询最近一个月,一周,一天
    Mysql计算并保留两位小数
    Mysql 用户ip访问根据省份查询
    Echarts 中国地图(包括china.js文件)
    JQuery进度条
    Java 求两个数百分比%
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/11263544.html
Copyright © 2011-2022 走看看