论文部分内容阅读
随着数字图书馆的发展和其在人们学习、工作和生活中的广泛使用,它所依赖的文献数据急剧增长,对数据处理的要求也日益复杂。文献数据海量增长和处理操作多样化使得数据处理花费的时间大大加长。如何快速、有效地完成对海量文献数据的处理,成为了文献处理系统面临的主要挑战。
针对文献数据处理遇到的挑战,本文结合在CALIS的相关工作,设计并实现了一个海量文献数据处理系统。该文献数据处理系统支持TB级海量文献数据的高效处理;支持对文献数据进行流程化处理;支持各种文献类型,支持各类型数据,包括元数据和对象数据;系统能运行于由大量、廉价PC组成的集群,有高可靠性和容错性。
MapReduce是海量数据处理领域广泛使用的一个编程模型,本文也借鉴了它的一些设计思想。但MapReduce应用到文献数据处理时会遇到一些问题,如中间结果数据量大、缺乏流程支持、多次迭代时存在空等待等。本文结合文献数据处理的特点,在以下方面改进了改进:
引入了作业流程。数字图书馆中的文献数据工作一般是按照一定业务流程进行,MapReduce缺乏对业务流程的支持,需要用户自己组织管理MapReduce任务。我们对此做了改进,引入作业流程来组织用户的处理任务,并设计了流程化后的任务执行与调度策略。
更灵活的调度策略。MapReduce作业包含不可拆分的Map任务和Reduce任务,Reduce任务必须等Map任务执行完毕才能开始,并且在多个MapReduce作业顺序执行时,下一个作业必须等上一个作业完成后才能开始。我们提供了更细的调度粒度,使得Reduce任务与Map任务能根据需要自由组织搭配,并可以让有先后依赖关系的任务并行执行。
另外,本文设计并实现了一个简单的分布式文件系统,用于文献数据处理时的数据存储和传输。该分布式文件系统基于更为严格的数据只读假设和本地假设,使得分布式文件系统能高效利用本地文件系统提供的支持,能简单有效地保证数据的一致性和并具有很好的容错性。