对于我们这些精通J2EE编程的人来说,三层架构思想深植脑海。在三层编程模型中,所有的数据会通过网络集中到一起,交由应用层来处理。我们由此形成了固有的观念,就是数据应该是分散的,而程序应该是集中的。
大数据系统无法处理网络过载的问题。传输动辄数T的数据量给应用层,使得网络带宽耗尽,网络拥挤不堪,导致传输效率大幅下降,甚至有可能导致系统故障。从大数据的观念来看,应该把数据分布存放到各个计算节点,程序也要移动到数据附近。要做到这一点,是一件很不容易的事情。除了程序要移动到存放数据的节点,程序运行所依赖的函数库也要移动到数据处理节点才行。如果大数据系统的集群拥有数百个计算节点,显然那将是程序维护/部署人员的噩梦。所以,大数据系统可以让我们集中式地部署程序代码,大数据系统后台会在计算任务启动之前把这些程序移动到各个数据处理节点。