楼主: 时光永痕
627 0

[数据挖掘新闻] 为什么为您的大数据项目选择Apache Spark而不是Hadoop? [推广有奖]

  • 0关注
  • 14粉丝

svip3

学术权威

12%

(VIP/贵宾)三级

74%

威望
0
论坛币
26 个
通用积分
49.7576
学术水平
4 点
热心指数
4 点
信用等级
4 点
经验
34070 点
帖子
2731
精华
0
在线时间
316 小时
注册时间
2020-7-21
最后登录
2024-4-28

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
为什么为您的大数据项目选择Apache Spark而不是Hadoop?
当2014年发布第一个Spark版本时,Hadoop从2009年开始在商业领域已经经历了数年的增长。尽管Hadoop使用广泛使用的分布式计算方法解决了有效分析大型TB级数据集的主要障碍,但仍存在不足之处,阻碍了其广泛接受。
Hadoop的局限性
Hadoop的一些常见限制如下:
I / O绑定操作:
由于依赖本地磁盘存储来保存和检索数据,因此在Hadoop中执行的任何操作都会产生I / O开销。在更大的数据集涉及数百个服务器上的数千个数据块的情况下,问题变得更加严重。
公平地说,协调并发I / O操作(通过HDFS)的能力构成了Hadoop世界中分布式计算的基础。但是,要利用该功能并在不同的用例和数据集之间高效地调整Hadoop集群,则需要大量的专业知识,甚至是不成比例的知识。
因此,工作负载的I / O约束性质成为了将Hadoop用于超大型数据集的威慑因素。例如,机器学习用例需要数百次迭代操作,这意味着系统每次迭代都会产生I / O开销。
MapReduce编程(MR)模型:
Hadoop中的所有操作都需要根据MapReduce编程模型来表达问题-即,用户将不得不根据键值对来表达问题,其中每个键值对可以独立计算。在Hadoop中,编写高效的MapReduce程序(主要是使用Java)并非易事,尤其是对于Java或Hadoop(或两者)不熟悉的程序而言。
非MR用例:
由于依赖于MapReduce,因此还必须使用MapReduce程序来表达其他更常见,更简单的概念,例如过滤器,联接等。因此,跨主键跨两个文件的联接将必须采用键值对方法。这意味着,如果不付出大量的编程工作,就很难实现简单和复杂的操作。
编程API:
Java作为跨Hadoop的中央编程语言的使用,意味着要能够正确地管理和使用Hadoop,开发人员必须对Java及其相关主题(如JVM调优,垃圾收集等)有深入的了解。这也意味着使用R,Python和Scala等其他流行语言的开发人员几乎没有资源来重用或至少以他们最了解的语言实现其解决方案。
总体而言,即使Hadoop世界曾倡导大数据革命,但仍未能使大规模使用该技术民主化大数据。
AMPLab的团队很早就意识到了这些缺点,并着手创建Spark来解决这些缺点,并在此过程中希望开发出一种新的高级替代品。
通过Spark克服Hadoop的局限性
现在,我们将讨论上一部分中讨论的一些局限性,并了解Spark如何解决这些领域,从而通过它可以提供Hadoop生态系统的替代方案。
一开始要记住的一个关键区别是,Spark不需要Hadoop即可运行。实际上,Spark访问数据的基础后端可以是HDFS之外的诸如HBase,Hive和Cassandra之类的技术。
这意味着希望利用独立Spark系统的组织无需构建单独的Hadoop基础架构就可以这样做。
Spark解决方案如下:
I / O绑定操作:
与Hadoop不同,Spark可以存储和访问存储在内存中的数据,即RAM,如前所述,RAM比从磁盘读取数据快1000倍以上。随着当今企业系统中的标准SSD驱动器的出现,两者之间的差异已大大降低。最近的NVMe驱动器每秒可提供高达3-5 GB(千兆字节)的带宽。
但是,RAM的平均读取速度约为每秒25-30 GB,与从较新的存储技术读取数据相比,仍然快5-10倍。结果,能够将数据存储在RAM中可以使Spark操作读取数据的时间提高5倍甚至更多。这是对Hadoop操作模型的重大改进,该模型依赖于磁盘读取所有操作。特别是,机器学习中涉及迭代操作的任务极大地受益于Spark的存储和从内存读取数据的功能。
MapReduce编程(MR)模型:
虽然MapReduce是主要的编程模型,用户可通过该模型从Hadoop平台中受益,但Spark并没有相同的要求。这对于更复杂的用例尤其有用,例如涉及无法轻易并行化的计算的定量分析(例如机器学习算法)。通过将编程模型与平台分离,Spark允许用户编写和执行以各种语言编写的代码,而无需强制任何特定的编程模型。
非MR用例:
Spark SQL,Spark Streaming和Spark生态系统的其他组件提供了丰富的功能集,这些功能使用户可以执行常见的任务,例如SQL连接,聚合和相关的类似数据库的操作,而无需利用其他功能,外部解决方案。通常会针对Hive中存储的数据执行Spark SQL查询(另一个选项是JSON),并且其他Spark API(例如R和Python)中也提供了此功能。
编程API:
Spark中最常用的API是Python,Scala和Java。对于R程序员,有一个单独的名为SparkR的软件包,该软件包允许直接从R中访问Spark数据。这是Hadoop和Spark之间的主要区别因素,并且通过公开这些语言的API,Spark可以立即由更大的社区访问。开发人员。在数据科学和分析中,Python和R是最主要的选择语言,因此,相对于Hadoop,任何Python或R程序员都可以通过Spark来简化学习过程。此外,Spark还包括一个用于临时分析的交互式外壳。
题库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Apache Spark Hadoop apache Spark SPAR

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-7 16:01