Spark作为数据处理的核心应用,有着重要的作用和地位,那么spark能不能取代Hadoop而存在呢?
Spark只是分布式计算平台,而hadoop已经是分布式计算、存储、管理的生态系统。
与Spark相对应的是Hadoop MapReduce。Spark是可以取代MapReduce的,从而成为Hadoop系统中不可或缺的一部分。但是为什么MapReduce还在被使用呢?因为有很多现有的应用还依赖于它,它不是一个独立的存在,已经成为其他生态不可替代的部分,比如pig,hive等。
至于Spark相对于Hadoop的优势,有以下几点:
(1)任务调度的开销
传统的MR系统,如Hadoop 是为了运行长达数小时的批量作业而设计的,在某些极端情况下,提交一个任务的延迟非常高。
spark采用了事件驱动的类库 akka来启动任务,可以避免进程或线程启动,以及切换开销。
(2)数据格式和内存布局
由于MR Schema On Read处理方式会引起较大的处理开销。Spark抽象出分布式内存存储结构弹性分布式数据集RDD,进行数据的存储。RDD能支持粗粒度写操作。但对于读取操作,RDD可以精确到每条几率,这使得RDD可以用来作为分布式索引,Spark的特性是能够控制数据在不同节点上的分区,用户可以自定义分区策略,如Hash分区。Spark 和SparkSQL在Spark的基础上实现了列存储和列存储压缩
但是分布式计算仅仅是Hadoop的一部分,所以比较Hadoop和Spark实际上是Spark和MapReduce的对比:
1、 更快
2、 更加容易使用
编程的时候没有Map+Reduce函数,而且配置起来超级方便。除支持JAVA外,还支持Scala、Python、R。特别是Scala,很适合写数据分析的程序,而Mapreduce用JAVA很繁琐。
3、 巨好用的库
4、 运行方便
Spark是可以脱离hadoop运行的,比如数据可以从数据库或者本地文件里面抽取。不过毕竟大数据时代,大家都习惯于将Spark和hadoop通过Mesos或者YARN结合起来用;主要用Hadoop的HDFS,当然Hbase或者Hive这种HDFS之上的组件,Spark也支持。
因此Spark是不可以取代Hadoop的,我们要区分两者的作用和地位,才可以更好的把握应用。我平常的时候喜欢看“大数据cn”这些微信公众号,里面的一些介绍也挺不错的,大家平时可以去看看,对于改善自己的知识架构有着重要的作用。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/193026.html