如何克服云端數據倉庫數據遷移問題?
云計算和數據倉庫是合理的一對。云存儲可以按需擴展,云可以將大量服務器貢獻于某一具體任務。數據倉庫通用功能是本地數據分析工具,受到計算和存儲資源的限制,同時也受到設計者考慮新數據源集成的能力的限制。如果我們可以克服一些數據遷移的挑戰(zhàn),將一個數據倉庫以及其數據分析工具從數據中心中的專用服務器轉移到基于云的文件系統(tǒng)和數據庫就可以解決這個問題。
云端數據管理通常牽扯到在分布式文件系統(tǒng)中加載和維護文件,像Hadoop分布式文件系統(tǒng)(HDFS),隨后用類似MapReduce這樣的工具處理數據。對于數據倉庫和其他的分析人物,像Hive這樣的數據庫工具在分布式文件系統(tǒng)之上提供了類SQL的功能。
盡管傳統(tǒng)關系型數據庫管理系統(tǒng)和云端非關系型數據庫之間可以并行描述,但是在兩個片段之間轉移數據時,不同的運行方式會導致問題。抽取、轉換和加載流程甚至會造成更多挑戰(zhàn)。
數據遷移工具輔助向云端遷移
從數據庫抽取數據很容易,從數據庫中有效挖掘大容量數據確是一項挑戰(zhàn)。如果由于數據量的增長,數據倉庫面臨性能或者存儲問題,可能就是時候考慮使用運資源了。下面提供了一些工具來協(xié)助從關系型數據庫加載數據到云文件系統(tǒng)和數據庫。
專業(yè)工具,像Sqoop(SQL-to-Hadoop)生成代碼從關系型數據庫抽取數據,并將其拷貝到HDFS或者Hive。Sqoop使用JDBC驅動,同多種類型的關系型數據庫工作,但是通過JDBC推出大量數據導致了性能成本。
為了遷移到云端,從關系型數據庫抽取數據時,你可能需要進行數據轉換。如果你所工作的所有數據來自于單一數據庫,就可以在源數據庫中進行轉換。如果從兩個分離的系統(tǒng)合并數據,在抽取之后再轉移數據源更有效。然而,你應該在加載數據到最終數據存儲庫之前做這些。Cascading數據處理API可以協(xié)助這項任務的進行。
Cascading提供了運行在Hadoop之上的功能,像工作流處理、計劃和調度。就比如說,它同管道過濾器工作;數據應用過濾器通過管道從一個源流到目的源。其他功能像grouping可以應用于數據流。Cascading用Java實現,在MapReduce工作中調用轉換API。
如果你正在同MySQL共事,Sqoop介意使用MySQL轉儲功能繞離JDBC并更加有效地抽取數據。Sqoop也可以生成Java類,這個類可以用于操縱加載數據并將其直接導入Hive。HIHO (Hadoop Input and Output)從關系型表抽取數據并提供一些基本的轉換服務,像去重以及合并輸入流。
當生成文件在將其加載到HDFS文件系統(tǒng)或者Hive數據倉庫之前,要求最小化轉換,你就能直接加載文件了。在確定目標表和分割規(guī)格后,Hive有一個命令來加載數據。Pig是數據分析程序的一種高水平語言,尤其是和Java中的MapReduce編碼對比的時候。它提供了一種基本的統(tǒng)計函數,你可以在關系型數據庫中找到(像min、max、count),在數學和字符串處理功能中也能找到。Pig支持架構化和非結構化文本文件的壓縮。
云計算資源補充了數據倉庫基礎架構。然而,為將數據倉庫轉移到云端的利益***化,適當結構化數據并使用正確的數據分析工具很重要。