基于大数据的运算一般来说有两种方案:
1、移动数据到运算方。
2、移动运算到数据方。
移动数据到运算方,就是将分布式文件系统的文件读取到本地计算机进行本地运算,但是考虑到磁盘IO、网络IO和本地计算机的CPU运算能力来说,基于大数据的运算是不太现实的;
那么,什么又是移动运算到数据方呢,(即在每一个分布式文件系统上进行计算),所以我们的计算逻辑是这样子的:
1、并发计算出局部结果。
2、遍历每一个局部结果,然后汇总数据。(即mapreduce的思想)。
mapreduce分为两个阶段:
1、map阶段:高并发的互不干扰的计算。
2、reduce阶段:汇总结果。
mapreduce、storm、spark的区别:前者为离线计算(数据已经存在),后两者为实时数据计算(一边产生数据,一边输出结果)
storm:流式计算,真正的实时计算。
spark:内存迭代计算(内存级计算,运算速度比mapreduce快)