Spark和Hadoop的区别和比较[通俗易懂]

Spark和Hadoop的区别和比较[通俗易懂]目录一、两者的各方面比较二、Spark相对Hadoop的优越性三、三大分布式计算系统Spark,是分布式计算平台,是一个用scala语言编写的计算框架,基于内存的快速、通用、可扩展的大数据分析引擎Hadoop,是分布式管理、存储、计算的生态系统;包括HDFS(存储)、MapReduce(计算)、Yarn(资源调度)一、实现原理的比较Hadoop和Spark都是并…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

目录

一、 两者的各方面比较

二、Spark相对Hadoop的优越性

三、三大分布式计算系统


Spark,是分布式计算平台,是一个用scala语言编写的计算框架,基于内存的快速、通用、可扩展的大数据分析引擎

Hadoop,是分布式管理、存储、计算的生态系统;包括HDFS(存储)、MapReduce(计算)、Yarn(资源调度)

 

一、实现原理的比较

Hadoop和Spark都是并行计算,两者都是用MR模型进行计算

Hadoop一个作业称为一个Job,Job里面分为Map Task和Reduce Task阶段,每个Task都在自己的进程中运行,当Task结束时,进程也会随之结束;

Spark用户提交的任务称为application,一个application对应一个SparkContext,app中存在多个job,每触发一次action操作就会产生一个job。这些job可以并行或串行执行,每个job中有多个stage,stage是shuffle过程中DAGScheduler通过RDD之间的依赖关系划分job而来的,每个stage里面有多个task,组成taskset,由TaskScheduler分发到各个executor中执行;executor的生命周期是和app一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算。

ps:一个Application -> 多个job ->一个job多个stage -> 一个stage多个task

 

二、 两者的各方面比较

(1)Spark对标于Hadoop中的计算模块MR,但是速度和效率比MR要快得多;

(2)Spark没有提供文件管理系统,所以,它必须和其他的分布式文件系统进行集成才能运作,它只是一个计算分析框架,专门用来对分布式存储的数据进行计算处理,它本身并不能存储数据;

(3)Spark可以使用Hadoop的HDFS或者其他云数据平台进行数据存储,但是一般使用HDFS;

(4)Spark可以使用基于HDFS的HBase数据库,也可以使用HDFS的数据文件,还可以通过jdbc连接使用Mysql数据库数据;Spark可以对数据库数据进行修改删除,而HDFS只能对数据进行追加和全表删除;

(5)Spark数据处理速度秒杀Hadoop中MR;

(6)Spark处理数据的设计模式与MR不一样,Hadoop是从HDFS读取数据,通过MR将中间结果写入HDFS;然后再重新从HDFS读取数据进行MR,再刷写到HDFS,这个过程涉及多次落盘操作,多次磁盘IO,效率并不高;而Spark的设计模式是读取集群中的数据后,在内存中存储和运算,直到全部运算完毕后,再存储到集群中;

(7)Spark是由于Hadoop中MR效率低下而产生的高效率快速计算引擎,批处理速度比MR快近10倍,内存中的数据分析速度比Hadoop快近100倍(源自官网描述);

(8)Spark中RDD一般存放在内存中,如果内存不够存放数据,会同时使用磁盘存储数据;通过RDD之间的血缘连接、数据存入内存中切断血缘关系等机制,可以实现灾难恢复,当数据丢失时可以恢复数据;这一点与Hadoop类似,Hadoop基于磁盘读写,天生数据具备可恢复性;

(9)Spark引进了内存集群计算的概念,可在内存集群计算中将数据集缓存在内存中,以缩短访问延迟,对7的补充;

(10)Spark中通过DAG图可以实现良好的容错。

 

三、Spark相对Hadoop的优越性

(1)Spark基于RDD,数据并不存放在RDD中,只是通过RDD进行转换,通过装饰者设计模式,数据之间形成血缘关系和类型转换;

(2)Spark用scala语言编写,相比java语言编写的Hadoop程序更加简洁;

(3)相比Hadoop中对于数据计算只提供了Map和Reduce两个操作,Spark提供了丰富的算子,可以通过RDD转换算子和RDD行动算子,实现很多复杂算法操作,这些在复杂的算法在Hadoop中需要自己编写,而在Spark中直接通过scala语言封装好了,直接用就ok;

