犹记得,Spark在2013年才开始陆续传到国内,而再此之前,大数据领域可以说是Hadoop的天下。但是仅在一年多左右的时间,Spark就迅速成为了新一代的大数据框架的选择,光环甚至一度超过Hadoop,而关于Hadoop和Spark的争议,也一直没断过。比如说Spark是否依赖hadoop?
关于Spark和Hadoop的关系,一开始似乎是处在天然的对立面,非此即彼,什么Hadoop已死,Spark才是未来等等的说法,层出不穷。但是到今天来看,2021年了,Hadoop也还是主流框架之一,Spark也同样获得了不低的地位。
为什么会出现这样的状况呢?
这其实就是今天的“Spark是否依赖hadoop”这个问题的答案。
Hadoop处理大数据的架构,通常是这样的顺序:从HDFS读取输入数据;在Map阶段使用用户定义的mapper function,然后把结果写入磁盘;在Reduce阶段,从各个处于Map阶段的机器中读取Map计算的中间结果,使用用户定义的reduce function,通常最后把结果写回HDFS。
在这个过程当中,至少进行了三次数据读写,高度依赖磁盘读写的Hadoop,在数据处理上就出现了性能瓶颈,在面对更大规模、更复杂的数据处理任务上,Hadoop存在很大的局限。
Spark正是在这样的背景下诞生的,Spark不像Hadoop采取磁盘读写,而是基于性能更高的内存存储进行数据存储和读写。而Spark本身作为平台也开发了streaming处理框架,spark streaming、SQL处理框架Dataframe、机器学习库MLlib和图处理库GraphX,也形成了较为完备的数据处理生态。
但是Spark也并非完美,从上面我们可以看出,Spark缺乏数据存储这一块的支持——没有分布式文件系统。
因此,Spark是否依赖hadoop?很大程度上来说,还是依赖的。因为Spark缺乏分布式存储支持,必须要依赖外部的数据源,这个依赖可以是Hadoop系统的HDFS,也可以是其他的分布式文件系统。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。