写在前面
本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和文献引用请见100个问题搞定大数据理论体系
解答
在分布式系统有一个可以说是最核心的理论:
内存 >> 磁盘IO >> 网络IO
网络IO是我们要尽量避免的,如果避免不了那么走网络的数据越少越好。
既然数据是庞大的,而程序要比数据小得多,将数据输入给程序是不划算的,那么就反其道而行之,将程序分发到数据所在的地方进行计算,也就是所谓的移动计算比移动数据更划算,也叫数据不动代码动。
补充
移动程序到数据所在的地方去执行,这种技术方案其实我们并不陌生。
从事 Java 开发的同学可能有过用反射的方式热加载代码执行的经验,如果这个代码是从网络其他地方传输过来的,那就是在移动计算。
杀毒软件从服务器更新病毒库,然后在 Windows 内查杀病毒,也是一种移动计算(病毒库)比移动数据(Windows 可能感染病毒的程序)更划算的例子。
大数据技术将移动计算这一编程技巧上升到编程模型的高度,并开发了相应的编程框架,使得开发人员只需要关注大数据的算法实现,而不必关注如何将这个算法在分布式的环境中执行,这极大地简化了大数据的开发难度,并统一了大数据的开发方式,从而使大数据从原来的高高在上,变成了今天的人人参与。