• 大数据人官方¢Ú群

    大数据人|中国大数据第一社区

     ?#19968;?#23494;码
     注册会员

    扫一扫£¬访问微社区

    Hadoop vs Spark

    2016-6-18 20:16| 发布者: admin| 查看: 23656| 评论: 0

    摘要: 面对Hadoop与Spark孰优孰劣这个问题£¬最准确的观点就是£¬设计人员旨在让Hadoop和Spark在同一个团队里面协同运行¡£

    面对Hadoop与Spark孰优孰劣这个问题£¬最准确的观点就是£¬设计人员旨在让Hadoop和Spark在同一个团队里面协同运行¡£


    直接比较Hadoop和Spark有难度£¬因为它们处理的许多任务都一样£¬但是在一些方面又并不相互重叠¡£


    ?#28909;?#35828;£¬Spark没有文件管理功能£¬因而必须依赖Hadoop分布式文件系统£¨HDFS£©或另外某种解决方案¡£将Hadoop MapReduce与Spark作一番比较来得更明智£¬因为它们作为数据处理引擎更具有可比性¡£


    过去几年£¬随着数据科学趋于成熟£¬也日益需要用一种不同的方法来处理大数据¡£Hadoop在一些业务应用领域的表?#30452;群?#36215;之秀Spark更胜一筹£¬不过Spark在大数据领域有其一席之地£¬这归功于它具有速度快¡¢易于使用的优点¡£本文剖析了两大?#25945;?#30340;一系列常见属性£¬包括性能¡¢容错¡¢成本¡¢易用性¡¢数据处理¡¢兼容性和安全性¡£


    Hadoop和Spark方面要记住的最重要一点就是£¬它们并不是非此即彼的关系£¬因为它们不是相互排斥£¬也不是说一方是另一方的简易替代者¡£两者彼此兼容£¬这使得这对组合成为一种功能极其强大的解决方案£¬适合诸多大数据应用场合¡£


    Hadoop的定义


    Hadoop是Apache.org的一个项目£¬其实是一种软件库和框架£¬?#21592;?#20351;用简单的编程模型£¬跨计算器集群对庞大数据集£¨大数据£©进行分布式处理¡£Hadoop可灵活扩展£¬从单一计算机系统£¬到提供本地存储和计算能力的数千个商用系统£¬它都能轻松支持¡£?#23548;?#19978;£¬Hadoop就是大数据分析领域的重量级大数据?#25945;¨¡?/p>


    Hadoop由协同运行¡¢构建Hadoop框架的多个模块组成¡£Hadoop框架的主要模块包括如下£º


    • Hadoop Common

    • Hadoop分布式文件系统£¨HDFS£©

    • Hadoop YARN

    • Hadoop MapReduce


    虽然上述四个模块构成了Hadoop的核?#27169;?#19981;过还有其他几个模块¡£这些模块包括£ºAmbari¡¢Avro¡¢Cassandra¡¢Hive¡¢Pig¡¢Oozie¡¢Flume和Sqoop£¬它们进一步增强和扩展了Hadoop的功能£¬得以扩大到大数据应用领域£¬处理庞大数据集¡£


    许多使用大数据集和分析工具的公司使用Hadoop¡£它已成为大数据应用系统中事实上的标准¡£设计Hadoop的初衷是处理这项任务£º搜寻和搜索数十亿个网页£¬将这些信息收集到数据库中¡£正是由于渴望搜寻和搜索互联网£¬才有了Hadoop的HDFS及分布式处理引擎MapReduce¡£


    如果数据集变得极其庞大或极其复杂£¬以?#21155;?#24403;前的解决方案无法在数据用户认为合理的时间?#25991;փ行?#22320;处理信息£¬Hadoop对公司就会大有用处¡£


    MapReduce是一种出色的文本处理引擎£¬它理应如此£¬因为搜寻互联网和搜索互联网£¨它的首要任务£©都是基于文本的任务¡£


    Spark的定义


    Apache Spark开发人员声称它是¡°一种用于数据大规模处理的快速通用引擎¡±¡£相比之下£¬如果说Hadoop的大数据框架好比是800磅重的大猩猩£¬Spark就好比是130磅重的?#21592;ª¡?/p>


    虽然批评Spark的内存处理技术的人士承认£¬Spark确实速?#32676;?#24555;£¨最多比Hadoop MapReduce快100倍£©£¬但他们可能并不愿意承认它在?#25490;?#19978;运行起来速度最多快10倍¡£Spark还可以执行批?#30475;?#29702;£¬然而它真正擅长的是处理流工作负载¡¢?#25442;?#24335;查询和基于机器的学习¡£


    相比MapReduce基于?#25490;?#30340;批?#30475;?#29702;引擎£¬Spark赖以成名之处是其数据实时处理功能¡£Spark与Hadoop及其模块兼容¡£?#23548;?#19978;£¬在Hadoop的项目页面上£¬Spark就被列为是一个模块¡£


    Spark有自己的页面£¬因为虽然它可以通过YARN£¨另一种资源协调者£©在Hadoop集群中运行£¬但是它也有一种独立模式¡£它可以作为Hadoop模块来运行£¬也可以作为独立解决方案来运行£»这样一来£¬很难直接比较两者¡£然而随着时间的推移£¬一些大数据科学?#20197;?#35745;Spark会出现分叉£¬可能会取代Hadoop£¬尤其是在更快速地访问处理的数据至关重要的情况下¡£


    Spark是一?#26088;?#32676;计算框架£¬这意味着它更多地与MapReduce竞争£¬而不是与整个Hadoop生态系统竞争¡£?#28909;?#35828;£¬Spark没有自己的分布式文件系统£¬但可以使用HDFS¡£


    Spark使用内存£¬也可以使用?#25490;?#36827;行处理£¬而MapReduce完全基于?#25490;«H£MapReduce和Spark的主要区别在于£¬MapReduce使用持久存储£¬而Spark使用弹性分布式数据集£¨RDDS£©£¬下面容错部分有更详细的解释¡£


    性能


    网上不缺关于Spark与MapReduce相比有多快的信息¡£对两者进行比较有个问题£¬那就是它们处理数据的方式不一样£¬数据处理部分有介绍¡£Spark之所以如此快速£¬原因在于它在内存中处理一切数据¡£没错£¬它还可以使用?#25490;?#26469;处理未全部装入到内存中的数据¡£


    Spark的内存处理为来自多个来源的数据提供了近乎实时分析的功能£º营销活动¡¢机器学习¡¢物联网传感器¡¢日志监控¡¢安全分析和社交?#25945;?#32593;站¡£另外£¬MapReduce使用批?#30475;?#29702;£¬其实从来就不是为惊人的速度设计的¡£它的初衷是不断收集来自网站的信息£¬不需要这些数据具有实时性或近乎实时性¡£


    易用性


    众所周知£¬Spark以性能见长£¬但是它也因易用性而小有名气£¬原因是它随带易于使用的API£¬支持Scala£¨原生语言£©¡¢Java¡¢Python和Spark SQL¡£Spark SQL非常类似于SQL 92£¬所以几乎不需要经历一番学习£¬马上可以上手¡£


    Spark还有一种?#25442;?#27169;式£¬那样开发人员和用户都可以获得查询和其他操作的即时反馈¡£MapReduce没有?#25442;?#27169;式£¬不过有了Hive和Pig等附加模块£¬采用者使用MapReduce来得容易一点¡£


    成本


    MapReduce和Spark都是Apache项目£¬这意味着它们是开源免费软件产品¡£虽然软件不需要成本£¬但是派人用硬件运行任何一?#21046;教?#24102;来了成本¡£这两种产品都设计成可以在商用硬件上运行£¬?#28909;?#25152;谓的低成本白盒服务器系统¡£


    MapReduce和Spark在同样的硬件上运行£¬那么这两种解决方案的成本差异体现在哪里£¿MapReduce使用常规数量的内存£¬因为数据处理基于?#25490;Ì£?#25152;以公司得购买速度更快的?#25490;?#21644;大?#30475;排?#31354;间来运行MapReduce¡£MapReduce还需要更多的系统£¬将?#25490;?#36755;入/输出分布到多个系?#25104;Ï¡?/p>


    Spark需要大量内存£¬但是可以使用常规数量的常规转速?#25490;«H?#19968;些用户抱怨会产生临时文件£¬需要清理¡£这些临时文件通常保存7天£¬?#21592;?#21152;快针对同一数据集的任何处理¡£?#25490;?#31354;间相对便宜£¬由于Spark不使用?#25490;?#36755;入/输入用于处理£¬已使用的?#25490;?#31354;间可以用于SAN或NAS¡£


    然而£¬由于需要大量内存在内存中处理一切数据£¬Spark系统的成本更高£¬这点没错¡£但是Spark的技术同时减少了所需的系统数量¡£所以£¬最后的情?#38382; ¿?#31995;统成本较高£¬但是数量大大减少¡£也许到时候£¬Spark?#23548;?#19978;可以?#26723;?#27599;个计算单位的成本£¬尽管内存方面有额外的要求¡£


    举例说明£¬¡°Spark已证明在数据多达PB的情况下也轻松自如¡£它被用于在数量只有十分之一的机器上£¬对100TB数据进行排序的速度比Hadoop MapReduce快3倍¡£¡±这一成绩让Spark成为2014年Daytona GraySort基准¡£


    兼容性


    MapReduce和Spark相互兼容£»MapReduce通过JDBC和ODC兼容诸多数据源¡¢文件格式和商业智能工具£¬Spark具有与MapReduce同样的兼容性¡£


    数据处理


    MapReduce是一种批?#30475;?#29702;引擎¡£MapReduce?#36816;承?#27493;骤来操作£¬先从集群读取数据£¬然后对数据执行操作£¬将结果写回到集群£¬从集群读取更新后的数据£¬执行下一个数据操作£¬将那些结果写回到结果£¬依次类推¡£Spark执行类似的操作£¬不过是在内存中一步执行¡£它从集群读取数据后£¬对数据执行操作£¬然后写回到集群¡£


    Spark还包括自己的图形计算库GraphX¡£GraphX让用户可以查看与图形和集合同样的数据¡£用户还可以使用弹性分布式数据集£¨RDD£©£¬改变和联合图形£¬容错部分作了讨论¡£


    容错


    ?#21155;?#23481;错£¬MapReduce和Spark从两个不同的方向来解决问题¡£MapReduce使用TaskTracker节点£¬它为JobTracker节点提供了心跳£¨heartbeat£©¡£如果没?#34892;?#36339;£¬那么JobTracker节点重新调?#20154;?#26377;将执行的操作和正在进行的操作£¬交给另一个TaskTracker节点¡£这种方法在提供容错性方面很?#34892;§£?#21487;是会大大延长某些操作£¨即便只有一个?#25910;Ï£?#30340;完成时间¡£


    Spark使用弹性分布式数据集£¨RDD£©£¬它们是容错集合£¬里面的数据元素可执行并行操作¡£RDD可以引用外?#30475;?#20648;系统中的数据集£¬?#28909;?#20849;享式文件系统¡¢HDFS¡¢HBase£¬或者提供Hadoop InputFormat的任何数据源¡£Spark可以用Hadoop支持的任何存储源创建RDD£¬包括本地文件系统£¬或前面所列的其中一种文件系统¡£


    RDD拥有五个主要属性£º


    • 分区列表

    • 计算每个分片的函数

    • 依赖其他RDD的项目列表

    • 面向键值RDD的分区程序£¨?#28909;?#35828;RDD是散列分区£©£¬这是可选属性

    • 计算每个分片的首选位置的列表£¨?#28909;çHDFS文件的数据块位置£©£¬这是可选属性


    RDD可能具有持久性£¬?#21592;?#23558;数据集缓存在内存中¡£这样一来£¬以后的操作大大加快£¬最多达10倍¡£Spark的缓存具有容错性£¬原因在于如果RDD的任何分区丢失£¬就会使用原始转换£¬自动重新计算¡£


    可扩展性


    按照定义£¬MapReduce和Spark都可以使用HDFS来扩展¡£那么£¬Hadoop集群能变得多大呢£¿


    据称雅虎有一套42000个节点组成的Hadoop集群£¬可?#36816;?#25193;展无极限¡£最大的已知Spark集群是8000个节点£¬不过随着大数据增多£¬预计集群规模也会随之变大£¬?#21592;?#32487;续满足吞吐量方面的预期¡£


    安全


    Hadoop支持Kerberos身份验证£¬这管理起来有麻?#22330;?#28982;而£¬第三方厂商让企业组织能够充分利用活动目录Kerberos和LDAP用于身份验证¡£同样那些第三方厂商还为传输中数据和静态数据提供数据?#29992;Ü¡?/p>


    Hadoop分布式文件系统支持访问控制列表£¨ACL£©和传统的文件权限模式¡£Hadoop为任务提交中的用户控制提供了服务级授权£¨Service Level Authorization£©£¬这确保客户拥有正确的权限¡£


    Spark的安全性弱一点£¬目前只支持通过共享密钥£¨密码验证£©的身份验证¡£Spark在安全方面带来的好处是£¬如果你在HDFS上运行Spark£¬它可以使用HDFS ACL和文件?#24230;?#38480;¡£此外£¬Spark可以在YARN上运行£¬因而能够使用Kerberos身份验证¡£


    总结Hadoop vs Spark


    乍一看£¬对任何大数据应用而言£¬使用Spark似乎是默认选择¡£然而£¬事实并非如此¡£MapReduce已在大数据市场取得了进展£¬尤其受到这种公司企业的追捧£º需要由商用系统对庞大数据集加以控制¡£Spark的速度¡¢灵活性和相对易用性对MapReduce的低操作成本来说是绝对补充¡£


    ?#23548;?#19978;£¬Spark与MapReduce是一种相互共生的关系¡£Hadoop提供了Spark所没有的功能特性£¬?#28909;?#20998;布式文件系统£¬而Spark为需要它的那些数据集提供了实时内存处理¡£完美的大数据场景正是设计人员当初预想的那样£º让Hadoop和Spark在同一个团队里面协同运行¡£




    鲜花

    ?#24080;?/a>

    雷人

    路过

    鸡蛋

    最新评论

    关闭

    站长推荐上一条 /2 下一条


    id="mn_portal" >首页Portalid="mn_P18" onmouseover="navShow('P18')">应用id="mn_P15" onmouseover="navShow('P15')">技术id="mn_P37" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">?#25226;?/a>id="mn_P36" onmouseover="navShow('P36')">宝箱id="mn_P61" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">专栏id="mn_P65" >企业id="mn_forum_2" >社区BBSid="mn_Nd633" >导航 折叠导航 关注微信 关注微博 关注我们

    QQ|广告服务|关于我们|鄂ICP备14012176号-2|Archiver|手机版|小黑屋|大数据人    

    GMT+8, 2019-3-21 23:54 , Processed in 0.515515 second(s), 21 queries .

    Powered by 小雄! X3.2

    © 2014-2016 bigdataer Inc.

    返回顶部
    ºÚÁú½­¿ìÀÖÊ®·Ö