本章前述例子中,我们作了若干假设。比如,我们忽略了CPU时间。对于大多数的商业程序来说,计算的复杂性并不大。但是,随着计算量的提高,从实现的角度来看,各种情况的资源消耗都要考虑。举个例子,在数据挖掘中,会用到复杂的贝叶斯统计算法。这样的情况是计算密集型的应用。针对这样的问题,我们可以增加集群节点数量来提高性能,或者选用其他算法替代。
类似MapReduce这样的大数据计算编程范型可以被扩展到其他大数据计算技术中使用。比如,利用计算机的图形编程单元来进行计算机通用计算的技术(GPGPU)可以实现计算密集型应用程序的大规模并行计算。
我们还忽略了网络I/O开销。拥有50个节点的计算集群需要使用分布式文件系统,为了整合数据,这50台计算节点间的数据通信也是有开销的。在所有的大数据解决方案中,I/O开销是重中之重。在整个大数据处理流程过程中,这些开销消耗会导致串行依赖(Serial dependency)。