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

HadoopSpark:全面比拼(架构、性能、成本、安全.

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

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

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

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

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

什么是Hadoop?
Hadoop Spark:全面比拼(架构、性能、成本、安全.

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?
Hadoop 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 Spark:全面比拼(架构、性能、成本、安全.
  • 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. 性能
Hadoop Spark:全面比拼(架构、性能、成本、安全.

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

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

每次运行MapReduce任务的选定部分时,Spark都不会受到输入输出问题的束缚。事实证明,应用程序的速度要快得多

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

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

3. 成本
Hadoop Spark:全面比拼(架构、性能、成本、安全.

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:全面比拼(架构、性能、成本、安全.

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

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

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

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

5. 机器学习
Hadoop Spark:全面比拼(架构、性能、成本、安全.

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

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

总结
Hadoop Spark:全面比拼(架构、性能、成本、安全.

那么到底是Hadoop还是Spark?它们是目前市场上数据处理最重要的两个分布式系统。

Hadoop主要用于使用MapReduce范例的大规模磁盘操作,而Spark则是一种更灵活,但成本更高的内存处理架构。两者都是Apache的顶级项目,经常一起使用,并且有相似之处,但在决定使用它们时,了解每个项目特征是非常重要的。

 


推荐阅读
  • Spark学习之路(一)Spark概述
    一,什么是spark定义:Spark一种基于内存的快速,通用,可扩展的大数据分析引擎.官网地址:http:spark.apache.org历史:2009年诞生于加州伯 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 本文详细介绍如何使用Netzob工具逆向未知通信协议,涵盖从基本安装到高级模糊测试的全过程。通过实例演示,帮助读者掌握Netzob的核心功能。 ... [详细]
  • 无论是在迁移到云服务还是更换云服务商的过程中,数据迁移都是一个至关重要的环节。本文将探讨数据迁移中可能遇到的问题及解决方案,包括路径问题、速度问题和数据完整性等。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 本文深入解析了Elasticsearch写入与查询的底层机制。在数据写入过程中,首先会将数据暂存至内存缓冲区,在此阶段数据尚不可被搜索。同时,为了保证数据的持久性和可靠性,系统会将这些数据同步记录到事务日志(translog)中。当内存缓冲区接近满载时,系统会触发刷新操作,将缓冲区中的数据写入到磁盘上的段文件中,从而使其可被搜索。此外,文章还探讨了查询过程中涉及的索引分片、倒排索引等关键技术,为读者提供了全面的技术理解。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • Elasticsearch 嵌套调用中动态类导致数据返回异常分析与解决方案 ... [详细]
  • Logstash安装配置
    阅读此文请先阅读上文:[大数据]-Elasticsearch5.3.1IK分词,同义词联想搜索设置,前面介绍了ES,Kiba ... [详细]
  • Spring cloud微服务架构前后端分离博客系统,Vue+boot源码分享 ... [详细]
  • 继PHP、Ruby、Python和Perl以后,Elasticsearch近来宣布了Elasticsearch.js,Elasticsearch的JavaScript客户端库。能够 ... [详细]
author-avatar
小丫2502895573
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有