当前位置: 首页 > news >正文

大数据框架 Hadoop 和 Spark 的异同

        谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生。但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,下面不妨跟我一块看下它们究竟有什么异同。

解决问题的层面不一样

       首先,Hadoop和Apache Spark两者都是大数据框架,但是各自存在的目的不尽相同。Hadoop实质上更多是一个分布式数据基础设施: 它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着您不需要购买和维护昂贵的服务器硬件。

       同时,Hadoop还会索引和跟踪这些数据,让大数据处理和分析效率达到前所未有的高度。Spark,则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。

两者可合可分

        Hadoop除了提供为大家所共识的HDFS分布式数据存储功能之外,还提供了叫做MapReduce的数据处理功能。所以这里我们完全可以抛开Spark,使用Hadoop自身的MapReduce来完成数据的处理。

        相反,Spark也不是非要依附在Hadoop身上才能生存。但如上所述,毕竟它没有提供文件管理系统,所以,它必须和其他的分布式文件系统进行集 成才能运作。这里我们可以选择Hadoop的HDFS,也可以选择其他的基于云的数据系统平台。但Spark默认来说还是被用在Hadoop上面的,毕 竟,大家都认为它们的结合是最好的。

Spark数据处理速度秒杀MapReduce

       Spark因为其处理数据的方式不一样,会比MapReduce快上很多。MapReduce是分步对数据进行处理的: ”从集群中读取数据,进行一次处理,将结果写到集群,从集群中读取更新后的数据,进行下一次的处理,将结果写到集群,等等…“ Booz Allen Hamilton的数据科学家Kirk Borne如此解析。

      反观Spark,它会在内存中以接近“实时”的时间完成所有的数据分析:“从集群中读取数据,完成所有必须的分析处理,将结果写回集群,完成,” Born说道。Spark的批处理速度比MapReduce快近10倍,内存中的数据分析速度则快近100倍。

      如果需要处理的数据和结果需求大部分情况下是静态的,且你也有耐心等待批处理的完成的话,MapReduce的处理方式也是完全可以接受的。

      但如果你需要对流数据进行分析,比如那些来自于工厂的传感器收集回来的数据,又或者说你的应用是需要多重数据处理的,那么你也许更应该使用Spark进行处理。

       大部分机器学习算法都是需要多重数据处理的。此外,通常会用到Spark的应用场景有以下方面:实时的市场活动,在线产品推荐,网络安全分析,机器日记监控等。

灾难恢复

       两者的灾难恢复方式迥异,但是都很不错。因为Hadoop将每次处理后的数据都写入到磁盘上,所以其天生就能很有弹性的对系统错误进行处理。

       Spark的数据对象存储在分布于数据集群中的叫做弹性分布式数据集(RDD: Resilient Distributed Dataset)中。“这些数据对象既可以放在内存,也可以放在磁盘,所以RDD同样也可以提供完成的灾难恢复功能,”Borne指出。



转载自:http://www.oschina.net/news/73939/hadoop-spark-%20difference


相关文章:

  • 下载tomcat9并正常启动后,浏览器无法显示localhost:8080对应网页
  • Java对象的序列化和反序列化
  • Spring连接数据库的几种常用的方式
  • 千万级规模高性能、高并发的网络架构经验分享
  • java高并发解决方案
  • 数据库Sharding的基本思想和切分策略
  • mysql中的unsigned
  • 下班后两小时,决定你将会成为怎样的人
  • MySQL索引使用方法和性能优化
  • Tomcat的性能与最大并发数
  • mcq 轻量级的消息队列
  • 数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示
  • 数据库分库分表(sharding)系列(二) 全局主键生成策略
  • JAVA设计模式之单例模式
  • Jvm工作原理学习笔记
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • golang 发送GET和POST示例
  • javascript 总结(常用工具类的封装)
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 技术胖1-4季视频复习— (看视频笔记)
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 实习面试笔记
  • 运行时添加log4j2的appender
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 从如何停掉 Promise 链说起
  • 如何在招聘中考核.NET架构师
  • ​2020 年大前端技术趋势解读
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • (1)(1.13) SiK无线电高级配置(五)
  • (1)SpringCloud 整合Python
  • (4) PIVOT 和 UPIVOT 的使用
  • (javascript)再说document.body.scrollTop的使用问题
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转) Android中ViewStub组件使用
  • .net 简单实现MD5
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NetCore 如何动态路由
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .NET学习全景图
  • .NET中的Exception处理(C#)
  • @requestBody写与不写的情况
  • [04]Web前端进阶—JS伪数组
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [C/C++]数据结构 栈和队列()
  • [HDOJ4911]Inversion
  • [iOS]随机生成UUID通用唯一识别码