一種大數(shù)據(jù)抽取和交換系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及一種大數(shù)據(jù)抽取與交換的方法與系統(tǒng),通過一個部署于Spark平臺的控制與交換中心結合若干交換代理,支持關系數(shù)據(jù)庫、非結構化文檔、傳感器數(shù)據(jù)庫與Hadoop平臺HiVe、HBaSe、HDFS系統(tǒng)之間數(shù)據(jù)雙向流轉,通過采用并行任務調度和采用內(nèi)存來存儲所有中間數(shù)據(jù),實現(xiàn)高效的數(shù)據(jù)交換。
【背景技術】
[0002]隨著企業(yè)數(shù)據(jù)量的不斷增加,計算機需要處理的數(shù)據(jù)已經(jīng)從MB級別達到TB級別,甚至PB級別,單個服務器已無法對企業(yè)所有數(shù)據(jù)進行存儲與分析,需要將數(shù)據(jù)抽取匯總到大數(shù)據(jù)平臺進行分析處理。企業(yè)遺留系統(tǒng)通常包含各種類型的數(shù)據(jù),包含存儲于關系數(shù)據(jù)庫系統(tǒng)的業(yè)務數(shù)據(jù),存儲為文件形式的各種文檔資料與日志文件,也包含來自大量傳感器的實時監(jiān)測數(shù)據(jù)等。如何對這些數(shù)據(jù)都高效、實時的進行采集是大數(shù)據(jù)項目成功的第一步。
[0003]Hadoop平臺目前是最常用的大數(shù)據(jù)平臺軟件,Hadoop實現(xiàn)了 MapReduce程序的運行環(huán)境,支持任務的分布式執(zhí)行。HDFS是一個分布式文件系統(tǒng),該文件系統(tǒng)數(shù)據(jù)會存儲與多個副本,因此具有很高的容錯性。但是HDFS不允許對文件內(nèi)容進行修改,只能對文件內(nèi)容進行追加。Hive是一個數(shù)據(jù)倉庫系統(tǒng),數(shù)據(jù)以非結構化文本格式存儲與HDFS中,上層提供類似SQL的查詢接口,并提供翻譯引擎將查詢語句自動翻譯為MapReduce程序來進行執(zhí)行。因為數(shù)據(jù)存儲于HDFS,Hive中數(shù)據(jù)也只能讀取不能修改。HBase為一種列式存儲數(shù)據(jù)庫,數(shù)據(jù)采用主鍵來進行存取,不支持SQL查詢,但具有很高的吞吐量,HBase支持數(shù)據(jù)修改。
[0004]目前已經(jīng)存在一些單一類型的大數(shù)據(jù)采集系統(tǒng),比如Hadoop生態(tài)系統(tǒng)的Sqoop系統(tǒng),支持從關系數(shù)據(jù)庫進行并行的數(shù)據(jù)抽取,目前已經(jīng)支持0racle、SQL Server、MySql等各種主流數(shù)據(jù)庫,并且支持通過MapReduce來并行的執(zhí)行抽取任務。比如分布式消息采集系統(tǒng)kafka,是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費者規(guī)模的網(wǎng)站中的所有動作流數(shù)據(jù)。這種動作(網(wǎng)頁瀏覽,搜索和其他用戶的行動)是在現(xiàn)代網(wǎng)絡上的許多社會功能的一個關鍵因素。這些數(shù)據(jù)通常是由于吞吐量的要求而通過處理日志和日志聚合來解決。還比如Nutch這種分布式的爬蟲系統(tǒng),可以從互聯(lián)網(wǎng)并行抓取數(shù)據(jù)并存儲于Hadoop文件系統(tǒng)中。
[0005]關系數(shù)據(jù)庫之間相互轉化的工具已經(jīng)廣泛應用與企業(yè),包含Oracle、SQL Server也都提供了數(shù)據(jù)導入導出其他數(shù)據(jù)庫的工具。Informatica和IBM也有相關產(chǎn)品,支持關系數(shù)據(jù)庫、XML等結構化半結構化數(shù)據(jù)的轉換。但是目前還沒有專門的系統(tǒng)來支持大數(shù)據(jù)平臺中系統(tǒng)與傳統(tǒng)關系數(shù)據(jù)庫等進行方便的交換。因為大數(shù)據(jù)系統(tǒng)數(shù)量眾多,還在不斷增加,僅NoSQL數(shù)據(jù)庫就有幾十種,如何提供良好的系統(tǒng)架構來將這些數(shù)據(jù)庫接入到交換系統(tǒng),是具有挑戰(zhàn)的問題。
[0006]目前這些大數(shù)據(jù)采集系統(tǒng)互相獨立存在,而且Hadoop的加載機制單一,比如從關系數(shù)據(jù)庫抽取的數(shù)據(jù)只能加載到Hive中,而不能加載到HBase中來實現(xiàn)一些快速的查詢服務。另外在加載到Hadoop中以后,也不存在一種方法支持數(shù)據(jù)在Hadoop不同子系統(tǒng)進行流動。比如Hive中的數(shù)據(jù)需要進行大量數(shù)據(jù)清理,而Hive本身又不支持數(shù)據(jù)的修改,這時就需要將數(shù)據(jù)轉移到HBase中來進行處理。
【發(fā)明內(nèi)容】
[0007]有鑒于現(xiàn)有技術的上述缺陷,本發(fā)明所要解決的技術問題是提供一種大數(shù)據(jù)抽取與交換的系統(tǒng),支持關系數(shù)據(jù)庫、非結構化文檔、傳感器數(shù)據(jù)庫與Hadoop平臺Hive、HBaSe、HDFS系統(tǒng)之間數(shù)據(jù)雙向流轉,通過采用并行任務調度和采用內(nèi)存來存儲所有中間數(shù)據(jù),實現(xiàn)高效的數(shù)據(jù)交換。
[0008]為實現(xiàn)上述目的,本發(fā)明提供了一種大數(shù)據(jù)抽取和交換系統(tǒng),包括部署于Spark平臺的控制交換中心,通過Yarn資源管理框架將Spark平臺和Hadoop平臺部署于同一個集群;控制交換中心內(nèi)存對象存儲與Spark中,所有中間數(shù)據(jù)與不同類型數(shù)據(jù)模型轉換任務也由Spark執(zhí)行;
[0009]包括都分散在不同的服務器中的關系數(shù)據(jù)庫系統(tǒng)、非結構化文檔、傳感器數(shù)據(jù);
[0010]包括一個獨立的集群部署Hadoop大數(shù)據(jù)平臺,所述Hadoop大數(shù)據(jù)平臺包含HDFS、HBase, Hive子系統(tǒng),用于加載抽取的數(shù)據(jù),并提供分析功能;
[0011]包括部署于不同數(shù)據(jù)源系統(tǒng)之上或者控制交換中心的交換代理;用于通過遠程接口來和數(shù)據(jù)源進行交互;
[0012]包括交換代理與交互控制中心之間的控制消息通道與數(shù)據(jù)通道;
[0013]所述控制交換中心包含任務調度模塊、內(nèi)存對象管理模塊、數(shù)據(jù)轉換模塊;
[0014]所述任務調度模塊用于調度交換代理數(shù)據(jù)抽取、數(shù)據(jù)加載任務,數(shù)據(jù)模型轉換任務,數(shù)據(jù)傳輸任務;
[0015]所述內(nèi)存對象管理模塊用于管理中間數(shù)據(jù)的存儲與更新;
[0016]所述數(shù)據(jù)轉換模塊用于不同數(shù)據(jù)模型與統(tǒng)一內(nèi)存對象之間的轉換;
[0017]所述控制交換中心用于通知數(shù)據(jù)源的交換代理進行數(shù)據(jù)抽取,并將數(shù)據(jù)傳輸?shù)娇刂平粨Q中心;所述控制交換中心用于進行源數(shù)據(jù)模型到內(nèi)存對象模型的轉換;
[0018]所述控制交換中心還用于任務的統(tǒng)一調度:
[0019]a)對于控制交換中心的數(shù)據(jù)轉換任務,采用Spark提供的編程語言開發(fā);
[0020]b)根據(jù)需求或根據(jù)資源利用率導向調度任務執(zhí)行的順序;
[0021]當內(nèi)存空間不足,無法存儲新到數(shù)據(jù),控制交換中心根據(jù)調度策略通知交換代理,暫停數(shù)據(jù)抽取任務,等內(nèi)存空間滿足需要時,繼續(xù)執(zhí)行數(shù)據(jù)抽取任務。
[0022]較佳的,當系統(tǒng)出現(xiàn)故障時,控制交換中心在進行每一個操作前記錄日志,故障后重啟系統(tǒng),恢復失效前的狀態(tài),然后重新抽取所有丟失的數(shù)據(jù),重構內(nèi)存空間。
[0023]較佳的,控制與交換中心采用統(tǒng)一的內(nèi)存對象模型來存儲數(shù)據(jù)交換的中間數(shù)據(jù),每一種數(shù)據(jù)源的數(shù)據(jù)通過交換代理實現(xiàn)數(shù)據(jù)模型與內(nèi)存對象模型的映射轉換;統(tǒng)一的內(nèi)存對象模型采用Spark RDD格式來存儲數(shù)據(jù);數(shù)據(jù)在內(nèi)存中中轉,不寫入磁盤。
[0024]較佳的,所述控制交換中心通過隊列管理等待的任務。
[0025]本發(fā)明的有益效果是:本發(fā)明支持遺留系統(tǒng)不同類型數(shù)據(jù)與大數(shù)據(jù)平臺中不同類型系統(tǒng)進行數(shù)據(jù)交換,也支持大數(shù)據(jù)平臺中不同系統(tǒng)之間進行數(shù)據(jù)交換,可以滿足不同處理需求。所有交換任務統(tǒng)一進行調度控制,可以提高數(shù)據(jù)交換的效率。
【附圖說明】
[0026]圖1是本發(fā)明一【具體實施方式】的結構示意圖。
[0027]圖2是關系數(shù)據(jù)庫到Hive系統(tǒng)交換實例圖。
[0028]圖3是傳感器數(shù)據(jù)庫到HBase系統(tǒng)交換實例圖。
[0029]圖4是文件系統(tǒng)到HDFS交換實例圖。
【具體實施方式】
[0030]下面結合附圖和實施例對本發(fā)明作進一步說明:一種大數(shù)據(jù)抽取和交換系統(tǒng),包括部署于Spark平臺的控制交換中心,通過Yarn資源管理框架將Spark平臺和Hadoop平臺部署于同一個集群;控制交換中心內(nèi)存對象存儲與Spark中,所有中間數(shù)據(jù)與不同類型數(shù)據(jù)模型轉換任務也由Spark執(zhí)行;
[0031]包括都分散在不同的服務器中的關系數(shù)據(jù)庫系統(tǒng)、非結構化文檔、傳感器數(shù)據(jù);通過交換代理來實現(xiàn)數(shù)據(jù)的抽取與加載。
[0032]包括一個獨立的集群部署Hadoop大數(shù)據(jù)平臺,所述Hadoop大數(shù)據(jù)平臺包含HDFS、HBase, Hive子系統(tǒng),用于加載抽取的數(shù)據(jù),并提供分析功能;
[0033]包括部署于不同數(shù)據(jù)源系統(tǒng)之上或者控制交換中心的交換代理;用于通過遠程接口來和數(shù)據(jù)源進行交互;
[0034]包括交換代理與交互控制中心之間的控制消息通道與數(shù)據(jù)通道;
[0035]所述控制交換中心包含任務調度模塊、內(nèi)存對象管理模塊、數(shù)據(jù)轉換模塊;
[0036]所述任務調度模塊用于調度交換代理數(shù)據(jù)抽取、數(shù)據(jù)加載任務,數(shù)據(jù)模型轉換任務,數(shù)據(jù)傳輸任務;
[0037]所述內(nèi)存對象管理模塊用于管理中間數(shù)據(jù)的存儲與更新;一個數(shù)據(jù)如果已經(jīng)完成向目標數(shù)據(jù)模型的轉換,就可以刪除原始數(shù)據(jù)對象,盡快回收內(nèi)存空間。
[0038]所述數(shù)據(jù)轉換模塊用于不同數(shù)據(jù)模型與統(tǒng)一內(nèi)存對象之間的轉換;
[0039]所述控制交換中心用于通知數(shù)據(jù)源的交換代理進行數(shù)據(jù)抽取,并將數(shù)據(jù)傳輸?shù)娇刂平粨Q中心;所述控制交換中心用于進行源數(shù)據(jù)模型到內(nèi)存對象模型的轉換;
[0040]所述控制交換中心還用于任務的統(tǒng)一調度:
[0041]a)對于控制交換中心的數(shù)據(jù)轉換任務,采用Spark提供的編程語言開發(fā),任務的執(zhí)行利用分布式內(nèi)存;
[0042]b)根據(jù)需求或根據(jù)資源利用率導