Spark基础:第一章 spark概述

Spark基础:第一章 spark概述


-------------------------------spark guide-----------------------------------



一、spark是什么?

  1. 基于内存计算的大数据并行计算框架
  2. 背景
    (1) 于2009年开发,可用于构建大型的、低延迟的数据分析应用程序。
    (2) 2013年Spark加入apache孵化器项目,如今是apache软件三大分布式计算系统开源项目之一(Hadoop、spark、storm)-> 批处理batch和流数据streaming data
  3. 大数据分析引擎
  4. 底层操作的是RDD

二、为什么用spark?

1. 特点

  (1) 运行速度快
    使用DAG执行引擎以支持循环数据流与内存计算

  (2) 容易使用
    支持Scala、Java、python和R语言等进行编程,可以通过spark shell进行交互式编程(REPL)

  (3) 通用性
    一栈式,包括SQL查询、流式计算、机器学习和图算法组件

  (4) 运行模式多样
    可运行与集群模式、Hadoop等云环境,可以访问HDFS、Hive、HBase

2. MapReduce 与 Spark 对比

  (1) MR的缺点
    ① 表达能力有限
    ② 磁盘IO开销大
    ③ 延迟高

  (2) 二者的区别
Spark基础:第一章 spark概述
  ① MR基于磁盘迭代处理数据;Spark 基于内存迭代处理数据
  ② Spark 中有DAG有向无环图,执行引擎,执行速度快
  ③ MR是细粒度资源申请;Spark 粗粒度资源申请
  ④ MR中只有mapper,reducer,业务逻辑要自己实现;spark中的map和reduceByKey两个算子,各种算子对应各种业务


三、spark生态系统

1. 原理

  (1) 设计遵循 “一个软件栈满足不同应用场景” 的理念,逐渐形成了一套完整的生态系统。

  (2) 一栈式,包括SQL查询、流式计算、机器学习和图算法组件等。

  (3) 可以部署在YARN上,提供一站式的大数据解决方案批处理、交互查询、流数据处理。

2. 组件

  Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX
Spark基础:第一章 spark概述
    ① 复杂的批量数据处理 Spark Core
    ② 基于历史数据的交互式查询 Spark SQL
    ③ 基于实时数据计算的Spaek Streaming


四、spark中的基本概念

1. RDD   弹性分布式数据集是分布式内存一种抽象概念,提供了一种高度受限的共享内存模型(不存数据)(后续有详细讲解)

2. DAG   Direction Acyclic Graph(有向无环图),反映RDD之间的依赖关系(实现管道化,避免中间数据存储)
  窄依赖
  宽依赖

3. Executor   运行在工作节点(work节点)的一个进程,负责运行Task(standalone模式)

4. Application   用户编写的spark应用程序

5. Task   运行在Executor上的工作单元

6. Job   一个Job包含多个RDD及作用于相应的RDD上的各种操作
    阶段的划分:
      一个Action算子对应一个Job 对应多个Stage

7. Stage   由一组并行的task组成,是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage或TaskSet,代表了一组关联的、相互之间没有shuffle依赖关系的任务组成的任务集
Spark基础:第一章 spark概述
    (1) Stage计算模式

  • pipeline管道计算模式
          ① partition上的计算逻辑
          ② 一条条处理数据
  • 管道中的数据何时落地?
          ① shuffle write
          ② 对RDD持久化

    (2) Stage的并行度

  • 由stage中finalRDD中partition个数决定
  • 如何提高Stage的并行度?
          ① reduceByKey(xx,numpartitions)
          ② join(xxx,numpartition)

请参考后面的RDD详解


五、spark架构设计

  集群资源管理器(Cluster)
Spark基础:第一章 spark概述
    一个stage由多个没有shuffle关系的task组成


--->有问题请联系QQ1436281495^_^