一、如何解决PB级数据计算问题
- 数据是庞大的,程序比数据小的多,显然将数据输入给程序是不划算的,那么反其而行,将程序分发到数据所在的地方进行计算,岂不划算?
二、如何实现移动计算程序到数据所在的位置进行计算
- 奖待处理的数据存储在服务器集群的所有服务器上,主要使用HDFS分布式文件存储系统,将文件分成很多块(BLOCK),以块为单位将数据存储在集群的服务器上。
- 大数据引擎根据集群不同服务器的计算能力,在每台服务器上启动若干分布式任务执行进程,这些进程会等待引擎给他们分配执行任务。
- 使用大数据计算框架支持的模型进行编程,比如Hadoop的MapReduce编程模型,或者Spark的RDD编程模型。应用程序编写好以后,将其打包。MapReduce和Spark都是在JVM环境中运行的,所以打包出来时一个jar包。
- 用Hadoop或这Spark的启动命令执行这个应用程序的jar包,首先执行引擎会解析程序要处理的数据的输入路径。根据数据量的大小,将数据分成若干片(Split),每个数据片都分配一个任务执行进程去处理。
- 任务执行进程收到分配的任务后,检查自己是否有任务对应的程序包,如果没有就去下载,下载以后通过反射的方式加载程序。
- 加载程序后,任务执行程序根据分配的数据片的文件地址和数据在文件内的偏移量读取数据,并将数据输入给应用程序从而实现分布式服务器集群中的移动计算程序。