大数据之多数据源综合管理系统:概述


1. 概述

1.1. 系统背景

最初的时候,我们只是想设计一个Web版本的HBase数据浏览器,类似于PL/SQL那样便捷,后来又添加了HDFS分布式文件系统浏览器,再后来又添加了Hive数据仓库浏览器功能。这个时候,hadoop集群由一个扩张到三个,大数据业务系统所涉及到的NoSQL数据库也越来越多,譬如Neo4j、MongoDB、Redis等,所涉及的批处理和流计算平台也从最初的只有MapReduce,又相继增加了Spark和Storm等。

原本,只是抱着学习和技术探索的态度进入hadoop生态技术圈的,也并没有指望在正式的生产环境中进行深度应用,但是现在,让我们措手不及的是要在很短的时期内进行数据库技术的转型,面对即将全面铺开的业务应用,以及由此导致的在多种数据库和计算平台的频繁切换,让我们逐渐生出些许烦躁和厌恶。

于是,决定做一些整合性的开发,“工欲善其事,必先利其器”,希望在战斗即将打响前,自己有一套稍稍完整的装备,不至于措手不及和手忙脚乱。这就是“大数据之多数据源综合管理系统”设计的初衷。“综合管理系统”,听起来这是一个多么庞大的系统,其实呢,这只是对一堆难以梳理的技术的一种懒惰的叫法,我们相信,很多人都从事开发过类似于“综合管理系统”这样的项目,它就是一种混混沌沌的状态,在叫法上,你我大可不必斤斤计较。

系统的设计基本上分为五个阶段。

第一,数据源管理。理想的构建目标中,系统将囊括业务系统所涉及到的所有的数据库,包括关系数据库(Oracle、MySql等)和非关系数据库(HBase、HDFS、Hive、Neo4j、MongoDB、Redis等等),以及其他不断涌现的新的数据存储技术。希望能够在这样一个系统中,实现对多种数据库的统一管理,包括数据库连接配置、数据库对象管理、数据浏览器、数据维护、访问授权管理等,免去在多种独立工具之间的频繁切换。

第二,数据通道管理。数据该如何写入数据库呢?外部系统该如何访问数据呢?在读写数据时该如何平衡速度、安全和传输量三者呢?如何解决跨语言应用的问题呢?这就是数据通道需要解决的问题。其实,刚开始的时候,设计数据通道的想法并非是基于以上目标,而只是不愿意在访问HBase数据库时复制引用大量的hadoop Jar文件,更别说无法预料的jar文件版本冲突引用的其他问题。

第三,数据迁移管理。当业务系统由基于常规的关系数据库转向基于NoSQL数据库时,数据迁移将是不得不面对的大问题。譬如,将Oracle数据迁移到HBase数据库中,你首先会想到Sqoop,这当然可以,不过稍微复杂一点的情况,就需要你编程了。另外,不同数据库之间相互迁移数据呢?譬如Oracle到Neo4j,Oracle到MongoDB,以及MongoDB到HBase等等多种情况呢?这就是我们设计数据迁移管理的初衷:“0”代码编程和跨数据库类型自由迁移。

第四,数据计算平台。说到这里,你可能已经感觉到系统设计的思路了,是的,就是遵循“存储-治理-计算-展示”的层次进行的。原本,我们大可不必在系统中引入Spark和MapReduce等计算平台,但是,我们不可能为了让用户提交运行Spark任务,随随便便将hadoop集群的配置信息和Linux主机的密码信息泄露出去,而且,通过shell命令行的方式提交Spark和MapReduce应用也并非人人可以胜任,为了降低任务提交的门槛、提高任务提交的便捷性以及出于对集群安全的考虑等,最终说服自己将数据计算平台引入系统中。

第五,远程主机管理。开始编写本篇文章时,我需要管理的CDH集群有三个,linux主机将近50台,windows主机数十台。每台主机的运行状态(内存、CPU、硬盘空间等)、各种服务的运行状态是每天都需要监控的,另外需要经常进行数据文件的上传、备份、清除,以及服务的安装调试等等,在有些情况下,市面上常用的shell工具做不到顺手和高效,迫于无奈,我们设计了自己的远程主机管理模块。

1.2. 系统配置

看下面的两张系统截图,你会发现,我们使用了jquery-easyui。不错,这款UI工具包帮了我们很大忙。

登录窗口

首页

1.2.1 运行环境

由于我们的CDH测试环境是5.4版本,要求jdk必须是1.7以上版本,所以是基于jdk 1.7开发的。

开发阶段和生产阶段所采用的部署服务器是tomcat 7.0,其他的服务器譬如jboss、weblogic等暂时没有测试过,如果您有兴趣,可以测试部署下。

系统可以在IE、谷歌、火狐等浏览器中运行,其中要求IE必须是8.0以上版本。

1.2.2 数据库配置

本系统的数据库采用的是MySQL,连接信息配置在jdbc.properties文件中,详细配置如下表所示:

选项

描述

driverClass

com.mysql.jdbc.Driver

jdbcUrl

连接字符串

user

用户名称

password

登录密码

1.2.3 系统配置

系统配置信息存放在system.config.properties文件中,详细配置如下表所示:

选项

描述

system.title

系统标题

system.sub.title

系统子标题

system.version

系统版本

system.copyright

系统版权信息

system.icon.path

系统图标

passage.service.address

系统RMI主通道部署主机地址(设为本机IP地址即可)

passage.service.port

系统RMI主通道部署端口号(默认为11000)

 

1.3. 系统发布

1.3.1 系统版本

由于本系统涉及到的功能较多,所以系统发布工作将分阶段进行。第一阶段将发布6个独立的版本,称之为1.0版本,其中“数据源管理”将分别在1.0.1和1.0.2两个子版本中介绍。第二阶段将发布完整的版本,称之为为2.0版本。

v1.0.1版本,包含“数据源管理”的两个子功能:HDFS分布式文件系统、HBase数据库。

v1.0.2版本,包含“数据源管理”的剩余的子功能:Neo4j图数据库、MongoDB文档数据库、Redis键值数据库、Hive数据仓库、关系数据库等数据库功能。

v1.0.3版本,包含数据通道功能。

v1.0.4版本,包含数据迁移功能。

v1.0.5版本,包含远程主机管理功能。

v1.0.6版本,包含数据计算平台功能。

1.3.2 系统部署

我们将系统所涉及到的所有资料都打包成一个rar文件,名称为“mdsm-v1.0.1-20170216.rar”,其中“mdsm”为系统名称,“v1.0.1”为系统版本号,“20170216”为发布日期。里面包含4个文件,如下图所示:

文件

描述

mdsm

编译后的web项目。

mdsm.psc

备份后的mysql数据库,包含所有的表和数据。我们采用navicat for Mysql进行还原操作:

首先创建mdsm数据库,如下图所示:

新建mysql数据库

然后在“备份”面板中点击“还原备份”按钮,选择本地的mdsm.psc文件,进行还原操作,如下图所示:

还原备份

mdsm.pdf

设计文档和用户手册。

readme.txt

系统发布说明文件。

 

【未完待续】


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM