任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~

相信看这篇文章的你们,都和我一样对Hadoop和Apache Spark的选择有一定的疑惑,今天查了不少资料,我们就来谈谈这两种 平台的比较与选择吧,看看对于工作和发展,到底哪个更好。

一、Hadoop与Spark

1.Spark

Spark是一个用来实现快速而通用的集群计算的平台。速度方面,Spark扩展了广泛使用的MapReduce计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。

Spark项目包含多个紧密集成的组件。Spark的核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。

2.Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

二、异与同

  • 解决问题的层面不一样

首先,Hadoop和Apache Spark两者都是大数据框架,但是各自存在的目的不尽相同。Hadoop实质上更多是一个分布式数据基础设施: 它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着您不需要购买和维护昂贵的服务器硬件。同时,Hadoop还会索引和跟踪这些数据,让大数据处理和分析效率达到前所未有的高度。Spark,则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。

  • 两者可合可分

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

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

顺带说一下什么是mapreduce:我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。

  • Spark数据处理速度秒杀MapReduce

Spark因为其处理数据的方式不一样,会比MapReduce快上很多。MapReduce是分步对数据进行处理的: ”从集群中读取数据,进行一次处理,将结果写到集群,从集群中读取更新后的数据,进行下一次的处理,将结果写到集群,等等…“ Booz Allen Hamilton的数据科学家Kirk Borne如此解析。
反观Spark,它会在内存中以接近“实时”的时间完成所有的数据分析:“从集群中读取数据,完成所有必须的分析处理,将结果写回集群,完成,” Born说道。Spark的批处理速度比MapReduce快近10倍,内存中的数据分析速度则快近100倍。如果需要处理的数据和结果需求大部分情况下是静态的,且你也有耐心等待批处理的完成的话,MapReduce的处理方式也是完全可以接受的。
但如果你需要对流数据进行分析,比如那些来自于工厂的传感器收集回来的数据,又或者说你的应用是需要多重数据处理的,那么你也许更应该使用Spark进行处理。大部分机器学习算法都是需要多重数据处理的。此外,通常会用到Spark的应用场景有以下方面:实时的市场活动,在线产品推荐,网络安全分析,机器日记监控等。

  • Recovery & 恢复

两者的灾难恢复方式迥异,但是都很不错。因为Hadoop将每次处理后的数据都写入到磁盘上,所以其天生就能很有弹性的对系统错误进行处理。Spark的数据对象存储在分布于数据集群中的叫做弹性分布式数据集(RDD: Resilient Distributed Dataset)中。“这些数据对象既可以放在内存,也可以放在磁盘,所以RDD同样也可以提供完成的灾难恢复功能”

三、学哪个?

其实,正如所了解的那样,Spark的确是大数据行业中的后起之秀,与Hadoop相比,Spark有很多的优势。Hadoop之所以在大数据行业能够得到充分的认同主要是因为:

·Hadoop解决了大数据的可靠存储和处理问题;
·Hadoop的开源性,这能让很多大数据从业人员在里面找到灵感,方便实用;
·Hadoop经过了多年的开发,拥有完整的生态系统。
·HDFS在由普通PC组成的集群上提供高可靠的文件存储,通过将块保存多个副本的办法解决服务器或硬板坏掉的问题。
·MapReduce通过简单的Mapper和Reducer的抽象提供一个变成模型,可以在一个由几十台至上百台的PC组成的不可靠集群上并发地,分布式地处理大量的数据集,而把并发、分布式和故障恢复等计算细节隐藏起来。

Hadoop也有许多局限和不足,笼统的讲,在数据量不断扩大的情况下,Hadoop的运算速度会越发显得吃力。虽然现阶段,Hadoop在大数据行业内仍然有很高频率的应用,但不难想象在若干年后,数据量又上升几个数量级时,Hadoop所面临的窘境。而Spark的运算速度是Hadoop的百分之一甚至更快,因此,在未来,Spark必然会取代Hadoop,主宰大数据行业。

那是不是就可以跳过Hadoop,只学Spark呢?当然不是,有以下原因:

·现阶段,Hadoop仍然主导着大数据领域,我们可以学习先进的技术,但更是为了现阶段的就业,就目前阶段而言,学大数据必学Hadoop。
·MapReduce中有许多经典的思想,值得我们学习,这对我们理解大数据十分有帮助。
·确切的讲,Spark要替换的是Hadoop中的MapReduce,而不是Hadoop,Hadoop是一个工具包,而Spark和MapReduce一样,只是一种工具而已。

结论:

如果你是往业界的算法工程方面发展,那么两个都要学,Hadoop要了解,Spark要熟悉。如果你是大数据研究人员,那么要精通这两种。所以,这里的建议是,对于有志于在ML和大数据等领域发展的各位,可以按照Java -> Hadoop -> Spark这样的路径,如果你有C++和SQL的基础,那么学习曲线将不会特别陡峭,对于spark来说,学一点Scala则会更有帮助

最后推荐一个答案,下面有很多干货,帮助大家构建自己的学习路径:

零基础学习 Hadoop 该如何下手?

