论文部分内容阅读
本文的工作是为北京大学软件工程研究所正在研发的基于Erlang OTP(OpenTelecom Platform)的虚拟计算平台UniAS提供处理大文件数据的能力,设计并实现了大文件并发处理模块。本文调研并分析了现有的大文件处理技术,重点考虑了如何将分布式文件系统中的大文件合理地自动切分为若干个小数据块,然后设计了一种MapReduce框架对文件中的数据进行处理,给出了基于Erlang OTP的系统实现。 本文的工作可以分为三个方面:对输入的大文件进行切分、对分割后的若干个小数据块进行Map和对Map得到的结果进行Redcue。在进行切分的时候,将切分后的数据映射到每个计算节点的本地进程空间,减少分布式文件系统的负载,并且保证不破坏原来输入文件中数据的结构;在进行Map的时候,使用Hash(散列)的方法计算切分后的小数据块,将具有相同Hash值的数据映射到同一个数据块中;而在Reduce的过程中,利用Erlang语言提供的ETS分布式数据库来进行归并计算,在Reduce的最后阶段,合并所有计算节点上的计算结果得到一个最终的结果文件。 通过本文的工作,给系统提供了处理大文件的能力,从而使系统可以较好地处理数据密集型的计算,充分地利用每个可用的计算节点上的CPU和IO资源,提高了资源的利用率。 最后,为了验证本文工作的有效性,提供了一个示例性的数据密集型的应用程序,验证了本文所设计的模块的有效性,实验结果说明本文的工作基本上达到了预期的目标。