主要内容:
1. 进行关系数据库同步到HBASE相关背景的调研,了解目前同步技术的发展现状:
通过对于关系数据库同步到HBASE发展现状的调研,了解到现在应用较广且开发比较成熟的日志采集系统主要是sqoop和mybus。对他们进行分析之后发现:sqoop可完成关系数据库和HBASE数据库数据的双向导出,支持按表、按列等自定义导出方式;但是多平台支持性一般,缺少同步功能,在导出之后难以对后续的数据变化跟进维护; mybus实现了实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步;但是仅支持mysql一种关系数据库、程序有不稳定bug、文档不健全。所以本次我决定自己设计一个支持多种关系数据库(sqlserver、oracle、mysql);关系数据库到HBASE的增量同步,可自定义同步方式(到具体的列、监控同步的时间段);具有更好的适应性和移植性,部署、使用简单,统一文件和日志的查看和管理的同步工具。
2. 确定基本需求,并完成需求分析:
为了实现本次需求的同步功能,更有利于对数据同步进行控制和管理,在本次Hbase与关系数据库同步工具设计和实现中提出了如下三个核心的功能需求:同步过程中的数据库管理、同步过程中的文件管理、同步过程中的变化捕捉,并对每个需求进行了详细的分析。然后确定了非功能性需求:高吞吐率:在本次的同步工具中,吞吐率是指单位时间能够采集的日志条数。通过调研发现单台服务器每秒产生的日志条数大概在1~2万条,所以本论文设计的日志采集也应该具备1~2万这样较高的吞吐率;高可靠性:高可靠性是指数据同步要具有高度的准确性,即不能出现数据在同步过程中丢失的情况。所以系统在没有机械故障等情况下,应该要确定采集准确性的100%;易部署性:易部署性是指设计出来的同步工具能够被轻松地部署到服务器上,不需消耗大量的人力手动操作的成本;良好的交互性:在实现日志采集过程的可视化和已采集数据的易操作性时,既要对用户提供简便快速高效的交互操作,也要给用户反馈美观易读的交互信息。
3. 在确定需求的基础上,调研并学习需求涉及到相关知识:
通过上面的需求分析发现,在这次毕业设计的完成过程中,可能涉及到之前自己很少接触和了解的一些知识领域。所以为了更好地实现和满足需求,我通过调研和学习,对xml、HDFS、HBase、JAVA、mysql、oracle、sqlserver等相关的理论知识和操作方法都有了一定的了解,为接下的设计和开发工作打下了坚实的基础。
4. 深度分析需求,完成了对于项目的总体设计工作:
在深度分析需求的基础上,结合之前的知识积累,完成了对于项目总体架构的设计,为接下来得开发工作指明了目标。在总体架构上,我们将项目分为了三个模块:读表模块、表处理模块、存表模块。读表模块:配置文件的读取和解析;配置文件参数传递;利用参数连接关系数据库;对关系数据库进行变化监控;读取监控变化信息,存入日志表文件中。标处理模块:读取日志表文件中的文件内容;根据日志表文件读取数据库,拿到需要的字段和数据;对数据进行处理,解决依赖,然后存入中间文件。存表模块:将中间文件中的数据读取出来并解析;解析完成之后,根据配置文件连接HBASE;连接完成,根据中间文件中的配置,将数据存入HBASE; 将存储过程写进日志,备份相应文件。
5. 完成了读表模块的设计和开发工作:
在总体设计的基础上,我们细化了对于读表模块的设计和开发。完成了预定的设计,并能实现预期功能,对目标数据表插入了触发器并进行监控,然后见变化存入了日志表中。
|