论文部分内容阅读
随着计算机科学技术的飞速发展,网络在人们的生活中扮演了越来越重要的作用,各种新兴的互联网应用遍地开花,人们在享受互联网为生活带来的便利的同时,也为互联网创造了一份价值,就是数据。数据是企业的宝贵的财富,通过数据挖掘等科学技术,我们可以发掘出用户的消费习惯,用户的喜好等信息,从而使用户产生更大的价值。例如移动行业的增值业务,互联网商城的协同推荐等等。利用数据可以创造的价值实在太多了,然而随着数据规模的无限增大,单个计算机的计算能力开始变得无能为力。据IDC统计,2011年全球数据量将达1.8ZB。面对如此规模的“大数据”,企业们纷纷投向分布式计算。近年来许多分布式计算的框架被提了出来,而Hadoop就是其中最大的赢家。Hadoop作为一个开源的软件平台使得编写和运行用于处理海量数据的应用程序更加容易。然而有了数据,有了处理数据的平台,我们还是不能从海量数据中提取出隐藏的有价值的信息。这是因为在很多的企业中,大量有用的信息被锁在独立分散的数据库中。如果Hadoop不能够读取到这些数据,那么Hadoop功能再强大也没有实际的价值。
基于Hadoop与RDBMS的数据交换的需求被各个应用Hadoop做数据分析的企业所提了出来。基于此,本文以基于Hadoop与RDBMS的海量数据交换工具的研究与实现为题展开讨论。
首先,本文将对已有的数据交换工具进行研究。在本文之前,使用最广泛的两种数据交换的方式是通过Hadoop自带的DBInputFormat/DBOutputFormat以及Cloudera开发的Sqoop来完成的,本文将从这两种数据交换工具的算法实现的角度出发对其进行详尽的分析。同时,为了帮助读者更好地理解算法的流程,我们会深入地介绍Hadoop MapReduce的实现细节。通过研究其实现原理,进而推断出其性能的优势或不足,并结合我们对两种数据交换工具实际的性能测试来证实我们的推断的正确性。
其次,本文中实现了一种基于Hadoop与RDBMS的数据交换工具。我们采用了在海量数据交换的场景下,性能优秀的类似于Sqoop的算法来实现数据交换。同时,我们通过对Sqoop的分析,针对Sqoop的诸多不足之处进行了优化,例如,增加Java API接口,以方便其他系统的集成,另外对序列化/反序列化的方式进行改进,使其更加符合我们的需求。
最后,我们会将整个数据交换工具集成到BC-PDM现有的系统中。我们会介绍BC-PDM系统的特点,以及集成过程中所做的主要工作。在集成数据交换之后的BC-PDM系统中,我们还将对数据交换的流程进行演示。