3.2.1 spark体系之分布式计算-spark-core之离线计算-初识Spark

目录

1.什么是Spark

2.Spark内置模块介绍

3.Spark演变历史

4.Spark与MapReduce的区别

5.Spark运行模式

6.spark特点


1.什么是Spark

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行计算框架,Spark拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。Spark是Scala编写,方便快速编程。

2.Spark内置模块介绍

SparkCore

实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。SparkCore 中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。

Spark SQL

是 Spark 用来操作结构化数据的程序包。通过SparkSql,我们可以使用 SQL或者Apache Hive 版本的 SQL 方言(HQL)来查询数据。Spark SQL 支持多种数据源,比如 Hive 表、Parquet 以及 JSON 等。

Spark Streaming

是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。

Spark MLlib

提供常见的机器学习 (ML) 功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。

3.Spark演变历史

  • • Spark是美国加州大学伯克利分校的AMP实验室(主要创始人lester和Matei)开发的通用的大数据处理框架
  • • 2009伯克利大学开始编写最初的源代码
  • • 2010年才开放的源码
  • • 2012年2月发布了0.6.0版本
  • 2013年6月进入了Apache孵化器项目
  • • 2013年年中Spark的主要成员成立的DataBricks公司
  • • 2014年2月成为了Apache的顶级项目(8个月的时间)
  • • 2014年5月底Spark1.0.0发布
  • • 2014年9月Spark1.1.0发布
  • • 2014年12月spark1.2.0发布
  • • 2015年3月Spark1.3.0发布
  • • 2015年6月Spark1.4.0发布
  • • 2015年9月Spark1.5.0发布
  • • 2016年1月Spark1.6.0发布
  • • 2016年5月Spark2.0.0预览版发布
  • • 2016年7月Spark2.0.0正式版发布
  • • 2016年12月Spark2.1.0正式版发布
  • • 2017年7月Spark2.2发布

4.Spark与MapReduce的区别

都是分布式计算框架,Spark基于内存,MR基于HDFS。Spark处理数据的能力一般是MR的十倍以上,Spark中除了基于内存计算外,还有DAG有向无环图来切分任务的执行先后顺序。Spark简单易用,支持多种语言编写,支持java,scala,python,R等。

早期版本1.0

jobTracker既要管理资源,又要调度任务。

2.0(YARN:资源管理和任务调度分开)

RM管理资源,Driver调度任务,中间用AM通信,解耦合,计算框架可以插拔,可以换成其他计算框架。为了让TASK和NM也没有耦合,中间加了一层Container。

spark历史:

2013年6月份发布(yarn10月份才出来),真正的使用可以将yarn中的计算框架换成spark即可。

5.Spark运行模式

  • Local

多用于本地测试,如在eclipse,idea中写程序测试等。

  • Standalone

Standalone是Spark自带的一个资源调度框架,它支持完全分布式。

  • Yarn

Hadoop生态圈里面的一个资源调度框架,Spark也是可以基于Yarn来计算的。

  • Mesos

资源调度框架,国内用的比较少

***** 要基于Yarn来进行资源调度,必须实现AppalicationMaster接口,Spark实现了这个接口,所以可以基于Yarn。

6.spark特点

  • 快速:与 Hadoop 的 MapReduce 相比, Spark 基于内存的运算是 MapReduce 的 100 倍.基于硬盘的运算也要快 10 倍以上.Spark 实现了高效的 DAG 执行引擎, 可以通过基于内存来高效处理数据流
  • 易用:Spark 支持 Scala, Java, Python, R 和 SQL 脚本, 并提供了超过 80 种高性能的算法, 非常容易创建并行 App而且 Spark 支持交互式的 Python 和 Scala 的 shell, 这意味着可以非常方便地在这些 shell 中使用 Spark 集群来验证解决问题的方法, 而不是像以前一样 需要打包, 上传集群, 验证等. 这对于原型开发非常重要.
  • 通用:Spark 结合了SQL, Streaming和复杂分析.Spark 提供了大量的类库, 包括 SQL 和 DataFrames, 机器学习(MLlib), 图计算(GraphicX), 实时流处理(Spark Streaming) .可以把这些类库无缝的柔和在一个 App 中.减少了开发和维护的人力成本以及部署平台的物力成本.
  • 可融合性:Spark 可以非常方便的与其他开源产品进行融合.比如, Spark 可以使用 Hadoop 的 YARN 和 Appache Mesos 作为它的资源管理和调度器, 并且可以处理所有 Hadoop 支持的数据, 包括 HDFS, HBase等

7.Spark中的重要角色

如果用的yarn,就没有master和worker,就会用的是YARN中的RM和NM。

7.1 Driver(驱动器)

Spark的驱动器是执行开发程序中的main方法的进程。它负责开发人员编写的用来创建SparkContext、创建RDD,以及进行RDD的转化操作和行动操作代码的执行。如果你是用spark shell,那么当你启动Spark shell的时候,系统后台自启了一个Spark驱动器程序,就是在Spark shell中预加载的一个叫作 sc的SparkContext对象。如果驱动器程序终止,那么Spark应用也就结束了。主要负责:

1)把用户程序转为作业(JOB)

2)跟踪Executor的运行状况

3)为执行器节点调度任务

4)UI展示应用运行状况

7.2 Executor(执行器)

Spark Executor是一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。主要负责:

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

2)通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值