区别1
Spark 的运行模式是多线程的而Hadoop的运行模式是多进程。
区别2
Hadoop的多进程是细粒度的能够控制每个每个任务资源占用的资源,加载的时候会耗用很长的时间,不适合做低延迟的类的作业,但是增加了业务的平稳性。而Spark的多线程模型多个任务可以运行在一个jvm进程(Executor)上,可以大大的缩短加载时间,但是造成了此进程内部资源的竞争,不能细粒度的控制每一个任务占用的资源。
区别3
对于hadoop的每一个任务都需要运行在一个独立的jvm进程中,每个task执行完毕后会释放被占用的资源,这些被占用的资源不能被其他的Task所复用,每一个Task都需要经过资源的申请,运行Task,释放资源,因此造成了Mapreduce需要消耗较多的时间。而Spark是多个任务可以同时运行在同一个jvm进程(Executor),在此进程中各个Task可以共享资源(内存和cpu),相对于Hadoop大大缩短了消耗的时间。
区别4
Hadoop和Spark都采用了异步并发模式,hadoop采用的是类似于Actor的的并发模式,实现方式是epoll+状态机,儿Spark采用的是开源的Akka,Akka实现了Actor模型,性能非常高。
区别5
同一个节点上所有的任务同时运行在一个进程中有利于资源的共享,适合内存密集型的任务,尤其是对于需要加载大量词典的应用程序,可以大大的节省内存。