大數據之多數據源綜合管理系統:概述


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