(4)Hadoop中对于数据的计算,一个Job只有一个Map和Reduce阶段,对于复杂的计算,需要使用多次MR,这样涉及到落盘和磁盘IO,效率不高;而在Spark中,一个Job可以包含多个RDD的转换算子,在调度时可以生成多个Stage,实现更复杂的功能;

(5)Hadoop中中间结果存放在HDFS中,每次MR都需要刷写-调用,而Spark中间结果存放优先存放在内存中,内存不够再存放在磁盘中,不放入HDFS,避免了大量的IO和刷写读取操作;

(6)Hadoop适合处理静态数据,对于迭代式流式数据的处理能力差;Spark通过在内存中缓存处理的数据,提高了处理流式数据和迭代式数据的性能;

 

四、三大分布式计算系统

Hadoop适合处理离线的静态的大数据;

Spark适合处理离线的流式的大数据;

Storm/Flink适合处理在线的实时的大数据。

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219276.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • HP电脑win10系统蓝牙不可用解决办法实例[通俗易懂]

    HP电脑win10系统蓝牙不可用解决办法实例[通俗易懂]以win10系统为例子:Cortana里搜蓝牙,打开蓝牙和其他设备设置页面:当时遇到的情况是没有蓝牙那一块儿先检查了蓝牙服务都是正常的:又检查了设备管理器,问题来了,发现没有蓝牙这个项:先用电脑管家一通诊断修复,没用,然后用驱动精灵一通修复诊断还是没用。去网上看了下,说什么的都要,有些说蓝牙硬件坏了,需要重新买个替换掉。但是看…

    2022年8月13日
    5
  • MySQL-索引;视图「建议收藏」

    MySQL-索引;视图「建议收藏」一、索引MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。如:我们通过汉字字典查找汉字有两种方式(1)一页一页挨着找,直到找到为止,这种查找方式属于全字典扫描(2)通过汉语字典的目录页(索引),按拼音、笔画、偏旁部首等排序的目录(索引)缩小查找范围快速查找到需要的字select*fromt_userwherename=’zhangsan’;如果name字段上没有添加索引(目录),或者说没有给name字段创建索引,MySQL会

    2022年7月22日
    12
  • Win7如何显示文件后缀

    Win7如何显示文件后缀

    2021年10月15日
    55
  • 提高计算机软件速度的方法,提高电脑速度的10个有效方法

    提高计算机软件速度的方法,提高电脑速度的10个有效方法电脑已经离不开我们的工作、生活。当我们使用电脑的时候是不是经常遇到打开网页速度和运行某款游戏的时候速度很慢,大部分人处理的办法就是责骂自己的网速不行,电脑配置太低问题,或者我们选择重装系统、格式化等方法,但用不了多久还是会变慢。有些时候并不是这些问题导致电脑速度变慢的。学会以下10个基础的电脑加速方法,有助于我们即便用普通配置的电脑,也可以健步如飞。方法1,桌面上尽量干净。有一次我去同学那…

    2022年6月3日
    40
  • tail 命令详解

    tail 命令详解一、tail命令介绍tail命令可以将文件指定位置到文件结束的内容写到标准输出。如果你不知道tail命令怎样使用,可以在命令行执行命令tail–help就能看到tail命令介绍和详细的参数使用介绍,内容如下(我帮大家翻译了一下)。[root@yanggongzi~]#tail–helpUsage:tail[OPTION]…[FILE]…Printthelast10linesofeachFILEtostandardoutput.Withmore

    2022年6月4日
    42
  • MyBatis缓存机制详解

    MyBatis缓存机制详解MyBatis缓存机制详解1.MyBatis缓存1.1MyBatis缓存概述1.2MyBatis一二级缓存区别2.MyBatis一级缓存2.1MyBatis一级缓存概述2.2MyBatis一级缓存配置2.3MyBatis一级缓存原理分析2.4MyBatis一级缓存总结3.MyBatis二级缓存3.1MyBatis二级缓存概述3.2MyBatis二级缓存配置3.3MyBatis二级缓存原理分析3.4MyBatis二级缓存总结4.MyBatis缓存测试5.参考文档1.MyBat

    2022年5月11日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号