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

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吗?

4

由处理速度衡量的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跨数据节点重建。数据在执行器节点之间复制,如果执行器和驱动程序之间的节点通信失败,通常可能会损坏数据。

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

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

机器学习

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

500590020_banner