您的位置:首页 > 其它

[Spark]-Spark发展历程与基本概念

2017-07-25 22:05 302 查看

Hadoop十年

找了一张Hadoop十年的生态发展图:



Spark概况:

Apache Spark是一个开源簇运算框架,最初是由加州大学柏克莱分校AMPLab所开发。相对于HadoopMapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了内存内运算技术,能在数据尚未写入硬盘时即在内存内分析运算。Spark在内存内运行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是运行程序于硬盘时,Spark也能快上10倍速度。Spark允许用户将数据加载至簇内存,并多次对其进行查询,非常适合用于[机器学习]。

使用Spark需要搭配簇管理员和分布式存储系统。Spark支持独立模式(本地Spark簇)、Hadoop YARNApache Mesos的簇管理。 在分布式存储方面,Spark可以和HDFSCassandraOpenStack SwiftAmazon S3等接口搭载。 Spark也支持伪分布式(pseudo-distributed)本地模式,不过通常只用于开发或测试时以本机文件系统取代分布式存储系统。在这样的情况下,Spark仅在一台机器上使用每个CPU核心运行程序。

Spark发展历程:

Spark在2009年由Matei Zaharia加州大学柏克莱分校AMPLab开创

2010年通过BSD许可协议开源发布。

2013年6月,该项目被捐赠给Apache软件基金会并切换许可协议至Apache2.0。

2014年2月,Spark成为Apache的顶级项目。

2014年11月,Databricks团队使用Spark 刷新数据排序世界记录。

2014年5月底Spark1.0.0发布。

2014年9月Spark1.1.0发布

2014年12月Spark1.2.0发布

...

2016年1月4号Spark1.6.0发布

...

2016年6月26号Spark2.0发布

...

时至今日的2.2.0版本

Spark作为Hadoop生态中重要的一员,其发展速度堪称恐怖,不过其作为一个完整的技术栈,在技术和环境的双重刺激下,得到如此多的关注也是有依据的。核心在于
内存计算模型
代替Hadoop生态的MapReduce离线计算模型,用更加丰富Transformation和Action算子来替代map,reduce两种算子。

Spark基本组件:

Spark Core:Spark核心API,提供DAG分布式内存计算框架。

SparkSql:提供交互式查询API,

SparkStreaming:实时流处理。

SparkML:机器学习API

SparkGraphx:图形计算。

Spark中的基本概念:

Master
:Spark集群的主节点,负责资源的调度,管理。

Worker
:Spark集群中的工作节点,能够运行executor进程,运行作业代码的节点

Application
:开发的Spark应用程序。

pplication Jar
:把写好的spark工程,打包成一个jar包,其中包括了所有的第三方jar依赖包。

SparkContext
:SparkApp的入口,负责资源的调度,任务的分发。

RDD
:(Resillient Distributed Dataset)弹性式分布式数据集,是SparkAPP的核心操作对象,也是最底层的数据抽象,一个RDD会被分为多个Partition(分区),每个分区分布在集群的不同节点上。

Local模式
:Spark应用的本地模式,测试环境,不需要搭建集群环境就能够使用。

Standalone
:原生的Master/Worker模式来运行APP。

Yarn
:Yarn集群模式,通过Yran集群来进行SparkAPP的运行。

Driver Program
:运行程序中main方法的进程,就是driver,也叫driver进程

Cluster Manager
:集群管理器,就是为每个spark application,在集群中调度和分配资源的组件,比如Spark Standalone、YARN、Mesos等

Deploy Mode
:部署模式,无论是基于哪种集群管理器,spark作业部署或者运行模式,都分为两种,client和cluster,client模式下driver运行在提交spark作业的机器上;cluster模式下,运行在spark集群中

Executor
:集群管理器为application分配的进程,运行在worker节点上,负责执行作业的任务,并将数据保存在内存或磁盘中,每个application都有自己的executor

Job
:每个spark application,根据你执行了多少次action操作,就会有多少个job

Stage
:每个job都会划分为多个stage(阶段),每个stage都会有对应的一批task,分配到executor上去执行

Task
:driver发送到executor上执行的计算单元,每个task负责在一个阶段(stage),处理一小片数据,计算出对应的结果

Spark与Hadoop:

说起Hadoop,可能第一个想到的就是MapReduce,MapReduce是Hadoop的核心,但不是全部,Hadoop早已经不是某个离线批处理框架了,而是代表了整个Hadoop生态系统,从页首的图可以看到Spark只是整个Hadoop生态系统的一部分。Spark仅仅能够代替Hadoop的MapReduce框架做内存计算。无论是交互式查询还是实时流处理数据均来源与Hadoop生态的组件:hbase,hive,Hdfs,Kafka...所以说Spark与Hadoop是密不可分的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: