Spark学习-DAY2

1.Spark概述

Spark(基于内存的计算框架)(来自加州大学AMP实验室)

特性:

计算速度快:内存计算、DAG设计机制

容易使用:Java、R语言、Scala(基于Java)、Python、可通过Spark Shell进行交互式编程

通用性:完整的软件栈(SQL查询-SparkSQL、流计算-Spark Streaming、机器学习-Spark     、

              MLlib、图计算-Spark的GraphX)

运行模式多样:支持独立的集群模式

Spark与Hadoop对比:

hadoop表达能力有限:复杂业务逻辑(Map、Reduce函数)

hadoop磁盘IO开销大:基于磁盘计算

hadoop延迟高(完成map之后才能进入ruduce阶段)

Spark继承mapreuce优点,补全了缺点:
Spark表达能力强:

 Spark基于内存计算:不落磁盘尽量不落磁盘

Spark是DAG任务调度执行机制

执行流程对比:

2.Spark生态系统

 以前执行多个任务使用多个框架:

        批处理->hadoop(map reduce)、流处理->STORM、交互查询->Impala

它们之间需要进行数据格式转换、维护困难、资源利用不充分

  Spark一个软件栈满足不同的应用场景需求(一站式大数据处理解决方案)

伯克利数据分析软件栈(BDAS)

提供了构建大数据处理框架

Spark最底层的组件为Spark Core

3.Spark运行架构

基本概念:

 运行架构:

 各概念之间的关系:

 完整的执行流程

执行应用时,主节点资源管理器申请资源,启动Executor进程,并且向Executor发送应用的代码和文件,应用程序在Excutor进程上派发出线程去执行我们的任务,最后把执行结果返回给主节点提交给用户或者写入到HDFS或其他数据库。

Spark运行基本流程:

首先为应用构建基本的与性能环境,找到主节点,在主节点上生成指挥官(SparkContext),它负责整个任务的执行,恢复,结果汇总等,SparkContext申请资源进行任务的分派和监控,资源管理器分配好资源之后,WorkNode上的Executor进程启动,派生很多线程执行任务。

任务来源:SparkContext根据应用程序生成DAG图,然后调用DAGScheduler将DAG图分解成Stage,每个stage包含很多任务。将任务集合提交给Task Scheduler

 

Exceutor上的线程主动向Task Scheduler申请分配任务,Task Scheduler把生成的每个阶段的任务分发给不同的节点去处理。Task Scheduler根据计算向数据靠拢原则,将任务分发给对应数据存储的节点上。线程执行完之后将结果反馈给Task Scheduler,然后Task Scheduler将结果反馈给DAG Scheduler,运行结束后,写入数据,释放资源。

 RDD运行原理

  1. RDD提供了抽象数据结构。RDD是一个分布式对象的集合,而且是一个只读的分区记录集合。RDD本身不能修改,只能在转换的过程中修改。

  2.  操作类型(粗粒度的修改,只能对RDD全集进行修改)
    动作类型操作(Action)
    转换类型操作(Transformation)只记录转换的轨迹,不会真的进行转换。直到遇到第一个动作类型的操作才从头到尾执行。
    不支持细粒度修改---->Spark不适合网络爬虫

    Spark提供了RDD的API,程序员可以通过调用API实现对RDD的各种操作。
    RDD典型的执行过程

    高效的容错性

    Spark具有天然的容错机制

    Spark是基于内存的,避免了磁盘IO,同时也避免了数据的序列化反序列化
  3. RDD之间的依赖关系
    宽依赖:发生Shuffle操作(shuffle一定会写磁盘)。一个父RDD对多个儿子RDD
    窄依赖:不发生Shuffle操作。多个或一个父RDD对一个儿子RDD

  4. 划分阶段
    宽依赖:划分多个阶段
    窄依赖:不变(可优化)

    窄依赖优化多个fork/join,可以进行流水线优化
    宽依赖进行Shuffle操作一定会写磁盘,无法进行流水线优化
    RDD整个执行过程:

4.Spark的部署方式

支持单机部署和集群部署

集群部署:
Standalone:使用Spark自带的资源管理器(效率不高)

YARN:使用最多的

Mesos:性能最高,性能匹配好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值