大数据技术分享

Spark VS MapReduce 浅谈

2019-12-19  本文已影响0人  code_solve

计算速度

计算的速度是取决于计算机本身的计算能力的。
并且目前来看,所有的计算机计算都是基于内存的(如果有不是的,请原谅我的孤陋寡闻...),
也就是说 MR 和 Spark 是没有区别的。

Shuffle

我们都知道,不管是Spark 还是 MR,
其理论依据都是 一篇名为 MapReduce 的论文
那么对于 Map 和 Reduce 两个阶段,其都是会产生 Shuffle 的,
而Shuffle会使得数据落地到磁盘,
相比于内存计算,磁盘的读写一般是要慢很多的,
当然不要抬杠说一些非常复杂的计算逻辑噢~~~
所以 Shuffle 也是影响速度的一个重要因素

Shuffle 方式或者说算法,其实二者差别也不大,
因为理论依据一样,所以理论上,
二者在这一块基本不会拉开差距,

计算模型

上面说了看似废话的两点,
但是还是得要说明,防止一些先入为主的错误观念。
那就是Spark的计算模型 DAG,
下面我们以Spark的视角来看DAG的优势。

编程更简单方便

因为DAG的存在,
是的 Spark 编程比MR方便快捷,
也更加的简单了,
在我看来这也是从MR转Spark的一个非常重要的一点,
谁也不会否认,用了Spark,真的不想再去编程MR了。

具体更好的控制力

因为DAG的存在,
使得我们可以把 各种业务 任意组合,
好处是显而易见的:

这里先额外提一句就是:
如果是团队开发,那队友都是水平参差不齐的,
很难做好优化工作,
就算是一个大神开发,
因为业务的多变,不当维护很难,
面对一些场景,可能不得不舍弃一些优化,
所以,不要想着MR能做到和Spark一样的水平,
那只是理想的国度,基本不存在的。

资源调度

这里不得不提一下的是:
MR的资源调度是细粒度调度的,
也就是说,他每个Job都要经历一次资源的申请到释放,
并且其执行的 Task 任务也是基于JVM 进程的。

而Sarpk则是粗粒度的资源调度,
其一个Application 只会进行一次资源申请,
在没有执行完所有任务,他是不会释放资源的,
并且其Task执行是基于更加轻量级的线程,
当我们处理数据的Task很多的时候,
这个节省的时间也是不可忽视的。

结束语

该文其实主要是以 DAG计算模型为主,
这也是在笔者看来Spark对于MR最重要的改变,
因为DAG的存在才有后来各种各样比MR高效的优化,
这里可能挖的其实还不够深,
如果有兴趣,欢迎你来进行补充和讨论。

上一篇下一篇

猜你喜欢

热点阅读