移动计算就是把计算任务下发到数据所在的节点进行处理。
移动数据就是将数据移动到计算任务的节点,这样将损耗大量网络开销,导致流量激增,处理效率慢。
--------------------- --------------------- --------------------- --------------------- ---------------------
在学习大数据的时候接触了移动数据和移动计算这两种联系紧密而又有很大不同的概念,其中移动计算也叫做本地计算。
在以前的数据处理中时使用的移动数据,其实就是将需要处理的数据传输到存放不同处理数据方式逻辑的各个节点上。这样做的效率很低,特别是大数据中的数据量是很大的,至少都是GB以上,更大的是TB、PB甚至更大,而且磁盘I/O、网络I/O的效率是很低的,这样处理起来就需要很长的时间,远远不能满足我们的要求。而移动计算就出现了。
移动计算,也叫做本地计算,是数据就存放在节点上不再变动,而是将处理逻辑程序传输到各个数据节点上。由于处理程序的大小肯定不会特别的大,这样就可以实现很快将程序传输到存放数据的各个节点上去,然后本地执行处理数据,效率高。现在的大数据处理技术都是采用这种方式。
--------------------- --------------------- --------------------- --------------------- ---------------------
云计算中的移动数据与移动计算与其相似,集群中每个节点只是存储了数据的一部分(如一个10G的文件,HDFS默认是64M分块)。
如果将这些数据全部汇集到一台机器上云做计算,那么传输的时间也是相当可观的(1G的网卡与交换机的网络也需要100多秒才能传输完10G数据,这还是在理想的情况下),试想如果数据达到TB、PB呢?那么消耗的将不止是时间。
而如果我们将计算数据的方法交给每台有数据的机器,那么只需要传输几K,几百K,更甚几M的JAVA程序,等上一段时间,然后去各个节点收集结果就可以了(结果总比原数据少吧!!!,而且多台机器分工总比一台机器处理消耗的时间要少的)
--------------------- --------------------- --------------------- --------------------- ---------------------
生活中也有很多这样的思想:
1.存在北京某一知名叫兽 和 甘肃偏远山区500个孩子
a.把这群孩子运到北京听叫兽讲一堂课,孩子们受益匪浅,开开心心再坐车回到山区,这就是"移动数据";
b.让叫兽坐车到山区,给孩子们讲一堂课,孩子们受益匪浅,叫兽再坐车回北京,这就是"移动计算".
可以看出,此处的坐车传输与网络传输相似, "数据"与"计算"的传输成本差异是很大的;这还是山区的500个孩子,如果该叫兽是给某个小国家的50w个孩子讲课呢?
2.工作中去一些有资源的地方出差的员工,就相当于"计算",那些地方资源就相当于"数据"
eg.某工程小分队到偏远山区建造自来水厂