`
m635674608
  • 浏览: 5044708 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

与 Hadoop 对比,如何看待 Spark 技术?

 
阅读更多
我本人是类似Hive平台的系统工程师,我对MapReduce的熟悉程度是一般,它是我的底层框架。我隔壁组在实验Spark,想将一部分计算迁移到Spark上。
年初的时候,看Spark的评价,几乎一致表示,Spark是小数据集上处理复杂迭代的交互系统,并不擅长大数据集,也没有稳定性。但是最近的风评已经变化,尤其是14年10月他们完成了Peta sort的实验,这标志着Spark越来越接近替代Hadoop MapReduce了。
Spark the fastest open source engine for sorting a petabyte
Sort和Shuffle是MapReduce上最核心的操作之一,比如上千个Mapper之后,按照Key将数据集分发到对应的Reducer上,要走一个复杂的过程,要平衡各种因素。Spark能处理Peta sort的话,本质上已经没有什么能阻止它处理Peta级别的数据了。这差不多远超大多数公司单次Job所需要处理的数据上限了。

回到本题,来说说Hadoop和Spark。Hadoop包括Yarn和HDFS以及MapReduce,说Spark代替Hadoop应该说是代替MapReduce。
MapReduce的缺陷很多,最大的缺陷之一是Map + Reduce的模型。这个模型并不适合描述复杂的数据处理过程。很多公司(包括我们)把各种奇怪的Machine Learning计算用MR模型描述,不断挖(lan)掘(yong)MR潜力,对系统工程师和Ops也是极大挑战了。很多计算,本质上并不是一个Map,Shuffle再Reduce的结构,比如我编译一个SubQuery的SQL,每个Query都做一次Group By,我可能需要Map,Reduce+Reduce,中间不希望有无用的Map;又或者我需要Join,这对MapReduce来说简直是噩梦,什么给左右表加标签,小表用Distributed Cache分发,各种不同Join的Hack,都是因为MapReduce本身是不直接支持Join的,其实我需要的是,两组不同的计算节点扫描了数据之后按照Key分发数据到下一个阶段再计算,就这么简单的规则而已;再或者我要表示一组复杂的数据Pipeline,数据在一个无数节点组成的图上流动,而因为MapReduce的呆板模型,我必须一次一次在一个Map/Reduce步骤完成之后不必要地把数据写到磁盘上再读出,才能继续下一个节点,因为Map Reduce2个阶段完成之后,就算是一个独立计算步骤完成,必定会写到磁盘上等待下一个Map Reduce计算。
上面这些问题,算是每个号称下一代平台都尝试解决的。
现在号称次世代平台现在做的相对有前景的是Hortonworks的Tez和Databricks的Spark。他们都尝试解决了上面说的那些问题。Tez和Spark都可以很自由地描述一个Job里执行流(所谓DAG,有向无环图)。他们相对现在的MapReduce模型来说,极大的提升了对各种复杂处理的直接支持,不需要再绞尽脑汁“挖掘”MR模型的潜力。

有兴趣的童鞋可以看看这个PPT
http://www.slideshare.net/Hadoop_Summit/w-235phall1pandey
这是Hadoop峰会上Tez的材料,第九页开始有描述Hive on Tez和传统MR Hive的区别,这些区别应该也适用于MR Hive和Spark SQL,也很清楚的体现了为何MR模型很笨重。

相比Tez,Spark加入了更多内存Cache操作,但据了解它也是可以不Cache直接处理的,只是效率就会下降。

再说Programming Interface,Tez的Interface更像MapReduce,但是允许你定义各种Edge来连接不同逻辑节点。Spark则利用了Functional Programming的理念,API十分简洁,相比MR和Tez简单到令人发指。我不清楚Spark如果要表现复杂的DAG会不会也变得很麻烦,但是至少wordcount的例子看起来是这样的,大家可以比较感受下:
incubator-tez/WordCount.java at master · apache/incubator-tez · GitHub
Examples | Apache Spark

处理大规模数据而言,他们都需要更多proven cases。至少Hadoop MapReduce是被证明可行的。

作为Data Pipeline引擎来说,MapReduce每个步骤都会存盘,而Spark和Tez可以直接网络发送到下一个步骤,速度上是相差很多的,但是存盘的好处是允许继续在失败的数据上继续跑,所以直观上说MapReduce作为pipeline引擎更稳健。但理论上来说,如果选择在每个完成的小步骤上加CheckPoint,那Tez和Spark完全能和现在的MapReduce达到一样的稳健。

总结来说,即便现在不成熟,但是并没有什么阻碍他们代替现有的MapReduce Batch Process。
对Tez而言,似乎商业上宣传不如Spark成功。Databricks头顶Berkley的光环,商业宣传又十分老道,阵营增长极快。光就系统设计理念,没有太大的优劣,但是商业上可能会拉开差距。Cloudera也加入了Spark阵营,以及很多其他大小公司,可以预见的是,Spark会成熟的很快,相比Tez。
但Tez对于Hortonworks来说是赢取白富美的关键,相信为了幸福他们也必须努力打磨推广tez。
所以就算现在各家试用会有种种问题,但是毕竟现在也就出现了2个看起来有戏的“次世代”平台,那慢慢试用,不断观望,逐步替换,会是大多数公司的策略。

 

   http://www.zhihu.com/question/26568496 

分享到:
评论

相关推荐

    与 Hadoop 对比,如何看待 Spark 技术? - 知乎1

    Hadoop 与 Spark 技术比较 Hadoop 是一个大数据处理技术,解决了大数据存储和处理的问题。HDFS(Hadoop Distributed File System)提供了高可靠的文件存储,通过将块保存多个副本的办法解决服务器或硬盘坏掉的问题...

    Hadoop原理与技术Spark操作实验

    1. 理解Spark编程思想; 2. 学会在Spark Shell中编写Scala程序; 3. 学会在Spark Shell中运行Scala程序。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内容 (一)Spark...

    Spark和Hadoop的集成

    Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。Storm是一个分布式的、容错的实时计算系统。两者整合,优势互补。

    spark-3.2.1 不集成hadoop安装包

    这意味着这个Spark发行版没有内置对Hadoop的支持,用户需要自己配置和管理与Hadoop相关的依赖。 Hadoop是另一个重要的开源项目,它提供了一个分布式文件系统(HDFS)和MapReduce计算框架,是大数据处理的基础平台。...

    大数据笔记,包含Hadoop、Spark、Flink、Hive、Kafka、Flume、ZK......

    大数据笔记,包含Hadoop、Spark、Flink、Hive、Kafka、Flume、ZK...... 大数据笔记,包含Hadoop、Spark、Flink、Hive、Kafka、Flume、ZK...... 大数据笔记,包含Hadoop、Spark、Flink、Hive、Kafka、Flume、ZK.......

    spark-3.5.1-bin-hadoop3.tgz

    Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询...

    Hadoop Hive HBase Spark Storm概念解释

    #### Spark与Storm的区别 - **设计理念**:Spark基于的理念是当数据量非常大时,将计算过程传递给数据(即数据驻留在内存中)要比将数据传递给计算过程更有效率。而Storm则是基于将数据传递给计算过程的设计理念。 -...

    Hadoop与Spark技术应用

    Spark与Hadoop可以协同工作,Spark可以运行在Hadoop的YARN资源管理器上,利用HDFS作为数据存储。这种结合使得用户能够在享受Spark高速计算的同时,利用Hadoop的稳定性和数据存储能力。 在实际应用中,"Path Finder....

    spark-3.1.3-bin-without-hadoop.tgz

    Spark与Hadoop的关系在于,Hadoop是大数据处理领域的一个基石,提供了分布式存储(HDFS)和分布式计算(MapReduce)框架。但Spark并不局限于Hadoop生态系统,它可以与多种数据源集成,如Amazon S3、Cassandra、HBase...

    hadoop2.7+spark3.2.1+pyspark3.2.1+python3.9

    PySpark是Spark与Python的接口,允许开发者使用Python编写Spark应用程序。在Python 3.9环境下,PySpark提供了丰富的数据处理库,如Pandas和NumPy,这使得Python开发者能够无缝地利用Spark的强大功能。PySpark支持...

    hadoop2.6.0+spark1.0所需资源

    hadoop-2.6.0.tar.gz + ideaIC-13.1.6.tar.gz + jdk-7u75-linux-i586.tar.gz + scala-2.10.4.tgz + spark-1.0.0-bin-hadoop2.tgz

    毕业设计-基于Hadoop+Spark的大数据金融信贷风险控系统源码.zip

    毕业设计-基于Hadoop+Spark的大数据金融信贷风险控系统源码.zip毕业设计-基于Hadoop+Spark的大数据金融信贷风险控系统源码.zip毕业设计-基于Hadoop+Spark的大数据金融信贷风险控系统源码.zip毕业设计-基于Hadoop+...

    Hadoop+Spark大数据技术(微课版)曾国荪、曹洁版思维导图(整理复习自用)

    第一章Hadoop大数据开发环境的思维导图

    大数据Hadoop+HBase+Spark+Hive集群搭建教程(七月在线)1

    在构建大数据处理环境时,Hadoop、HBase、Spark和Hive是四个核心组件,它们协同工作以实现高效的数据存储、处理和分析。本教程将详细介绍如何在Ubuntu系统上搭建这些组件的集群。 1. **Hadoop**:Hadoop是Apache...

    hadoop与spark分布式安装

    hadoop与spark分布式安装,内容详细,亲自搭建成功。助于新手

    spark-2.4.4-bin-hadoop2.7.tgz

    这个版本是与Hadoop 2.7兼容的,意味着它可以无缝集成到Hadoop生态系统中,充分利用Hadoop的数据存储和管理能力。 Spark的核心优势在于其快速、通用和可扩展的数据处理能力。它采用了内存计算模型,极大地提高了...

    Hadoop从业者为什么需要Spark?

    Spark是继Hadoop之后,成为替代Hadoop的下一代云计算大数据核心技术,目前SPARK已经构建了自己的整个大数据处理生态系统,如流处理、图技术、机器学习、NoSQL查询等方面都有自己的技术,并且是Apache顶级Project,...

    spark-3.2.0-bin-hadoop3-without-hive

    《Spark 3.2.0 与 Hadoop 3 的集成——无 Hive 版本解析》 Spark,作为大数据处理领域的重要工具,以其高效的内存计算和分布式数据处理能力备受青睐。Spark 3.2.0 是一个重要的版本更新,它在性能、稳定性和功能上...

    Hadoop及Spark集群搭建文档

    1. 安装Spark:同样从Apache官网下载与Hadoop版本兼容的Spark。 2. 配置Spark:在`spark-env.sh`中设置HADOOP_CONF_DIR指向Hadoop的配置目录。 3. 配置`spark-defaults.conf`,指定Master地址为YARN,以及其他相关...

Global site tag (gtag.js) - Google Analytics