移动计算比移动数据更划算
移动计算程序到数据所在位置进行计算是如何实现的?
(1)将待处理的大规模数据存储在服务器集群的所有服务器上,主要使用HDFS分布式文件存储系统,将文件分成很多块(block),以块为单位存储在集群的服务器上
(2)大数据引擎根据集群里不同服务器的计算能力,在每台服务器上启动若干分布式任务执行进程,这些进程会等待分配给自己的执行任务
(3)使用大数据计算框架支持的编程模型进行编程,比如hadoop的mapreduce编程模型,或者spark的RDD编程模型。编写好应用程序后,将其打包,mapreduce和spark都是在JVM环境中运行的,所以打包出来的是一个java的JAR包
(4)用hadoop或者spark的启动命令执行jar包。执行引擎会解析程序要处理的数据输入路径,根据数据输入量的大小,将数据分成若干片(split),每一个数据片都分配给一个任务执行进程去处理
(5)任务执行进程收到分配的任务后,检查自己是否与任务对应的程序包,如果没有就去下载程序包,下载以后通过反射的方式加载程序。最重要的一步,也就是移动计算就完成了
(6)加载程序后,任务执行进程根据分配的数据片的文件地址和数据在文件内的偏移量读取数据,并将数据输入给应用程序按相应的方法执行,从而实现在分布式服务器集群中移动计算程序对大规模数据进行并行处理的计算目标