Spark - 初理解

计算引擎Spark是什么?

专为大规模数据处理的快速通用的计算引擎(基于MapReduce算法实现的分布式计算)。

 

Spark特性

  1. 高级 API,可以更多精力专注于应用所要做的计算本身。Spark 提供了80多个高级运算符。
  2. 快,支持复杂算法和交互式计算。内存计算下:Spark比Hadoop快100倍。
  3. 通用引擎,运算:SQL 查询、文本处理、机器学习等。大量的库无缝组合使用:Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX。

 

Spark组成与相关库

BDAS:全称伯克利数据分析栈,通过大规模集成算法、机器、人之间展现大数据应用的一个平台。也是处理大数据、云计算、通信的技术解决方案。

SparkStreaming:实时数据进行流式计算的组件。构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片段(几秒),以类似batch批量处理的方式来处理这小部分数据。

MLlib:机器学习算法的实现库。

GraphX:分布式图计算框架,能高效进行图计算。

BlinkDB:海量数据上进行交互式SQL的近似查询引擎。

Tachyon:以内存为中心高容错的的分布式文件系统。

SparkCore:将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。

SparkSQL:Spark Sql是Spark来操作结构化数据的程序包,可以让我使用SQL语句的方式来查询数据,Spark支持 多种数据源,包含Hive表,parquest以及JSON等内容。

 

Spark工作机制与原理

https://images2015.cnblogs.com/blog/1004194/201608/1004194-20160830094200918-1846127221.png

  1. Spark启动应用程序的运行环境,启动SparkContext。
  2. SparkContext向资源管理器(资源管理器包含:Standalone,Mesos,Yarn)申请运行Executor资源。并启动StandaloneExecutorbackend。
  3. Executor向SparkContext申请Task。
  4. SparkContext将应用程序分发给Executor。
  5. SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行。
  6. Task在Executor上运行,运行完释放所有资源。

 

Spark名词解读

  1. Application:用户编写的Spark应用程序。
  2. Driver:Application的main函数并创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭,通常用SparkContext代表Driver。
  3. Executor:某个Application运行在worker节点上的一个进程,  该进程负责运行某些Task, 并且负责将数据存到内存或磁盘上。
  4. Cluter Manager:在集群上获取资源的资源管理器,其中包含3类(1. Standalon:spark原生的资源管理。2. Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架。3. Hadoop Yarn: Yarn中的ResourceManager)。
  5. Worker:集群中任何可以运行Application代码的节点,在Standalone模式中指的是通过slave文件配置的Worker节点,在Spark on Yarn模式下就是NoteManager节点。
  6. Task:被送到某个Executor上的工作单元,但hadoopMR中的MapTask和ReduceTask概念一样,是运行Application的基本单位,多个Task组成一个Stage,而Task的调度和管理等是由TaskScheduler负责。
  7. Job:包含多个Task组成的并行计算,往往由Spark Action触发生成,一个Application中往往会产生多个Job。
  8. Stage:每个Job会被拆分成多组Task,作为一个TaskSet,其名称为Stage,Stage的划分和调度是有DAGScheduler来负责的,Stage有非最终的Stage(Shuffle Map Stage)和最终的Stage(Result Stage)两种,Stage的边界就是发生shuffle的地方。
  9. DAGScheduler:根据Job构建基于Stage的DAG(Directed Acyclic Graph有向无环图),并提交Stage给TASkScheduler。 其划分Stage的依据是RDD之间的依赖的关系找出开销最小的调度方法。

 

Spark运行层次解读

Job包含多个stage,Stage包含多个同种task, Task分为ShuffleMapTask和ResultTask,Dependency分为ShuffleDependency和NarrowDependency。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值