码迷,mamicode.com
首页 > 其他好文 > 详细

Spark整理(一):Spark是啥以及能干啥

时间:2015-08-30 01:07:34      阅读:1083      评论:0      收藏:0      [点我收藏+]

标签:spark

一、Spark是什么

1、与Hadoop的关系

如今Hadoop已经不能狭义地称它为软件了,Hadoop广泛的说可以是一套完整的生态系统,可以包括HDFS、Map-Reduce、HBASE、HIVE等等。。

而Spark是一个计算框架,注意,是计算框架
其可以运行在Hadoop之上,绝大部分情况下是基于HDFS

说代替Hadoop其实是代替Hadoop中的Map-Reduce,用来解决Map-Reduce带来的一些问题

更具体地讲,Spark是基于内存的 大数据并行计算框架,可以完美的融入到Hadoop的生态系统中去

而既然是分布式框架必须要解决的两个问题:
1、可扩展性
2、容错性

Spark是如何解决这两个问题待之后整理发布

2、相对于Map-Reduce的迭代模型,Spark的计算模型有何优缺点?

优势:
(1)基于内存,计算速度快
迭代过程中,通过RDD算子生产DAG图的方式,无须将中间数据写入磁盘中

(2)DAG图的执行策略
只有Action操作才会触发执行Job,记录了每个Job的执行流程,形成Lineage和划分Stage等

(3)使用AKKA作为事件驱动来调度任务,开销小

(4)全栈支持

缺陷:
(1)机器配置要求比Map-Reduce高
(2)牺牲硬件提高性能

3、Spark能带来什么?

(1)全栈多计算范式,不仅仅只是简单的Map-Reduce操作,SQL查询、流计算、机器学习、图算法
这里有你想要的一切~

(2)轻量级快速处理:基于内存

(3)支持多语言,丰富的算子,允许在Shell中进行交互式计算,像书写单机程序一样书写分布式程序(这就是Spark诞生的目的)

(4)与HDFS等存储层兼容,可以独立运行,可以运行与Yarn等集群管理系统,可以读取和使用任何Hadoop数据

没天理了~

二、Spark生态系统BDAS(数据分析栈)

Spark也可以脱离Hadoop而存在,它也有自己的生态系统
主要的组件如下列表:

1、核心框架为Spark
提供分布式编程框架
提供除了MR之外的丰富算子以及计算模型
将分布式数据抽象为弹性分布式数据集(RDD)

2、结构化数据SQL查询和分析引擎Spark SQL
可直接执行SQL语句
可执行Spark SQL提供的丰富的API
基于RDD操作

3、分布式机器学习库Mllib

4、并行图计算框架GraphX

5、流计算框架Spark Streaming
将实时数据按照指定时间片划分为流数据

6、近似计算查询引擎BlinkDB
交互式SQL的近似查询
允许用户在查询精确度和查询响应时间之间做出权衡

7、内存分布式文件系统Tachyon
内存中的HDFS

8、资源管理框架Mesos
提供类似Yarn的功能

9、1.4新特性SparkR

三、Spark构架

1、构架组成

Spark集群中一些核心概念:

(1)Master
集群中含有Master进程的节点
负责集群的协作和管理
本身不参与计算任务
在Yarn上运行时表现为ResourceManager

(2)Slaves
集群中含有Worker进程的节点
接受Master命令和进行状态汇报
Worker本身并不是处理计算任务的
在Yarn上运行时表现为NodeManager

(3)Driver
负责控制Client提交的任务的执行
执行程序的main函数并创建SparkContext
分发Task到具体的Worker上的Executor
分发任务执行所需要的file和jar包(序列化后)给Worker节点

(4)SparkContext:整个应用的上下文,控制应用的生命周期
RDD:基本计算单元,提供丰富的算子,一组RDD可执行成DAG图
DAGScheduler:输入DAG图,根据RDD之间的依赖关系划分为Stages输出
TaskScheduler:输入Stages,将其划分为更小的Task分发给具体的Executor执行
SparkEnv:存储运行时的重要组件的引用,包括:
=>MapOutPutTracker:负责Shuffle元信息的存储
=>Broadcastmanager:负责广播变量的控制与元信息的存储
=>BlockManager:负责存储管理、创建和查找块
=>MetricsSystem:监控运行时性能指标信息
=> SparkConf:负责存储配置信息

(5)Client
用户提交任务的工具

2、Spark执行任务流程(简略版)

(1)Client提交应用
(2)Master找到Worker并启动Driver
(3)Driver向Master申请资源
(4)操作RDD形成DAG图交给DAGScheduler
(5)DAGScheduler将DAG图划分为Stages输出给TaskScheduler
(6)TaskScheduler划分Task分发给Worker节点上的Executor执行

四、 Spark分布式构架与单核构架的异同
基本概念:
(1)Spark是分布式计算框架
(2)在上面可以编写分布式程序和软件

编写分布式程序需要注意的点:
内存和磁盘共享问题

版权声明:本文为博主原创文章,未经博主允许不得转载。

Spark整理(一):Spark是啥以及能干啥

标签:spark

原文地址:http://blog.csdn.net/qq1010885678/article/details/48088483

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!