在机器学习、大数据等领域工作,该学Hadoop还是Spark?相关推荐

  1. 干货 | 大数据人工智能领域从菜鸟到高手晋级指南

    作者 | 王明哲.王存光 校对 | 丁楠雅 本文长度为5600字,建议阅读10分钟 本文为你剖析当下的时代背景,为在大数据江湖中修炼的行者提供升级建议. 我们身处一个"技术爆炸"和 ...

  2. 【资源】分享1套最适合Py开发的机器学习/大数据视频课程

    现在,越来越多做Python开发的朋友在学大数据/机器学习技术,马云也说了:"未来最大的资源就是数据,不参与大数据十年后一定会后悔!" 目前腾讯的社交数据,百度的搜索数据以及阿里的 ...

  3. 【免费】某机构最新3980元机器学习/大数据课程高速下载,限量200份

    [免费]某机构最新3980元机器学习/大数据课程高速下载,限量200份 湾区人工智能 今天 现在,越来越多做Python的朋友在学大数据/机器学习技术,马云也说了:"未来最大的资源就是数据, ...

  4. 开发人员该选择什么大数据工具提高工作效率?

    开发人员该选择什么大数据工具提高工作效率? 海量数据使得数据分析工作变得繁重困难,开发人员选择合适的大数据工具来开发大数据系统成为新的挑战.因此开发人员要根据不同的数据处理方式对大数据工具进行分类. ...

  5. 大数据部门的作用与大数据工程师的工作

    1.大数据部门作用     随着大数据产业迎来了发展的黄金期,越来越多的互联网公司转型为大数据公司.为促进大数据公司的健康发展,解决发展中遇到的问题,从大数据公司的概念及业务内容等入手,剖析大数据公司 ...

  6. 自学大数据可以找到工作吗?该怎么学?

    自学java,想将来从事大数据工作,怎么学? 我是大一通信工程的一名学生,我们学习的是C,但我将来想从事大数据开发的工作,我想向各位大佬请教一下,像我这种情况,自学java然后去从事大数据工作是不是不 ...

  7. 独家 | 大数据人工智能领域从菜鸟到高手晋级指南

    作者:王明哲.王存光 校对:丁楠雅 本文长度为5600字,建议阅读10分钟 本文为你剖析当下的时代背景,为在大数据江湖中修炼的行者提供升级建议. 我们身处一个"技术爆炸"和&quo ...

  8. 大数据人工智能领域从菜鸟到高手晋级指南

    我们身处一个"技术爆炸"和"共享.开源"的时代,先进技术的更新迭代速率超过了历史上任何一个时期,而且这些技术也不再闭塞,人人都可以接触并学习.终身学习已经是我们 ...

  9. 机器学习 大数据 数据挖掘_什么是机器学习? 来自数据的情报

    机器学习 大数据 数据挖掘 机器学习的定义 机器学习是人工智能的一个分支,其中包括用于自动根据数据创建模型的方法或算法. 与通过遵循明确的规则执行任务的系统不同,机器学习系统从经验中学习. 基于规则的 ...

  10. python架构师工作职责_大数据架构师工作的岗位职责

    大数据架构师负责研发技术发展方向,新技术领域的探索,将新技术应用到公司大数据平台,提升公司效能.下面是学习啦小编整理的大数据架构师工作的岗位职责. 大数据架构师工作的岗位职责1 职责: 1.负责大数据 ...

最新文章

  1. 【译】SQL Server误区30日谈-Day1-正在运行的事务在服务器故障转移后继续执行
  2. mysql通过ssl的方式生成秘钥
  3. python中write的用法_Python中操作文件之write()方法的使用教程
  4. 第一章:SpringBoot入门
  5. 编码练习——Java-String-API-练习
  6. FastDFS配置手册trackerstorage
  7. 由“深”至“广”,探索2022音视频技术的无限可能
  8. 带你掌握二进制SCA检测工具的短板及应对措施
  9. Xilinx FPGA PLL输出不能直接连接IO解决方法
  10. python server client_python 实现简单client与server | 学步园
  11. Kubernetes学习之路(26)之kubeasz+ansible部署集群
  12. 浅谈 OpenResty
  13. 使用STM32和freeRTOS实现《贪吃蛇》
  14. 51单片机怎么显示当前时间_我电脑时间显示坏了,怎么修改不了?该怎么办?详细图文教你解决...
  15. jsp % % ! 区别
  16. matlab接触封装,MATLAB如何解除封装
  17. 线程池提交执行任务中execute()方法和submit()的区别
  18. LeetCode力扣算法总结-go版本
  19. MySQL:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA
  20. Mac 必备软件推荐

热门文章

  1. 设置仿真器H-JTAG ARM仿真器和MDK 联调设置
  2. ubuntu重装用户root认证
  3. 海量文件或数据 导致高并发,高流量处理方案
  4. 经典英语1000句(转)
  5. PAT1018 Public Bike Management【dfs】【最短路】
  6. 开启Spark history server
  7. Centos 7 修改时区
  8. java grpc简单例子
  9. 让/etc/profile文件修改后立即生效
  10. PHP精粹:编写高效PHP代码(资深PHP技术专家多……