`
冰糖葫芦
  • 浏览: 297589 次
社区版块
存档分类
最新评论

Spark是否会替代Hadoop?

阅读更多

我经常会从客户或者网上听到这个问题,尤其是最近几年。那么关于spark哪些被我们神化了,哪些又是真实的,以及它在“大数据”的生态系统中又是怎样的?


说实话,其实我把这个问题作为标题是有问题的,但是我们经常会这样问。Hadoop并不是一个单独的产品而是一个生态系统,而spark也是一样的。下面让我们来一个一个解释。目前Hadoop生态系统主要包括:

  1. HDFS—Hadoop分布式文件系统。它是一个分布式的、面向块的、不可更新的、高度伸缩性的、可运行在集群中普通硬盘上的文件系统。此外,HDFS还是一个独立的工具,它可以独立于Hadoop生态系统中其他组件而运行(但是如果我们想要使HDFS高可用时,还需要依赖zookeeper和日志管理器,但这又是另外一码事了)。
  2. MapReduce框架—这是一个基本的在集群中一组标准硬件上执行的分布式计算框架。我们没必要一定在HDFS张使用它—因为文件系统是可插拔的;同样的,我们也没必要一定在yarn中使用它,因为资源管理器是可插拔的:例如我们可以用Mesos来替换它。
  3. YARN—Hadoop集群中默认的资源管理器。但是我们可以在集群中不使用yarn,而是将我们的mr(译注:map/reduce)任务运行在Mesos之上;或者仅仅在集群中运行不需要依赖yarn的hbase。
  4. Hive—Hive是一个构建在MapReduce框架之上的类sql查询引擎,它可以将hiveQL语句转换为一系列运行在集群中的mapReduce任务。此外,hdfs也不是唯一的存储系统,也不一定非得使用MapReduce框架,比如在这里我么可以替换为Tez。
  5. Hbase—基于HDFS的键值对存储系统,为Hadoop提供了联机事务处理(OLTP)能力。Hbase仅仅依赖HDFS和zookeeper;但是Hbase只能依赖于HDFS吗?不是的,Hbase除了可以运行在HDFS上之外,还可以运行在Tachyon(内存文件系统)、MapRFS、IBMGPFS以及其他一些框架之上。

就这么多了。此外你可能还会想到storm可以处理数据流,但是它完全独立于hadoop,可以独立运行;你可能还会想到运行于MapReduce之上的机器学习框架Mahout,但它在之前被社区关注的越来越少。下图为Mahout被反馈的问题(红色)和被解决的问题(绿色)趋势图:

下面我们来说说spark,它主要包含以下几个方面:

  1. Spark Core -- 用于通用分布式数据处理的引擎。它不不依赖于任何其他组件,可以运行在任何商用服务器集群上。
  2. Spark Sql – 运行在Spark上的SQL查询语句,支持一系列SQL函数和HiveQL。但是还不是很成熟,所以不要在生产系统中使用;而HiveQL集成了需要的hive元数据和Hive相关的jar包。
  3. Spark Streaming – 基于spark的微批处理引擎,支持各种各样数据源的导入。唯一依赖的是Spark Core引擎。
  4. MLib – 构建在spark之上的机器学习库,支持一系列数据挖掘算法。

此外我们这里还要讲到的是一个关于spark的重要误区—“spark是基于内存的技术”。它不是基于内存的技术;spark是一个管道式的执行引擎,而且在shuffle的过程中会将数据写入磁盘(比如说,如果我们想针对某个字段做聚合操作)、如果内存不够的话也一样会内存溢出(但是内存可以调整)。因此,spark之所以比MapReduce快主要是因为它是管道式处理方式而不是有些人说的“基于内存的优化”。当然,spark在内存中做了缓存来提高性能,但这不是spark真正工作快的原因。

现在,我们再来完整比对一下:

  1. MapReduce可以被Spark Core替换?是的,它会随着时间的推移被替代,而且这种替代是合理的。但是spark目前还不是特别成熟能完全替代MapReduce。此外,也没有人会完全放弃MapReduce,除非所有依赖MapReduce的工具都有可替代方案。比如说,想要在pig上运行的脚本能在spark上执行还是有些工作要做的。
  2. Hive可以被Spark SQL替换?是的,这又是对的。但是我们需要理解的是Spark SQL对于spark本身来说还是比较年轻的,大概要年轻1.5倍。相对于比较成熟的Hive来说它只能算是玩具了吧,我将在一年半到两年之内再回头来看Spark SQL.。如果我们还记得的话,两到三年前Impala就号称要终结Hive,但是截止到目前两种技术也还是共存状态,Impala并没有终结Hive。在这里对于Spark SQL来说也是一样的。
  3. Storm可以被Spark Streaming替换?是的,可以替换。只不过平心而论storm并不是Hadoop生态系统中的一员,因为它是完全独立的工具。他们的计算模型并不太形同,所以我不认为storm会消失,反而仍会作为一个商业产品。
  4. Mahout可以被MLib替换?公平的讲,Machout已经失去了市场,而且从过去的几年来看它正在快速失去市场。对于这个工具,我们可以说这里是Spark真正可以替换Hadoop生态系统中的地方。

因此,总的来说,这篇文章的结论是:

  1. 不要被大数据供应商的包装所愚弄。他们大量推进的是市场而不是最终的真理。Hadoop最开始是被设计为可扩展的框架,而且其中很多部分是可替换的:可以将HDFS替换为Tachyon,可以将YARN替换为Mesos,可以将MapReduce替换为Tez并且在Tez之上可以运行Hive。这将会是Hadoop技术栈的可选方案或者完全替代方案?倘若我们放弃的MR(MapReduce)而使用Tez,那么它还会是Hadoop吗?
  2. Spark不能为我们提供完整的技术栈。它允许我们将它的功能集成到我们的Hadoop集群中并且从中获益,而不用完全脱离我们老的集群方案。
  3. Spark还不够成熟。我认为在过三到四年我们就不会再叫“Hadoop栈”而是叫它“大数据栈”或者类似的称呼。因为在大数据栈中我们有很广泛的选择可以选出不同的开源产品来组合在一起形成一个单独的技术栈使用。

 

译注:原文发表于2015-2-11

 

1. 本文由程序员学架构翻译

2. 转载请务必注明本文出自:程序员学架构(微信号:archleaner)

3. 原文链接:http://0x0fff.com/will-spark-replace-hadoop/

4. 更多文章请扫码:


 

  • 大小: 29.3 KB
  • 大小: 97.9 KB
  • 大小: 37.3 KB
  • 大小: 43.6 KB
  • 大小: 32.5 KB
分享到:
评论

相关推荐

    spark-3.2.1 安装包 集成 hadoop2.7

    Spark是Apache软件基金会下的一个开源大数据处理框架,它以其高效的计算性能、易用性和灵活性而闻名。Spark 3.2.1是Spark的一个稳定版本,提供了许多改进和新特性,旨在提升数据处理效率和用户体验。集成Hadoop 2.7...

    spark-3.1.2-bin-hadoop3.2.tgz

    在Linux环境下,Spark可以很好地运行并与其他Hadoop组件集成。 **Spark核心概念** 1. **DAG(有向无环图)调度**:Spark基于DAG的工作流设计,使得任务被拆分为多个阶段,提高执行效率。 2. **Resilient ...

    用Hadoop,还是不用Hadoop?(1).docx

    在探讨是否应该使用Hadoop时,首先需要理解Hadoop的本质及其在大数据处理中的角色。Hadoop是一个开源框架,主要用于分布式存储和处理大规模数据集。它由Apache软件基金会开发,核心组件包括HDFS(Hadoop Distributed...

    spark3.0.1与配套的hadoop3.2.1.zip

    Spark 3.0.1 和 Hadoop 3.2.1 是两个重要的大数据处理框架,它们在现代数据处理和分析领域扮演着核心角色。Spark 提供了高效、易用的数据处理能力,而 Hadoop 则是分布式存储和计算的基础平台。 Spark 3.0.1 是 ...

    Hadoop从业者为什么需要Spark?

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

    基于Hadoop、Spark及Flink大规模数据分析的性能评价

    实验结果分析表明,对于非排序的基准测试程序,使用Spark或Flink替代Hadoop,分别带来平均77%和70%执行时间的降低。整体上,Spark的性能结果最好;而Flink通过使用的显式迭代程序,极大提高了迭代算法的性能。

    大数据之路选择Hadoop还是MaxCompute?Hadoop开源与MaxCompute对比材料

    Hadoop是由Apache软件基金会开发的一个开源分布式计算平台,采用Java语言编写,旨在支持大规模数据集的分布式处理。Hadoop的核心组件包括Hadoop Distributed File System (HDFS) 和 MapReduce。其中: - **HDFS**:...

    颠覆大数据分析 基于StormSpark等Hadoop替代技术的实时应用

    随着业务需求的不断升级,实时数据分析的重要性日益凸显,因此出现了如Storm和Spark这样的Hadoop替代技术,它们专注于提供更快、更灵活的数据处理能力,尤其适合实时流式计算。 Storm是Twitter开源的分布式实时计算...

    spark-2.1.2-bin-hadoop2.6.tgz

    Spark是Apache软件基金会下的一个大数据处理框架,以其高效、易用和可扩展性著称。在给定的压缩包文件"spark-2.1.2-bin-hadoop2.6.tgz"中,我们找到了Spark的一个特定版本(2.1.2)与Hadoop 2.6版本的集成构建。这个...

    颠覆大数据分析基于StormSpark等Hadoop替代技术的实时应用

    资源名称:颠覆大数据分析 基于StormSpark等Hadoop替代技术的实时应用 内容简介:Vijay Srinivas Agneeswaran 博士,1998 年于SVCE 的马德拉斯分校获得计算机科学与工程专业的学士学位,2001 年获取了印度理工学院...

    spark-2.4.0-bin-without-hadoop.tgz

    "spark-2.4.0-bin-without-hadoop" 这个压缩包文件是专门为安装 Spark 2.4.0 而准备的,但需要注意的是,它不包含 Hadoop 相关依赖,这意味着你需要自己提供 Hadoop 配置或者在不依赖 Hadoop 的环境中使用。...

    你需要Spark的10个理由

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

    spark替代Hive实现ETL作业

    ### Spark替代Hive实现ETL作业的关键知识点 #### 使用Hive存在的问题 - **性能瓶颈**:Hive依赖于Hadoop MapReduce引擎进行计算逻辑的执行。尽管它具有较低的硬件需求和较大的吞吐量,但相较于现代DAG(有向无环图...

    Hadoop与Spark的对比和关系.pdf

    总的来说,Hadoop和Spark的关系并非替代,而是互补。Hadoop在批处理和离线分析中仍占有重要地位,而Spark则在实时处理、迭代计算和交互式分析方面展现出强大的优势。根据具体的应用需求,开发者可以选择适合的工具,...

    hadoop、spark、NoSQL实战全集高清

    在大数据处理领域,Hadoop、Spark和NoSQL都是至关重要的技术。这三者共同构建了现代数据处理的基石,从海量数据的存储到快速分析,再到高性能计算,它们各自扮演着不可替代的角色。 Hadoop是Apache软件基金会的一个...

    常见的hadoop十大应用误解

    **正解:** Hadoop 原生设计并非为实时分析,尽管通过引入实时处理框架如Apache Spark,可以增强Hadoop在实时分析中的能力。 - **误解:Hadoop 非常稳定,无需维护** **正解:** Hadoop 是一个复杂系统,需要持续...

    hadoop2.X新特性介绍

    Hadoop2.0中引入了**Container**的概念,用于替代Hadoop1.0中的**Slot**机制。Container是一种更细粒度的资源管理单位,支持动态资源分配,可以根据应用程序的实际需求灵活地分配资源。 - **支持CPU和内存两种资源...

    hadoop-2.7.1.zip

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的出现主要解决了海量数据处理的问题。Hadoop 2.7.1是Hadoop发展过程中的一个重要版本,它提供了许多增强特性和稳定性改进,使得大规模数据处理更加高效和...

    hadoop权威指南 中文版 英文版Hadoop: The Definitive Guide 带书签,无密码

    此外,书中还会讨论Hadoop与其他大数据技术的集成,如Spark、Storm和Hadoop Streaming,这些工具和框架扩展了Hadoop在实时处理、流处理和批处理等场景的应用。同时,你还会了解到数据的输入/输出(I/O)机制,如使用...

Global site tag (gtag.js) - Google Analytics