论文部分内容阅读
随着大数据和云计算的发展,分布式文件系统在众多的存储系统中扮演着越来越重要的角色。与此同时,数据仓库也经历了概念的提出、理论的逐步完善、初步建立仓库,到现在发展成熟等过程。到目前为止,绝大多数数据仓库还是使用传统的关系型数据库来管理其中的数据。然而,随着数据仓库的发展,传统的关系型数据库已不能满足数据仓库建设和维护的需要。互联网上日积月累并不断涌现大量内容丰富、种类各异的数据,使得今天的应用系统要处理的数据对象,成为了海量的结构化、半结构化、非结构化数据并存混合型数据。分布式数据库应运而生,它是一种基于分布式平台的数据库系统,比较典型的有hive和habse。它能够用来处理这些海量、异构、复杂和个性化的数据。 因此,企业或机构开始把数据仓库中的数据存入到分布式文件系统。但现在企业或机构中仍有大量应用是基于传统数据库或传统文件系统的,而传统关系数据库中依然存放着大量的数据。企业或机构需要将数据文件从关系型数据库迁移到分布式文件系统。 Sqoop是Apache的一个数据抽取转换工具,通过自动生成MapReduce代码来实现大数据平台的数据导入导出。将关系型数据库的数据导入到大数据平台分为以下几个步骤:首先,发出一条查询语句,得出待导入数据表的表结构信息(包括字段名称和类型等)。然后,根据命令中指定的split-by列(即划分字段)将数据行划分到不同的map。最后,将划分好的数据交给不同的map去执行MapReduce导入任务。 首先,在导入过程中划分数据到不同map中时,Sqoop的本身实现中采用的是均分点范围划分算法。而数据的分布往往是不均匀的,原划分算法会导致map间数据划分不均匀的问题。本文基于对Sqoop的研究,利用先探测数据分布再划分的思想,提出了一种基于循环的高位统计的数据均匀划分算法,能够有效地将待导入数据进行均匀划分。 另外,本文基于并行化rsync算法重新实现了Sqoop的增量导入功能。rsync是一种数据的增量传输算法,它不但能够只传送少量的增量数据,而且能够利用原数据中已存在的数据块对数据文件进行重构,极大地减少了数据的传送量。因此,它能够有效提高数据的增量导入性能。本文通过将rsync算法并行化,提出了一种基于并行化rsync的增量导入算法。该算法能够有效地提高Sqoop增量导入性能。 最后,本文设计和开发了一个面向大数据平台的数据迁移原型系统。该系统采用JSP为前端和Servlet为后端,以改进后的Sqoop为底层,实现了一个大数据平台的数据导入导出的Web系统。 实验结果表明,基于循环的高位统计的数据划分算法通过均匀划分map,使集群各节点的负载更均衡,有效地提高了大数据平台的节点资源利用率,缩短了数据导入导出时间。另外,并行化的rysnc算法从有别于Sqoop原有实现的角度,实现了数据的增量导入,也有效地提高了Sqoop的性能,并增强了导入的灵活性。