热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hadoop进入寒冬期,崛起的会是Spark吗?

如果Hadoop开始进入寒冬期,率先崛起的会是呼声最高的Spark吗?笔者曾经看过一个非常有趣的比喻,Hadoop是第一家大型包工队,可以组织一大堆人合作(HDFS)搬砖盖房(用M

如果Hadoop开始进入寒冬期,率先崛起的会是呼声最高的Spark吗?

Hadoop进入寒冬期,崛起的会是Spark吗?
  笔者曾经看过一个非常有趣的比喻,Hadoop是第一家大型包工队,可以组织一大堆人合作(HDFS)搬砖盖房(用MapReduce),但是速度比较慢。

  Spark是另一家包工队,虽然成立得晚一些,但是他们搬砖很快很灵活,可以实时交互地盖房子,比Hadoop快得多。

  Hadoop开始升级,指定调度专家YARN调度工人。Spark从多个仓库搬砖(HDFS,Cassandra,S3,HBase),还允许不同专家如YARN/ MESOS对人员和任务进行调度。

  当然,他们两家并不是水火不容。Spark经常和Hadoop团队合作,这让问题变得更加复杂。不管怎么说,Spark和Hadoop都是两个独立的包工队,都有着各自的优缺点和特定的业务用例。

对大数据以及人工智能概念都是模糊不清的,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系 。从java和linux入手,其后逐步的深入到HADOOP-hive-oozie-web-flume-python-hbase-kafka-scala-SPARK等相关知识一一分享!


  所以,最后,哪一家会胜出呢?

  本文将从这两大系统的体系结构,性能,成本,安全性和机器学习能力等方面进行比较。

  Hadoop是什么?

  现在恐怕没有人会问“Hadoop是什么?”这个问题了,因为它实在是太火了!Hadoop在2006年开始成为雅虎项目,随后晋升为***Apache开源项目。它是一种通用的分布式系统基础架构,具有多个组件:Hadoop分布式文件系统(HDFS),它将文件以Hadoop本机格式存储并在集群中并行化; YARN,协调应用程序运行时的调度程序; MapReduce,这是实际并行处理数据的算法。Hadoop使用Java编程语言构建,其上的应用程序也可以使用其他语言编写。通过一个Thrift客户端,用户可以编写MapReduce或者Python代码。

Hadoop进入寒冬期,崛起的会是Spark吗?
  除了这些基本组件外,Hadoop还包括Sqoop,它将关系数据移入HDFS; Hive,一种类似SQL的接口,允许用户在HDFS上运行查询; Mahout,机器学习。除了将HDFS用于文件存储之外,Hadoop现在还可以配置使用S3 buckets或Azure blob作为输入。

  它可以通过Apache发行版开源,也可以通过Cloudera(规模和范围最大的Hadoop供应商),MapR或HortonWorks等厂商提供。

  Spark是什么?

  Spark是一个较新的项目,最初于2012年诞生在加州大学伯克利分校的AMPLab。它也是一个***Apache项目,专注于在集群中并行处理数据,最大的区别在于它在内存中运行。

  类似于Hadoop读取和写入文件到HDFS的概念,Spark使用RDD(弹性分布式数据集)处理RAM中的数据。Spark以独立模式运行,Hadoop集群可用作数据源,也可与Mesos一起运行。在后一种情况下,Mesos主站将取代Spark主站或YARN以进行调度。

Hadoop进入寒冬期,崛起的会是Spark吗?
  Spark是围绕Spark Core构建的,Spark Core是驱动调度,优化和RDD抽象的引擎,并将Spark连接到正确的文件系统(HDFS,S3,RDBM或Elasticsearch)。Spark Core上还运行了几个库,包括Spark SQL,允许用户在分布式数据集上运行类似SQL的命令,用于机器学习的MLLib,用于解决图形问题的GraphX以及允许输入连续流式日志数据的Streaming。

  Spark有几个API。原始界面是用Scala编写的,并且由于大量数据科学家的使用,还添加了Python和R接口。Java是编写Spark作业的另一种选择。

  Databricks是由Spark创始人Matei Zaharia创立的公司,现在负责Spark开发并为客户提供Spark分销。

  架构对比

  Hadoop

  首先,所有传入HDFS的文件都被分割成块。根据配置的块大小和复制因子,每个块在集群中被复制指定的次数。该信息被传递给NameNode,它跟踪集群中的所有内容。NameNode将这些文件分配给多个数据节点,然后将这些文件写入其中。在2012年被实施的高可用性允许NameNode故障转移到备份节点上,以跟踪集群中的所有文件。

  MapReduce算法位于HDFS之上,由JobTracker组成。一旦应用程序以其中一种语言编写,Hadoop接受JobTracker,然后分配工作(可包括计算单词和清理日志文件等内容,以及在Hive仓库数据集之上运行HiveQL查询)到侦听其他节点的TaskTracker。

  YARN分配JobTracker加速并监控它们的资源,以提高效率。然后将所有来自MapReduce阶段的结果汇总并写入HDFS中的磁盘之上。

  Spark

  Spark的计算过程在内存中执行并在内存中存储,直到用户保存为止。除此之外,Spark处理工作的方式基本与Hadoop类似。最初,Spark从HDFS,S3或其他文件存储系统读取到名为SparkContext的程序执行入口。除此之外,Spark创建了一个名为RDD(弹性分布式数据集)的结构,它表示一组可并行操作元素的不可变集合。

  随着RDD和相关操作的创建,Spark还创建了一个DAG(有向无环图),以便可视化DAG中的操作顺序和操作之间的关系。每个DAG都有确定的阶段和步骤。

  用户可以在RDD上执行转换,中间操作或最终步骤。给定转换的结果进入DAG,不会保留到磁盘,但每一步操作都会将内存中的所有数据保留到磁盘。

  Spark RDD顶部的一个新抽象是DataFrames,它是在Spark 2.0中作为RDD配套接口开发的。这两者非常相似,但DataFrames将数据组织成命名列,类似于Python的pandas或R包。这使得它们比RDD更方便,RDD没有类似的一系列列级标题引用。SparkSQL还允许用户像存储关系数据的SQL表一样查询DataFrame。

  性能

  Spark在内存中运行速度比Hadoop快100倍,在磁盘上运行速度快10倍。众所周知,Spark在数量只有十分之一的机器上,对100TB数据进行排序的速度比Hadoop MapReduce快3倍。此外,Spark在机器学习应用中的速度同样更快,例如Naive Bayes和k-means。

Hadoop进入寒冬期,崛起的会是Spark吗?
  由处理速度衡量的Spark性能之所以比Hadoop更优,原因如下:

  每次运行MapReduce任务时,Spark都不会受到输入输出的限制。事实证明,应用程序的速度要快得多。

  Spark的DAG可以在各个步骤之间进行优化。Hadoop在MapReduce步骤之间没有任何周期性连接,这意味着在该级别不会发生性能调整。

  但是,如果Spark与其他共享服务在YARN上运行,则性能可能会降低并导致RAM开销内存泄漏。出于这个原因,如果用户有批处理的诉求,Hadoop被认为是更高效的系统。

  成本

  Spark和Hadoop都可以作为开源Apache项目免费获得,这意味着用户都可以零成本安装运行。但是,考虑总体拥有成本才是最重要的,比如维护、硬件和软件购买,雇佣集群管理团队的开销。内部安装的一般经验法则是Hadoop需要更多的磁盘内存,而Spark需要更多的RAM,这意味着设置Spark集群可能会更加昂贵。此外,由于Spark是较新的系统,因此它的专家更为稀少,成本更高。另一种选择是使用供应商进行安装,例如Cloudera for Hadoop或Spark for DataBricks,或使用AWS在云中运行EMR / Mapreduce。

  由于Hadoop和Spark是串联运行的,将各自的价格分离出来进行比较可能是困难的。对于高级别的比较,假设为Hadoop选择计算优化的EMR集群,最小实例c4.large的成本为每小时0.026美元。 Spark最小内存优化集群每小时成本为0.067美元。因此,Spark每小时更昂贵,但考虑到计算时间,类似的任务在Spark集群上花费的时间更少。

  容错和安全性

  Hadoop具有高度容错性,因为它旨在跨多个节点复制数据。每个文件都被分割成块,并在许多机器上复制无数次,以确保如果单台机器停机,可以从其他块重建文件。

  Spark的容错主要是通过RDD操作来实现。最初,静态数据存储在HDFS中,通过Hadoop的体系结构进行容错。随着RDD的建立,lineage也是如此,它记住了数据集是如何构建的,由于它是不可变的,如果需要可以从头开始重建。跨Spark分区的数据也可以基于DAG跨数据节点重建。数据在执行器节点之间复制,如果执行器和驱动程序之间的节点通信失败,通常可能会损坏数据。

Hadoop进入寒冬期,崛起的会是Spark吗?
  Spark和Hadoop都可以支持Kerberos身份验证,但Hadoop对HDFS具有更加细化的安全控制。 Apache Sentry是一个用于执行细粒度元数据访问的系统,是另一个专门用于HDFS级别安全性的项目。

  Spark的安全模型目前很少,但允许通过共享**进行身份验证。

  机器学习

  Hadoop使用Mahout来处理数据。Mahout包括集群,分类和基于批处理的协作过滤,所有这些都在MapReduce之上运行。目前正在逐步推出支持Scala和DSL语言的Samsara(类似R的矢量数学环境),允许用户进行内存和代数操作,并允许用户自己编写算法。

Hadoop进入寒冬期,崛起的会是Spark吗?
  Spark有一个机器学习库叫MLLib,充分利用了Spark快速内存计算,迭代效率高的优势开发机器学习应用程序。它可用于Java,Scala,Python或R,包括分类和回归,以及通过超参数调整构建机器学习管道的能力。

  总结

  所以,到底是选Hadoop还是Spark呢?两者都是Apache的***项目,经常一起使用,并且有相似之处,但Spark并不是离不开Hadoop,目前已有超过20%的Spark独立于Hadoop运行,并且这一比例还在增加。从性能、成本、高可用性、易用性、安全性和机器学习诸多方面参考,Spark都略胜一筹!


推荐阅读
  • 大数据领域的职业路径与角色解析
    本文将深入探讨大数据领域的各种职业和工作角色,帮助读者全面了解大数据行业的需求、市场趋势,以及从入门到高级专业人士的职业发展路径。文章还将详细介绍不同公司对大数据人才的需求,并解析各岗位的具体职责、所需技能和经验。 ... [详细]
  • HBase 数据复制与灾备同步策略
    本文探讨了HBase在企业级应用中的数据复制与灾备同步解决方案,包括存量数据迁移及增量数据实时同步的方法。 ... [详细]
  • 如何提升Python处理约1GB数据集时的运行效率?
    如何提升Python处理约1GB数据集时的运行效率?本文探讨了在后端开发中使用Python处理大规模数据集的优化方法。通过分析常见的性能瓶颈,介绍了多种提高数据处理速度的技术,包括使用高效的数据结构、并行计算、内存管理和代码优化策略。此外,文章还提供了在Ubuntu环境下配置和测试这些优化方案的具体步骤,适用于从事推荐系统等领域的开发者。 ... [详细]
  • 深入理解云计算与大数据技术
    本文详细探讨了云计算与大数据技术的关键知识点,包括大数据处理平台、社会网络大数据、城市大数据、工业大数据、教育大数据、数据开放与共享的应用,以及搜索引擎与Web挖掘、推荐技术的研究及应用。文章还涵盖了云计算的基础概念、特点和服务类型分类。 ... [详细]
  • 本文介绍了Hadoop的核心组件,包括高可靠性和高吞吐量的分布式文件系统HDFS、分布式的离线并行计算框架MapReduce、作业调度与集群资源管理框架YARN以及支持其他模块的工具模块Common。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在前一篇文章《Hadoop》系列之“踽踽独行”(二)中,我们详细探讨了云计算的核心概念。本章将重点转向物联网技术,全面解析其基本原理、应用场景及未来发展前景。通过深入分析物联网的架构和技术栈,我们将揭示其在智能城市、工业自动化和智能家居等领域的广泛应用潜力。此外,还将讨论物联网面临的挑战,如数据安全和隐私保护等问题,并展望其在未来技术融合中的重要角色。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • Python 数据分析领域不仅拥有高质量的开发环境,还提供了众多功能强大的第三方库。本文将介绍六个关键步骤,帮助读者掌握 Python 数据分析的核心技能,并深入探讨六款虽不广为人知但却极具潜力的数据处理库,如 Pandas 的替代品和新兴的可视化工具,助力数据科学家和分析师提升工作效率。 ... [详细]
  • hadoop3.1.2 first programdefault wordcount (Mac)
    hadoop3.1.2安装完成后的第一个实操示例程 ... [详细]
author-avatar
laknm_456
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有