目录
- 1. spark 与 hadoop 比较
- 1.1 haoop 的缺点
- 1.2 相较于hadoop mr的优点
- 2. spark 生态系统
- 2.1 大数据处理的三种类型
- 1. 复杂的批量数据处理
- 2. 基于历史数据的交互式查询
- 3. 基于实时数据流的数据处理
- 2.2 bdas架构
- 2.3 spark 生态系统
- 3. 基本概念与架构设计
- 3.1 基本概念
- 3.2 运行架构
- 3.3 各种概念之间的相互关系
- 4. spark运行基本流程
- 4.1 运行流程
- 4.2 运行架构特点
- 5. spark的部署和应用方式
- 5.1 spark的三种部署方式
- 5.1.1 standalone
- 5.1.2 spark on mesos
- 5.1.3 spark on yarn
- 5.2 从hadoop+storm架构转向spark架构
- hadoop+storm架构
- 用spark架构满足批处理和流处理需求
- spark架构的优点:
- 5.3 hadoop和spark的统一部署
- 不同计算框架统一运行在yarn中
1. spark 与 hadoop 比较
1.1 haoop 的缺点
- 1. 表达能力有限;
- 2. 磁盘io开销大;
- 3. 延迟高;
- 4. 任务之间的衔接涉及io开销;
- 5. 在前一个任务执行完之前,其他任务就无法开始,难以胜任复杂、多阶段的计算任务。
1.2 相较于hadoop mr的优点
- 1. spark的计算模式也属于mr,但不局限于map和reduce操作,它还提供了多种数据集操作类型,编程模式也比hadoop mr更灵活;
- 2. spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高;
- 3. spark 基于dag的任务调度执行机制,要优于hadoop mr的迭代执行机制。
spark | mapreduce | |
数据存储结构 | 使用内存构建弹性分布式数据集rdd,对数据进行运算和cache。 | 磁盘hdfs文件系统的split |
编程范式 | dag(transformation+action) | map+reduce |
计算中间结果的存储 | 在内存中维护,存取速度比磁盘高几个数量级 | 落到磁盘,io及序列化、反序列化代价大 |
task维护方式 | 线程 | 进程 |
时间 | 对于小数据集读取能够达到亚秒级的延迟 | 需要数秒时间才能启动任务 |
2. spark 生态系统
2.1 大数据处理的三种类型
1. 复杂的批量数据处理
时间跨度在数十分钟到数小时
haoop mapreduce
2. 基于历史数据的交互式查询
时间跨度在数十秒到数分钟
cloudera、impala 这两者实时性均优于hive。
3. 基于实时数据流的数据处理
时间跨度在数百毫秒到数秒
storm
2.2 bdas架构
2.3 spark 生态系统
3. 基本概念与架构设计
3.1 基本概念
3.2 运行架构
spark采用executor的优点:(相比于hadoop的mr)
- 1. 利用多线程来执行具体的任务,减少任务的启动开销;
- 2. executor中有一个blockmanager存储模块,会将内存和磁盘共同作为存储设备,有效减少io开销。
3.3 各种概念之间的相互关系
- 一个application由一个driver和若干个job构成
- 一个job由多个stage构成
- 一个stage由多个没有shuffle关系的task组成
当执行一个application时,driver会向集群管理器申请资源,启动executor,
并向executor发送应用程序代码和文件,然后在executor上执行task,运行结束后,
执行结果会返回给driver,或者写到hdfs或者其他数据库中。
4. spark运行基本流程
4.1 运行流程
1. 为应用构建起基本的运行环境,即由driver创建一个sparkcontext进行资源的申请、任务的分配和监控。
2. 资源管理器为executor分配资源,并启动executor进程。
- 3.1 sparkcontext根据rdd的依赖关系构建dag图,dag图提交给dagscheduler解析成stage,然后把一个个taskset提交给底层调度器taskscheduler处理。
- 3.2 executor向sparkcontext申请task,taskscheduler将task发送给executor运行并提供应用程序代码。
4. task在executor上运行把执行结果反馈给taskscheduler,然后反馈给dagscheduler,运行完毕后写入数据并释放所有资源。
4.2 运行架构特点
1. 每个application都有自己专属的executor进程,并且该进程在application运行期间一直驻留。executor进程以多线程的方式运行task。
2. spark运行过程与资源管理器无关,只要能够获取executor进程并保持通信即可。
3. task采用了数据本地性和推测执行等优化机制。(计算向数据靠拢。)
5. spark的部署和应用方式
5.1 spark的三种部署方式
5.1.1 standalone
类似于mr1.0,slot为资源分配单位,但性能并不好。
5.1.2 spark on mesos
mesos和spark有一定的亲缘关系。
5.1.3 spark on yarn
mesos和yarn的联系
5.2 从hadoop+storm架构转向spark架构
hadoop+storm架构
这种部署方式较为繁琐。
用spark架构满足批处理和流处理需求
spark用快速的小批量计算模拟流计算,并非真实的流计算。
无法实现毫秒级的流计算,对于需要毫秒级实时响应的企业应用而言,仍需采用流计算框架storm等。
spark架构的优点:
- 1. 实现一键式安装和配置,线程级别的任务监控和告警;
- 2. 降低硬件集群、软件维护、任务监控和应用开发的难度;
- 3. 便于做成统一的硬件、计算平台资源池。
5.3 hadoop和spark的统一部署
不同计算框架统一运行在yarn中
好处如下:
- 1. 计算资源按需伸缩;
- 2. 不用负载应用混搭,集群利用率高;
- 3. 共享底层存储,避免数据跨集群迁移
现状:
1. spark目前还是无法取代hadoop生态系统中的一些组件所实现的功能。
2. 现有的hadoop组件开发的应用,完全迁移到spark上需要一定的成本。
到此这篇关于spark简介以及与hadoop对比分析的文章就介绍到这了,更多相关spark与hadoop内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!