前文提到的大数据系统的两个特点,决定了分配到计算节点的数据要在计算节点本地处理。所有的大数据编程模型都是基于分布式和并行处理的。网络I/O比本地磁盘I/O慢了好几个数量级。数据被分发到各个计算节点,程序运行依赖库也移动到了数据所在节点,计算节点就地计算处理数据的条件完备了。
虽然典型的大数据处理系统都希望把数据处理过程放在拥有数据的节点本地完成,但并不是每次都能实现。大数据系统会把计算任务尽量调度到离数据最近的节点。本章节的后续部分会介绍一些内容,其中大数据系统中某些特定的处理任务需要跨节点获取数据。分布在各个计算节点的计算结果,最终要汇聚到一个计算节点(著名的MapReduce框架的Reduce阶段或其他海量数据并行化处理编程模型的类似阶段),起码这一步是需要跨节点获取数据的。但是,在大多数的用例场景下,数据结果汇集阶段的数据量,相对于计算节点本地处理的原始数据量来说是微不足道的。此过程的网络开销可以忽略不计(但也不总是这样)。