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

来源:http://www.cnblogs.com/shangbingbing/archive/2017/02/17/6410281.html
-Advertisement-
Play Games

最初的時候,我們只是想設計一個Web版本的HBase數據瀏覽器,類似於PL/SQL那樣便捷,後來又添加了HDFS分散式文件系統瀏覽器,再後來又添加了Hive數據倉庫瀏覽器功能。這個時候,hadoop集群由一個擴張到三個,大數據業務系統所涉及到的NoSQL資料庫也越來越多,譬如Neo4j、MongoD... ...


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

系統發佈說明文件。

 

【未完待續】


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這段時間項目要求做一個類似的鬧鐘提醒功能,對通知不太熟悉的我,決定先用到xcode自帶的本地通知試試,最終成功的實現了功能,特整理分享下。 它的表現特點: app關閉的時候也能接收和顯示通知。 app處於後臺的時候能接收通知也能顯示。 app處於前臺的時候能接收,但不能顯示,但是會走應用程式dele ...
  • 今天剛從GitHub上找了一個不錯的項目,想要把它導入自己的項目中,過程中也遇到了一些小問題,總結一下,以便複習回顧!!!! 1.首先將從GitHub上下載的壓縮包進行解壓,找到其中的項目文件,直接複製粘貼在自己要導入的項目的文件夾中!!!然後Build>Rebuild Project,重新構建項目 ...
  • 經過一番思想掙扎和鬥爭之後,最終還是選擇採用Xamarin來開發跨平臺移動應用,好處和優點大家可以搜索其它博文,因為家裡面窮加上談了戀愛,就不買蘋果了,開發階段在Windows上面直接搞定哈,時候不早了,廢話不多說,咱們擼起袖子開搞吧。 安裝前的準備工具 1、蘋果鏡像文件:http://pan.ba ...
  • 在開發的時候經常需要訪問網路,比如Android就有好多這方面的框架:Volley、OkHttp、Retrofit等,當你看這些框架源碼時,可能會很好奇關於http的部分,它的首部欄位是什麼意思,http是如何工作的??等等,希望這篇文章會為你解惑。 一、概念 協議是指電腦通信網路中兩台電腦之間 ...
  • 最近有一點個人的時間,嘗試一下自己翻譯一下英文的 Optimizing graphics rendering in Unity Games, 這兒附上英文鏈接: 個人英文水平有限,unity圖像學知識也是入門,希望通過這次翻譯能增進自己的圖形學知識,若有錯誤,歡迎各位大神指點,讓我也學習進步,謝謝。 ...
  • 由OpenDigg 出品的安卓開源項目周報第八期來啦。我們的安卓開源周報集合了OpenDigg一周來新收錄的優質的安卓開源項目,方便安卓開發人員便捷的找到自己需要的項目工具。chuck 攔截並維持所有HTTP請求和響應 Just-Another-Android-App 在安卓中實現的很酷的效果 Ba ...
  • 1、查詢指定時間區間的工作日 這個主要難點是法定節假日,國家的法定節假日每年都不一樣,還涉及到調休,所以我們設計一個假日表。主要欄位有年份,類型(是否調休),假期日期。如下: 添加好當年的假期和調休日期 寫個方法計算出除開法定假日的工作日 執行這個表值函數後加上調休日和減去法定假日就是工作日了,大家 ...
  • 1、處理超大量數據能力強 2、可以運行在便宜的PC伺服器集群上 4、對數據的高併發讀寫能力強(mysql在上萬數據的寫入對磁碟IO消耗很大) 5、對海量數據的高效存儲和訪問。 6、對數據的高可靠擴展性和高可用性 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...