spark与hadoop的关联和区别,以及spark为什么那么快

spark与hadoop的关联和区别,以及spark为什么那么快spark与hadoop的关联和区别,以及spark为什么那么快

大家好,又见面了,我是你们的朋友全栈君。

spark为什么快?

Spark SQL比Hadoop Hive快,是有一定条件的,而且不是Spark SQL的引擎比Hive的引擎快,相反,Hive的HQL引擎还比Spark SQL的引擎更快。

其实,关键还是在于Spark 本身快。

1,Spark是基于内存的计算,而Hadoop是基于磁盘的计算;Spark是一种内存计算技术。所谓的内存计算技术也就是缓存技术,把数据放到缓存中,减少cpu磁盘消耗。Spark和Hadoop的根本差异是多个任务之间的数据通信问题:Spark多个任务之间数据通信是基于内存,而Hadoop是基于磁盘。Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,很多的shufle操作,那么Hadoop的读写IO时间会大大增加。多个任务之间的操作也就是shuffle过程,因为要把不同task的相同信息集合到一起,这样内存的速度要明显大于磁盘了。

2、JVM的优化

Hadoop每次MapReduce操作,启动一个Task便会启动一次JVM,基于进程的操作。而Spark每次MapReduce操作是基于线程的,只在启动Executor是启动一次JVM,内存的Task操作是在线程复用的。

 

每次启动JVM的时间可能就需要几秒甚至十几秒,那么当Task多了,这个时间Hadoop不知道比Spark慢了多少。

 

考虑一种极端查询:Select month_id,sum(sales) from T group by month_id;

这个查询只有一次shuffle操作,此时,也许Hive HQL的运行时间也许比Spark还快。

 

结论:Spark快不是绝对的,但是绝大多数,Spark都比Hadoop计算要快。这主要得益于其对mapreduce操作的优化以及对JVM使用的优化。Spark比Hadoop的MR程序性能要高,正常在三到四倍左右,而并不是官网所说的高几百倍。

hadoop与spark的联系:

hadoop重在文件的存储,其核心也就是hdfs,分布式文件存储系统,其侧重点不在处理。而spark则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。

当然spark也不一定要依附于hadoop的文件系统,其他也是可以的。

在容错性方面,spark的处理要比hadoop强很多,spark提供了RDD,血缘关系图,DAG图,stage划分,在某一部分文件丢失时,可以根据从操作记录向前向后找回文件。而hadoop的某一文件出错就要从头再来了。

处理方法,spark提供了transformation和action这两大类的多个功能api,sparkStreaming流式算法,而hadoop的只有mapreducs。

最后hadoop比较稳定适合长期适合长期后台运行。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106046.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • rsyslogd -n_Syslog

    rsyslogd -n_Syslogimjournal模块提供将结构化日志消息从systemd日志导入syslog的功能。默认配置:module(load=”imjournal”#providesaccesstothesystemdjournalStateFile=”imjournal.state”)#Filetostorethepositioninthejournal有时需要禁止限速:module(load=”imjournal”Ratelimit.Interv

  • Java 中的三大特性(超详细篇)

    Java 中的三大特性(超详细篇)简介Java的三大特性:封装、继承、多态乍一听,好像很高大上,其实当你真正用的时候,会发现高大上的还在后面呢。。。热身在正式讲解三大特性之前,先普及几个知识1.访问权限修饰符Java中关于访问权限的四个修饰符,表格如下 private friendly(默认) protected public 当前类访问权限 √ √ √ √ 包访问权限 × √ √ √ 子类访问权限 × × √

  • kindeditor编辑器使用_html跳转链接代码

    kindeditor编辑器使用_html跳转链接代码kindeditor编辑器php的详细配置方法怎样为kindeditor设置初始内容下拉菜单(Menu)APIContents下拉菜单(Menu)APIK.menu(options)K.menu(options)创建下拉菜单。参数:objectoptions:配置信息返回:KMenu继承:KWidget(K.widget(options))创建并配置KindE…

    2022年10月12日
  • 《JavaScript 模式》读书笔记(8)— DOM和浏览器模式2

    四、长期运行脚本可能会注意到有时候浏览器会提示某个脚本已经运行了很长时间,是否应该停止该脚本。实际上无论要处理多么复杂的任务,都不希望应用程序发生上述事情。而且,如果该脚本的工作十分繁重,那么浏览器

  • 如何安装wget_ubuntu安装unzip命令

    如何安装wget_ubuntu安装unzip命令今天给服务器安装新LNMP环境时,wget时提示-bash:wgetcommandnotfound,很明显没有安装wget软件包。一般linux最小化安装时,wget不会默认被安装。可以通过以下两种方法来安装:1、rpm安装rpm下载源地址:http://mirrors.163.com/centos/6.2/os/x86_64/Packages/下载wget的RPM包:htt…

    2022年10月17日
  • navicat 15 激活码 3月最新注册码

    navicat 15 激活码 3月最新注册码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

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