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比较稳定适合长期适合长期后台运行。

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

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

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


相关推荐

  • 研华acdp手机版_generation z

    研华acdp手机版_generation z上帝手中有 N 种世界元素,每种元素可以限制另外 1 种元素,把第 i 种世界元素能够限制的那种世界元素记为 A[i]。现在,上帝要把它们中的一部分投放到一个新的空间中去建造世界。为了世界的和平与安宁,上帝希望所有被投放的世界元素都有至少一个没有被投放的世界元素限制它。上帝希望知道,在此前提下,他最多可以投放多少种世界元素?输入格式第一行是一个整数 N,表示世界元素的数目。第二行有 N 个整数 A[1],A[2],…,A[N]。A[i] 表示第 i 个世界元素能够限制的世界元素的编号。输出格式

    2022年8月11日
  • SOAP协议的深度解析

    SOAP协议的深度解析笔记上传:1.soap与http的区别:HTTP只负责把数据传送过去,不会管这个数据是XML、HTML、图片、文本文件或者别的什么。( HTTP就是邮局的协议,他们规定了你的信封要怎么写,要贴多少邮票等。。。。)而SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用等  (SOAP就是你们之间交流的协议,负责把你所需要表达的意思写在信纸上,同时也负责让对方能够看得懂你的信。)2.s…

    2022年7月13日
  • dev-c++ 总是坏

    dev-c++ 总是坏

    2021年9月27日
  • Python二级考试知识点(史上最全)

    Python二级考试知识点(史上最全)Python二级考试知识点(一)1、Python语言基本语法元素考点1.1程序的基本语法元素:程序的框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、库引用33个保留字6种数据类型4种引用方法:import库、from库import函数、from库impor*、import库as别名考点1.2基本输入输出函数:input()、eval()、print()考点1.3源程序的书写风格-Python之禅运行importthis即可出现考点1.4Pytho

    2022年5月20日
  • java多线程系列(四)—ReentrantLock的使用

    java多线程系列(四)—ReentrantLock的使用

    2021年6月16日
  • c语言大数求和_指数幂的加法

    c语言大数求和_指数幂的加法文章目录1.大数加法2.大数幂运算3.大数求余废话不多说,直接上代码了。1.大数加法stringgetCountAdd(stringa,stringb){ stringc=””; intbit=-1;//判断是否进位-1为否,其他为进位数 inti=a.length()-1;//获得a字符串长度 intj=b.length()-1;//获得b字符串长度 //第一种情况两者都处理完 while(i!=-1&&j!

    2022年10月6日

发表回复

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

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