78

深度解析:Spark 优于 Hadoop 吗?

 6 years ago
source link: http://mp.weixin.qq.com/s/MqmzvlvlwrIp3Of7S0R6Jw
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Image

原作者:Sundara Raghavan Sankaran

译者:Blanca

对于任何一个进入大数据世界的人来讲,大数据和Hadoop 就成了同义词。随着人们学习了大数据生态系统及其工具和运作原理,他们更能理解大数据的实际意义以及Hadoop 在生态系统中所扮演的角色。

维基百科对大数据这样解释:大数据是一个宽泛的术语,它指传统数据处理应用程序无法处理的巨大而复杂的数据集。

简单来讲,随着数据量的增加,采用常规处理方法需要花费大量时间且价格不菲。

Doug Cutting受谷歌GFS及MapReduce白皮书的启发,在 2005年创办了Hadoop 。Hadoop 采用开源软件框架对超大数据集进行分布式存储技术及分布式处理。换句话说,设计这一产品的目的在于缩减处理大数据集的时间和成本。

Hadoop,其分布式文件系统(HDFS)和分布式处理模块(MapReduce)成为大数据计算的实际标准。Hadoop 这一术语不仅可以与基础模块相关,也与可兼容Hadoop的其他软件包生态系统息息相关。

随着时间的推移,生成的数据量猛增,处理大量数据的需求也随之猛增。这最终使大数据计算需要满足各种不同需求,而这些需求并非都可以全部由Hadoop 完成。

大多数数据分析本质上是迭代处理。尽管迭代处理可以由MapReduce完成,但数据读取应该在每次迭代中进行。通常情况下,这并没有问题。但如果读取100GB的数据或几个TB的数据时,就会费时,而人们会不耐烦。

许多人认为数据分析是一门艺术而非一门科学。在任何艺术领域,艺术家创造一小块部分拼图,又将小拼图将放到更大的拼图上,见证它的生长。可以粗略的翻译为:数据分析师想在下一个处理开始之前得到前一个处理的结果。换句话说,许多数据分析学在本质上都是交互式的。在传统意义上,交互式分析习惯上受结构化查询语言(SQL)的影响。分析师在数据库中撰写可在数据中运行的查询条件。尽管Hadoop 也有同类产品(Hive和Pig),这原本也耗时,因为每个查询条件需要大量时间处理数据。

这些障碍促使了Spark的诞生,这种新型处理模块能促进迭代编程和交互式分析。Spark装备了一个将数据载入存储器并反复查询的内存原始模型。这使Spark非常适合大量数据分析及机器学习算法。

注意,Spark仅仅规定了分布式处理模块。存储数据部分仍然依赖Hadoop(分布式文件系统HDFS)采用分布存储方式高效存储数据,而不由Spark完成。

Spark 将大数据生态系统设置在超光速磁盘上,确保比MapReduce快10-100倍。许多人认为这可能是MapReduce的终结。

相比MapReduce来讲,Spark操作简单,甚至可以说非常便捷。即使对于一个简单逻辑或算法,MapReduce也需要100行代码;但使用Spark,一个简单逻辑,几行代码就可以完成。这就引出了一个关键因素,叫做用途广泛。许多对于MapReduce来讲不可能完成的机器学习或图表问题的高级算法,都可以由Spark完成。这让Spark的采用率相当高。

MapReduce没有交互模块。尽管Hive和Pig包含命令行接口,这些系统的性能仍然依赖MapReduce。MapReduce对于批处理仍然十分受用。

Spark 在内存中处理数据,而MapReduce却将处理后的数据传送回磁盘。所以Spark将优于MapReduce。

在2014年,Spark晋级Daytona GraySort测试并拔得头筹。对于门外汉来说,DaytonaGraySort是测试系统检索100TB(一万亿条记录)数据速度的第三方评判基准。

Spark使用206个AWS EC2 设备,在23分钟内将100TB的数据存储到磁盘上。此前的最高记录保持者是MapReduce,它使用了2100台设备,总共花费了72分钟。Spark在相同的条件下却比MapReduce快了3倍,使用的设备总数也少了10倍。

Spark占用大量内存。如果我们运行Spark的同时运行其他占用内存的服务,其性能可能大打折扣。但是,我们可以有把握地说,Spark在迭代处理方面占上风(需要多次传递同一数据)。

这两者在计算能力、磁盘和网络环境方面的硬件要求都十分相似。内存越大,Spark表现越好。这两者都使用商品服务器。

MapReduce编程费力,市场上这方面的专家并不多。即便有为数不多的Spark专家,但这也仅仅是因为Spark是初创产品。所以学习Spark编程比MapReduce要容易的多。

脱离了Hadoop 的Spark

运行Spark其实并不需要Hadoop的支持。如果我们没有从分布式文件系统(HDFS)中读取数据,Spark也可以自行运行。Spark也可以从诸如S3, Cassandra等其他存储中读写数据。在这种架构下,Spark可在独立模式下运行,并不需要Hadoop 组件的支持。

近期研究表明在产品中使用Spark的用户激增。许多用户同时运行Spark和Cassandra, 或者Spark和Hadoop ,又或者在Apche Mesos上运行Spark. 尽管Spark用户数量有所增长,但并没有在大数据社区造成恐慌。MapReduce使用率可能会下降,但具体降幅未知。

许多人预测Spark会促使另一种更优质堆栈的发展。但这种新型堆栈可能会与Hadoop 及其软件包生态系统非常相似。

Spark的最大优点是简洁。但它并不会彻底消灭MapReduce,因为使用MapReduce依然大有人在。即便Spark成为大赢家,除非研发新分布式文件系统,我们将同时使用Hadoop 和Spark处理数据。

原文链接:http://bigdata-madesimple.com/is-spark-better-than-hadoop-map-reduce/

数据特工介绍

后台回复“特工”加入我们

Image
Image

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK