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)在上面可以编写分布式程序和软件

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值