前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark系列(一) 认识Spark

Spark系列(一) 认识Spark

作者头像
张凝可
发布2019-08-22 10:53:54
8610
发布2019-08-22 10:53:54
举报
文章被收录于专栏:技术圈技术圈

怀念看论文的日子~/

打算写一个Spark系列,主要以Scala代码实现,请赐予我力量吧!!!

Spark的特点

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

适用性强:能够读取HDFS、Cassandra、HBase、S3和Techyon为持久层读写原生数据,能够以Mesos、YARN和自身携带的Standalone作为资源管理器调度job,来完成Spark应用程序的计算。

spark生态圈:即BDAS(伯克利数据分析栈)包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等组件,这些组件分别处理Spark Core提供内存计算框架、SparkStreaming的实时处理应用、Spark SQL的即席查询、MLlib或MLbase的机器学习和GraphX的图处理,它们都是由AMP实验室提供。

Spark 和Hadoop

内存计算框架:Spark支持DAG图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。而MapReudce 则会把计算结果保存在磁盘上,IO频繁操作,会降低计算速度。

容错性高:Spark引入了RDD,RDD,全称为Resilient Distributed Dataset,弹性分布式数据集,在逻辑上是分布式数组,可以用RDD的iterator来操作每一个Partition,而在物理上表现为内存或者是硬盘上的Block.

spark更友好:Hadoop只给用户提供了Map和Reduce两种操作,比如其中的shuffle对用户都是不可见的,不可控的,而spark提供了Transformations和Actions两大类操作,可以命名、物化,控制中间结果的存储、分区等。

Spark的应用场景

基于Spark自身存在的一些特点和优势,Spark的应用场景如下:

Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小。

由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。

数据量不是特别大,但是要求实时统计分析需求。

分布式Spark 应用的运行环境架构

在分布式环境下,spark采用主从结构,主节点也就是中央协调节点,被称为驱动器节点(Driver),负责中央协调,调度各个分布式工作节点。从节点则为工作节点,称为执行器节点(Exector)。驱动器节点会和大量的工作节点进行通信,并且将驱动器节点和执行器节点称之为一个应用(Application)

驱动器节点

Spark 驱动器是执行你的程序中的 main() 方法的进程。它执行用户编写的用来创建SparkContext、创建 RDD,以及进行 RDD 的转化操作和行动操作的代码。

驱动器节点在Application的作用

将用户程序转换为任务(task)

程序从输入数据创建一系列 RDD,再使用转化操作派生出新的 RDD,最后使用行动操作收集或存储结果 RDD中的数据。在RDD的一系列操作中包含转化操作和动作操作,Spark程序会隐式的创建出一个由操作组成的逻辑上的有向无环图(DAG)。当驱动器程序运行时,会根据DAG由逻辑层面转换为物理操作层面。即将逻辑计划转化为一系列步骤(stage),每个步骤又由多个任务(task)组成,这些task会被打包到集群中,作为spark运行的最小单位。

为执行器调度任务

在制定了物理执行计划,即已经成功转换为stage(taskset),Spark驱动器程序必须在各执行器进程间协调任务的调度.执行器进程启动后会向驱动器注册自己。保障了的驱动器能始终对应用中所有的执行器节点有完整的记录。每个执行器节点代表一个能够处理任务和存储RDD数据的进程。

执行器节点

Spark 执行器节点是一种工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,执行器节点就被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有执行器节点发生了异常或崩溃,Spark 应用也可以继续执行。

执行器节点在Application的作用

运行任务

它们负责运行组成Spark 应用的任务,并将结果返回给驱动器进程。

为缓存的RDD提供内存式存储。

通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在执行器进程内的,因此任务可以在运行时充分利用缓存数据加速运算。Spark 依赖于集群管理器来启动执行器节点,而在某些特殊也依赖集群管理器来启动驱动器节点。

最后奉献上一张spark的执行流程图

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年03月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档