在大数据领域,Spark和Hadoop可以说是主流的两个计算框架了,也是常常被拿来做比较的两个框架,但是随着大数据应用场景的不断深入,Spark与Hadoop协同应用成为主流的共识,Spark访问Hadoop集群,两者结合起来,才能更好地解决大数据各个场景下的问题。
其实,早在研发之初,Spark的定位就在于对Hadoop的不足进行补充,Spark的计算模式继承了Hadoop的优势,并在其之上做了进一步的扩展,更好地满足企业大数据处理的需求。
Spark与Hadoop协同应用,主要是基于Spark作为一个计算引擎,只能对分布式存储的数据进行处理,而Spark自身系统并没有分布式文件系统,与Hadoop协同,Spark访问Hadoop集群,借助于Hadoop的HDFS分布式文件系统引入数据,是比较常见的做法之一。
在大规模数据计算上,Spark和Hadoop采用了类似的异步并发模型,但在任务级别(特指Spark任务和MapReduce任务)上却采用了不同的并行机制:Hadoop MapReduce采用了多进程模型,而Spark采用了多线程模型。
Hadoop 的MapReduce多进程模型,每个Task运行在一个独立的JVM进程中,每个Task运行完后,将释放所占用的资源,这些资源不能被其他Task复用。
而Spark的多线程模型,每个节点上可以运行一个或多个Executor服务,每个Executor单独运行在一个JVM进程中,每个Task则是运行在Executor中的一个线程。Executor一旦启动后,将一直运行,且它的资源可以一直被Task复用,直到Spark程序运行完成后才释放退出。
正是这样的计算模式差异,给Spark计算框架带来了更高的效率,能够保证更低延迟的处理大规模数据计算任务。Spark擅长的动态数据实时分析和迭代计算,Hadoop更擅长的是大规模数据离线分析和计算,两者结合是必然趋势。
Spark访问Hadoop集群,只是Spark和Hadoop协同运行的具体表现之一,Spark和Hadoop各组件相互协作,YARN负责在集群节点进行任务调度,HDFS可以在集群耗尽可用内存时能存储数据,也能在Spark不运行的时候存储历史数据。成都加米谷大数据,大数据技术分享,
大数据培训班课程,更多详情可联系客服了解!