最初的時候,咱們只是想設計一個Web版本的HBase數據瀏覽器,相似於PL/SQL那樣便捷,後來又添加了HDFS分佈式文件系統瀏覽器,再後來又添加了Hive數據倉庫瀏覽器功能。這個時候,hadoop集羣由一個擴張到三個,大數據業務系統所涉及到的NoSQL數據庫也愈來愈多,譬如Neo4j、MongoDB、Redis等,所涉及的批處理和流計算平臺也從最初的只有MapReduce,又相繼增長了Spark和Storm等。mysql
本來,只是抱着學習和技術探索的態度進入hadoop生態技術圈的,也並無期望在正式的生產環境中進行深度應用,可是如今,讓咱們措手不及的是要在很短的時期內進行數據庫技術的轉型,面對即將全面鋪開的業務應用,以及由此致使的在多種數據庫和計算平臺的頻繁切換,讓咱們逐漸生出些許煩躁和厭惡。jquery
因而,決定作一些整合性的開發,「工欲善其事,必先利其器」,但願在戰鬥即將打響前,本身有一套稍稍完整的裝備,不至於措手不及和手忙腳亂。這就是「大數據之多數據源綜合管理系統」設計的初衷。「綜合管理系統」,聽起來這是一個多麼龐大的系統,其實呢,這只是對一堆難以梳理的技術的一種懶惰的叫法,咱們相信,不少人都從事開發過相似於「綜合管理系統」這樣的項目,它就是一種混混沌沌的狀態,在叫法上,你我大可沒必要斤斤計較。linux
系統的設計基本上分爲五個階段。web
第一,數據源管理。理想的構建目標中,系統將囊括業務系統所涉及到的全部的數據庫,包括關係數據庫(Oracle、MySql等)和非關係數據庫(HBase、HDFS、Hive、Neo4j、MongoDB、Redis等等),以及其餘不斷涌現的新的數據存儲技術。但願可以在這樣一個系統中,實現對多種數據庫的統一管理,包括數據庫鏈接配置、數據庫對象管理、數據瀏覽器、數據維護、訪問受權管理等,免去在多種獨立工具之間的頻繁切換。sql
第二,數據通道管理。數據該如何寫入數據庫呢?外部系統該如何訪問數據呢?在讀寫數據時該如何平衡速度、安全和傳輸量三者呢?如何解決跨語言應用的問題呢?這就是數據通道須要解決的問題。其實,剛開始的時候,設計數據通道的想法並不是是基於以上目標,而只是不肯意在訪問HBase數據庫時複製引用大量的hadoop Jar文件,更別說沒法預料的jar文件版本衝突引用的其餘問題。shell
第三,數據遷移管理。當業務系統由基於常規的關係數據庫轉向基於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工具作不到順手和高效,迫於無奈,咱們設計了本身的遠程主機管理模塊。windows
1.2. 系統配置瀏覽器
看下面的兩張系統截圖,你會發現,咱們使用了jquery-easyui。不錯,這款UI工具包幫了咱們很大忙。
因爲咱們的CDH測試環境是5.4版本,要求jdk必須是1.7以上版本,因此是基於jdk 1.7開發的。
開發階段和生產階段所採用的部署服務器是tomcat 7.0,其餘的服務器譬如jboss、weblogic等暫時沒有測試過,若是您有興趣,能夠測試部署下。
系統能夠在IE、谷歌、火狐等瀏覽器中運行,其中要求IE必須是8.0以上版本。
本系統的數據庫採用的是MySQL,鏈接信息配置在jdbc.properties文件中,詳細配置以下表所示:
選項 |
描述 |
driverClass |
com.mysql.jdbc.Driver |
jdbcUrl |
鏈接字符串 |
user |
用戶名稱 |
password |
登陸密碼 |
系統配置信息存放在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) |
因爲本系統涉及到的功能較多,因此係統發佈工做將分階段進行。第一階段將發佈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版本,包含數據計算平臺功能。
咱們將系統所涉及到的全部資料都打包成一個rar文件,名稱爲「mdsm-v1.0.1-20170216.rar」,其中「mdsm」爲系統名稱,「v1.0.1」爲系統版本號,「20170216」爲發佈日期。裏面包含4個文件,以下圖所示:
文件 |
描述 |
mdsm |
編譯後的web項目。 |
mdsm.psc |
備份後的mysql數據庫,包含全部的表和數據。咱們採用navicat for Mysql進行還原操做: 首先建立mdsm數據庫,以下圖所示: 而後在「備份」面板中點擊「還原備份」按鈕,選擇本地的mdsm.psc文件,進行還原操做,以下圖所示: |
mdsm.pdf |
設計文檔和用戶手冊。 |
readme.txt |
系統發佈說明文件。 |
|
【未完待續】