• 中间结果放内存 + DAG(有向无环图) 所以快
  • Spark(一) - 知乎

    RDD

  • 弹性分布式数据集

  • Rdd由一系列partition组成
  • RDD存的计算逻辑
  • 函数是作用在每一个partition(split)上的。
  • image.png

image.png

算子

转换算子

image.png
image.png
reduceByKey先本地计算?

action算子

image.png

依赖关系(宽窄依赖)

image.png

  • 窄依赖:
    • 指父RDD的每一个分区最多被一个子RDD的分区所用,表现为一个父RDD的分区对应于一个子RDD的分区,和两个父RDD的分区对应于一个子RDD 的分区。图中,map/filter和union属于第一类,对输入进行协同划分(co-partitioned)的join属于第二类。
  • 宽依赖:
    • 指子RDD的分区依赖于父RDD的所有分区,这是因为shuffle类操作,如图中的groupByKey和未经协同划分的join。

image.png

控制算子

RDD持久化:cache & persist

  • cache() = persist() = persist(MEMORY)
  • 性能提升

image.png
image.png

容错机制:checkpoint

  • 用来容错
  • cache免去checkpoint重新计算

image.png

Standalone 提交任务方式

spark02—Standalone模式两种提交任务方式 - 一个点一个点的个人空间 - OSCHINA - 中文开源技术交流社区

Standalone-client提交任务方式

./spark-submit
—master spark://node1:7077
—class org.apache.spark.examples.SparkPi
../examples/jars/spark-examples_2.11-2.2.1.jar
1000
或者
./spark-submit
—master spark://node1:7077
—deploy-mode client
—class org.apache.spark.examples.SparkPi
../examples/jars/spark-examples_2.11-2.2.1.jar
100

image.png
image.png

Standalone-cluster提交任务方式

./spark-submit
—master spark://node1:7077
—deploy-mode cluster
—class org.apache.spark.examples.SparkPi
../examples/jars/spark-examples_2.11-2.2.1.jar
100

image.png

Yarn模式两种提交任务方式

yarn client

./spark-submit —master yarn —class xxx.jar 或者 ./spark-submit —master yarn–client —class xxx.jar 或者 ./spark-submit —master yarn —deploy-mode client —class xxx.jar

image.png

yarn cluster

./spark-submit —master yarn-cluster —class xxx.jar 或者 ./spark-submit —master yarn —deploy-mode cluster —class xxx.jar

image.png

Job-Stage-Task之间的关系

理解Spark中Job-Stage-Task之间的关系 - 简书
image.png

  • 一个action rdd对应一个job
  • job根据wide dependency划分位不同stage
  • 每个stage可能存在多个task,不同task处理不同数据。
    • 一般一个partition对应一个task

Spark资源调度和任务调度

image.png

  1. 构建DAG
  2. 划分stage(taskSet)

    共享变量

    广播变量

    image.png
    image.png

    Accumulator累加变量

    image.png
    image.png

shuffle

image.png
Spark中的Spark Shuffle详解 - 大葱拌豆腐 - 博客园
image.png

spark内存管理

  • 默认使用统一内存管理
  • spark.memory.useLegacyMode设置为true使用静态内存管理。
  1. 静态内存管理

image.png

  1. 统一内存管理

image.png