您的位置 首页 知识

什么是Hadoop? Spark和Hadoop比照

什么是Hadoop? Spark和Hadoop对比-Hadoop在2006年开始成为雅虎项目,随后成为顶级的Apache开源项目。它是一种通用的分布式处理形式,具有多个组件:
HDFS(分布式文件系统),它将文件以Hadoop本机格式存储,并在集群中并行化;
YARN,协调应用程序运行时的调度程序.

每年,市场上都会呈现种种不同的数据办理规划、类型与速度体现的分布式体系。在这些体系中,Spark和hadoop是取得最大重视的两个。可是该怎样判别哪一款合适你?

假如想批处理流量数据,并将其导入HDFS或运用Spark Streaming是否合理?假如想要进行机器学习和猜测建模,Mahout或MLLib会更好地满意您的需求吗?

为了添加混杂,Spark和Hadoop常常与坐落HDFS,Hadoop文件体系中的Spark处理数据一同作业。可是,它们都是独立个别,每一个别都有自己的长处和缺陷以及特定的商业事例。

本文将从以下几个视点对Spark和Hadoop进行比照:体系结构,功能,本钱,安全性和机器学习。

什么是Hadoop? Spark和Hadoop比照

什么是Hadoop?

Hadoop在2006年开端成为yahoo项目,随后成为尖端的Apache开源项目。它是一种通用的分布式处理方法,具有多个组件:

HDFS(分布式文件体系),它将文件以Hadoop本机格局存储,并在集群中并行化;

YARN,和谐运用程序运转时的调度程序;

MapReduce,实践并行处理数据的算法。

Hadoop运用Java树立,可经过多种编程言语拜访,用于经过Thrift客户端编写MapReduce代码(包含Python)。

除了这些根本组件外,Hadoop还包含:

Sqoop,它将联系数据移入HDFS;

Hive,一种相似SQL的接口,答运用户在HDFS上运转查询;

Mahout,机器学习。

除了将HDFS用于文件存储之外,Hadoop现在还能够装备为运用S3存储桶或Azure blob作为输入。

它能够经过Apache发行版开源,也能够经过Cloudera(规划和规模最大的Hadoop供货商),MapR或HortonWorks等厂商供给。

什么是Spark?

Spark是一个较新的项目,开始于2012年在加州大学伯克利分校的AMPLab开发。它也是一个尖端Apache项目,专心于在群会集并行处理数据,但最大的差异在于它在内存中运转。

鉴于Hadoop读取和写入文件到HDFS,Spark运用称为RDD,弹性分布式数据集的概念处理RAM中的数据。 Spark能够以独立形式运转,Hadoop集群可用作数据源,也能够与Mesos一同运转。在后一种情况下,Mesos主站将替代Spark主站或YARN以进行调度。

Spark是环绕Spark Core树立的,Spark Core是驱动调度,优化和RDD笼统的引擎,并将Spark衔接到正确的文件体系(HDFS,S3,RDBM或ElasTIcsearch)。有几个库在Spark Core上运转,包含Spark SQL,它答应在分布式数据集上运转相似SQL的指令,用于机器学习的MLLib,用于图形问题的GraphX以及答应接连流式传输的流式传输记载数据。

Spark有几个API。原始界面是用Scala编写的,依据数据科学家的很多运用,还添加了Python和R端点。 Java是编写Spark作业的另一种挑选。

Databricks由也Spark创始人Matei Zaharia创立的,致力于供给依据 Spark 的云服务,可用于数据集成,数据管道等使命

1. 架构

Hadoop

首要,一切传入HDFS的文件都被切割成块。依据装备的块巨细和仿制因子,每个块在整个群会集被仿制指定的次数。该信息被传递给NameNode,它盯梢整个集群中的一切内容。 NameNode将这些文件分配给一些数据节点,然后将这些文件写入其间。 2012年施行高可用性,答应NameNode毛病转移到备份节点上,以盯梢群会集的一切文件。

MapReduce算法坐落HDFS之上,由JobTracker组成。一旦运用程序以其间一种言语编写,Hadoop承受JobTracker,然后分配作业(可包含核算单词和整理日志文件的任何内容),以便在存储在Hive库房中的数据之上运转HiveQL查询)到侦听其他节点的TaskTracker。

YARN分配JobTracker加快并监控它们的资源,以进步功率。然后将一切来自MapReduce阶段的成果汇总并写入HDFS中的磁盘。

Spark

除了核算在内存中履行并在那里存储直到用户活跃保存它们之外,Spark处理的作业方法与Hadoop相似。开始,Spark从HDFS,S3或其他文件存储中的文件读取到名为SparkContext的已树立机制。除此之外,Spark创立了一个名为RDD或弹性分布式数据集的结构,它表明一组可并行操作的元素的不可变调集。

