MyException - 我的博狗网
当前位置:我的博狗网» 软件架构设计 » 深度:Hadoop对Spark五大维度正面比拼

深度:Hadoop对Spark五大维度正面比拼

www.bsjylc692.com  网友分享于:2018-06-06  浏览:0次
深度:Hadoop对Spark五大维度正面比拼!

每年,市场上都会出现种种不同的数据管理规模、类型与速度表现的分布式系统。在这些系统中,Spark和hadoop是获得最大关注的两个。然而该怎么判断哪一款适合你?

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


 

为了增加混淆,Spark和Hadoop经常与位于HDFS,Hadoop文件系统中的Spark处理数据一起工作。但是,它们都是独立个体,每一个体都有自己的优点和缺点以及特定的商业案例。

本文将从以下几个角度对Spark和Hadoop进行对比:体系结构,性能,成本,安全性和机器学习。

 

3 数据仓库的特点

 

什么是Hadoop?

Hadoop在2006年开始成为雅虎项目,随后成为顶级的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的顶级项目,经常一起使用,并且有相似之处,但在决定使用它们时,了解每个项目的特征是非常重要的。

 

                    扫描下方二维码关注我们,获取更多精彩内容 ~ ~


 
m88 188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help
188bet www.188bet.com bwin 平博 unibet 明升 188bet uk Ladbrokes 德赢vwin 188bet m88.com w88 平博88 uedbet体育 188bet 188bet 威廉希尔 明升体育app 平博88 M88 Games vwin德赢 uedbet官网 bodog fun88 188bet

文章评论

软件开发程序错误博狗ExceptionCopyright © 2009-2015 MyException 版权所有