关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。
5年前关门了。
改进这个问题
如果数据集适合内存,spark的性能最好,如果数据集不适合,它将使用磁盘,因此它与hadoop一样快。假设我处理的是万亿/千兆字节的数据。有一小簇。显然,没有办法把它放进记忆里。我的观察是,在大数据时代,大多数数据集的单位都是千兆字节甚至更多。
那么内存处理引擎有什么好处呢?
关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。
5年前关门了。
改进这个问题
如果数据集适合内存,spark的性能最好,如果数据集不适合,它将使用磁盘,因此它与hadoop一样快。假设我处理的是万亿/千兆字节的数据。有一小簇。显然,没有办法把它放进记忆里。我的观察是,在大数据时代,大多数数据集的单位都是千兆字节甚至更多。
那么内存处理引擎有什么好处呢?
1条答案
按热度按时间ggazkfy81#
我发现spark相对于hadoop的mapreduce的优势不仅仅是
in-memory computation engine
甚至从磁盘输入。据我所知,至少有两大进步:Spark
DAG execution engine
在mapreduce上two phase execution
Thread level parallel execution
结束Process level parallel execution
详细说明一下:对于一个复杂的执行计划,spark的dagscheduler会在shuffle边缘将你的计划分为几个阶段,但是你不需要像hadoop那样添加虚拟Map阶段,因此,消除了reduce输出到hdfs中的不必要的具体化,然后作为Map输入读回。
hadoop的mapreduce具有众所周知的高延迟,因为mapreduce中的每个任务都是一个进程,jvm级的并行性与spark的线程级并行性相比是很重的。