大数据—— Spark Core 知识点整理

1. Spark 和 Hadoop 相比有什么优势  

运行速度快:

        Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算。官方提供的数据表明,如果数据由磁盘读取,速度是Hadoop MapReduce的10倍以上,如果数据从内存中读取,速度可以高达100多倍。

适用场景广泛:

        大数据分析统计,实时数据处理,图计算及机器学习

易用性:

        编写简单,支持80种以上的高级算子,支持多种语言,数据源丰富,可部署在多种集群中

容错性高:

        Spark引进了弹性分布式数据集RDD (Resilient Distributed Dataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”(即充许基于数据衍生过程)对它们进行重建。另外在RDD计算时可以通过CheckPoint来实现容错,而CheckPoint有两种方式:CheckPoint Data,和Logging The Updates,用户可以控制采用哪种方式来实现容错。

2. Spark的适用场景

目前大数据处理场景有以下几个类型:

  • 复杂的批量处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时;
  • 基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间
  • 基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间

3. Spark 中有几种部署模式

本地模式(方便本地调试):

        Spark 程序运行于本地,通过local[]指定线程的数量,本地模式分为三类:

        (1)local:只启动一个 executor

        (2)local[k]:启动 k 个 executor

        (3)local[*]:启动跟 cpu 数量相同的 executor

StandAlone 模式:

        分布式部署集群,自带完整的服务,资源管理和任务监控是 Spark 自己监控,也是其他模式的基础

Spark on yarn 模式:

        分布式部署集群,资源和任务监控交给 yarn 管理,Spark 客户端直接连接 Yarn,不需要额外构建 Spark 集群。有 yarn-client 和 yarn-cluster 两种模式,主要区别在于:Driver 程序的运行节点。

        (1)cluster 适合生产,Driver 运行在集群子节点,具有容错功能

        (2)client 适合调试,Driver 运行于客户端

4. Spark 的架构及架构中的基本组件

Spark的架构

        采用了分布式计算中的Master-Slave模型,Master是对应集群中的含有Master进程的节点,Slave是集群中含有Worker进程的节点。Master作为整个集群的控制器,负责整个集群的正常运行;Worker相当于是计算节点,接收主节点命令与进行状态汇报;Executor负责任务的执行;Client作为用户的客户端负责提交应用,Driver负责控制一个应用的执行,组成图如下:

  Spark集群部署后,需要在主节点和从节点分别启动Master进程和Worker进程,对整个集群进行控制。在一个Spark应用的执行过程中,Driver和Worker是两个重要角色。Driver程序是应用逻辑执行的起点,负责作业的调度,即Task任务的分发,而多个Worker用来管理计算节点和创建Executor并行处理任务。在执行阶段,Driver会将Task和Task所依赖的file和jar序列化后传递给对应的Worker机器,同时Executor对相应数据分区的任务进行处理。

Spark的架构中的基本组件:

  • Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker。在YARN模式中为资源管理器
  • Worker:从节点,负责控制计算节点,启动Executor或者Driver。在YARN模式中为NodeManager,负责计算节点的控制。
  • Driver:运行Application的main()函数并创建SparkContext。
  • Executor:执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executor。
  • SparkContext:整个应用的上下文,控制应用的生命周期。
  • RDD:Spark的基础计算单元,一组RDD可形成执行的有向无环图RDD Graph。
  • DAG Scheduler:根据作业(task)构建基于Stage的DAG,并提交Stage给TaskScheduler。
  • TaskScheduler:将任务(task)分发给Executor执行。
  • SparkEnv:线程级别的上下文, 存储运行时的重要组件的引用。

5. Spark 的运行流程

  • 构建Spark Application的运行环境,启动SparkContext
  • SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend
  • Executor向SparkContext申请Task
  • SparkContext将应用程序分发给Executor
  • SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行
  • Task在Executor上运行,运行完释放所有资源

6. Spark 中RDD的概述和特性

概念:

        RDD(Resilient Distributed Dataset),弹性分布式数据集,是 Spark 中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合

RDD 五大特性: 

  • A list of partitions 一个分区列表,RDD 中的数据都存在一个分区列表里面 
  • A function for computing each split 作用在每一个分区中的函数
  • A list of dependencies on other RDDs 一个 RDD 依赖与其他多个 RDD,这个点很重要,RDD 的容错机制就是依据这个特性而来的
  • Optionally,
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vicky_Tang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值