跟着RDD和相关操作的创立,Spark还创立了一个DAG或有向无环图,以便可视化DAG中的操作次序和操作之间的联系。每个DAG都有阶段和过程;经过这种方法,它与SQL中的解说方案相似。

您能够对RDD履行转化,中心过程,操作或终究过程。给定转化的成果进入DAG,但不会保留到磁盘,但操作的成果会将内存中的一切数据保留到磁盘。

Spark中的一个新笼统是DataFrames,它是在Spark 2.0中作为RDD的配套接口开发的。这两者十分相似,但DataFrames将数据安排成命名列,相似于Python的熊猫或R包。这使得它们比RDD更便利用户,RDD没有相似的一系列列级标题引证。 SparkSQL还答运用户像联系数据存储中的SQL表相同查询DataFrame。

2. 功能

发现Spark在内存中运转速度快100倍,在磁盘上运转速度快10倍。在十分之一的机器上,它也被用于对100 TB数据进行排序,比Hadoop MapReduce快3倍。特别发现Spark在机器学习运用中更快,例如朴素贝叶斯和k-means。

由处理速度衡量的Spark功能现已发现比Hadoop更优,原因如下:

每次运转MapReduce使命的选定部分时,Spark都不会遭到输入输出问题的捆绑。事实证明,运用程序的速度要快得多

Spark的DAG能够在过程之间进行优化。 Hadoop在MapReduce过程之间没有任何周期性衔接,这意味着在该等级不会产生功能调整。

可是,假如Spark与其他同享服务在YARN上运转,则功能可能会下降并导致RAM开支内存走漏。出于这个原因,假如用户有批处理的用例,Hadoop被认为是更高效的体系。

3. 本钱

Spark和Hadoop都能够作为开源Apache项目免费取得,这意味着您能够以零装置本钱运转它。可是,重要的是要考虑整体具有本钱,其间包含保护,硬件和软件购买以及招聘了解群集办理的团队。内部装置的一般经历法则是Hadoop需求更多的磁盘内存,而Spark需求更多的内存,这意味着设置Spark集群可能会愈加贵重。此外,因为Spark是较新的体系,因而它的专家更为稀疏,而且本钱更高。另一种挑选是运用供货商进行装置,例如Cloudera for Hadoop或Spark for DataBricks,或运用AWS在云中运转EMR / Mapreduce流程。

因为Hadoop和Spark是串联运转的,即便在装备为在装置Spark的情况下运转的EMR实例上,也能够将提取定价比较分离出来。关于十分高等级的比较,假定您为Hadoop挑选核算优化的EMR群集,最小实例c4.large的本钱为每小时0.026美元。 Spark最小的内存优化集群每小时本钱为0.067美元。因而,Spark每小时更贵重,但对核算时刻进行优化,相似的使命应该在Spark集群上花费更少的时刻。

4. 安全性

Hadoop具有高度容错性,因为它旨在跨多个节点仿制数据。每个文件都被切割成块,并在许多机器上仿制无数次,以保证假如单台机器停机,能够从别处的其他块重建文件。

Spark的容错首要是经过RDD操作来完成的。开始,静态数据存储在HDFS中,经过Hadoop的体系结构进行容错。跟着RDD的树立,谱系也是如此,它记住了数据集是怎么构建的,而且因为它是不可变的,假如需求能够从头开端重建。跨Spark分区的数据也能够依据DAG跨数据节点重建。数据在履行器节点之间仿制,假如履行器和驱动程序之间的节点或通讯失利,一般可能会损坏数据。

Spark和Hadoop都能够支撑Kerberos身份验证,但Hadoop对HDFS具有愈加细化的安全操控。 Apache Sentry是一个用于履行细粒度元数据拜访的体系,是另一个专门用于HDFS等级安全性的项目。

Spark的安全模型现在很少,但答应经过同享密钥进行身份验证。

5. 机器学习

Hadoop运用Mahout来处理数据。 Mahout包含集群,分类和依据批处理的协作过滤,一切这些都在MapReduce之上运转。现在正在逐渐推出支撑Scala支撑的DSL言语Samsara,答运用户进行内存和代数操作,并答运用户编写自己的算法。

Spark有一个机器学习库MLLib,用于内存迭代机器学习运用程序。它可用于Java,Scala,Python或R,包含分类和回归,以及经过超参数调整构建机器学习管道的才能。

总结

那么它是Hadoop仍是Spark?这些体系是现在市场上处理数据最重要的两个分布式体系。 Hadoop首要用于运用MapReduce典范的大规划磁盘操作,而Spark则是一种更灵敏,但本钱更高的内存处理架构。两者都是Apache的尖端项目,常常一同运用,而且有相似之处,但在决议运用它们时,了解每个项目的特征是十分重要的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/103083.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部