中文字幕无码日韩视频无码三区

一種數據遷移方法和裝置的制造方法

文檔序號:9929569閱讀:374來(lai)源:國知局(ju)
一種數據遷移方法和裝置的制造方法
【技術領域】
[0001 ]本公開涉及計算機技術,特別涉及一種數據迀移方法和裝置。
【背景技術】
[0002]Hadoop是一個能夠對大量數據進行分布式處理的軟件框架,是一個能夠讓用戶輕松架構和使用的分布式計算平臺,用戶可以輕松地在Hadoop上開發和運行處理海量數據的應用程序,在大數據處理中得到廣泛應用。隨著大數據應用需求的不斷擴張,Hadoop也進行了一系列的版本變革以解決龐大的需求變更造成的技術瓶頸。不過,Hadoop各個版本之間通常是不互相兼容的,因此數據迀移就成為版本升級過程中必不可少的操作。例如,HIVE(hive是基于Hadoop的一個數據倉庫工具)和HDFS(Hadoop Distributed File System,Hadoop分布式文件系統)之間的數據迀移是經常遇到的一個場景。
[0003]在跨集群的HIVE與HDFS之間的數據迀移場景中,當前的數據迀移方式是,利用Hadoop自身的工具將一個Hadoop集群的數據導出到本地,然后再導入到另一個Hadoop集群的HDFS或者HIVE中。這種迀移方式中,用戶需要操作兩次才能實現最終的數據迀移,整個過程相當于進行了兩次完整的數據迀移,使得數據迀移的效率降低;并且,該方式需要將數據導出到本地,占用本地磁盤空間,磁盤I/O的操作相當耗時,也降低了迀移效率。

【發明內容】

[0004]有鑒于此,本公開提供一種數據迀移方法和裝置,以提高Hadoop跨集群的數據迀移的效率。
[0005]具體地,本公開是通過如下技術方案實現的:
[0006]第一方面,提供一種數據迀移方法,所述數據迀移方法通過數據迀移工具執行,所述方法包括:
[0007]通過第一類加載器加載第一集群的數據源,通過第二類加載器加載第二集群的數據源;所述第一類加載器和第二類加載器均繼承所述數據迀移工具的加載器;
[0008]在所述數據迀移工具中,第一線程通過所述第一類加載器讀取第一集群的數據源的數據,將所述數據放入數據隊列;
[0009]在所述數據迀移工具中,第二線程通過所述第二類加載器將所述數據隊列中的數據寫入第二集群的數據源。
[0010]第二方面,提供一種數據迀移裝置,包括:
[0011 ]加載器配置模塊,用于通過第一類加載器加載第一集群的數據源,通過第二類加載器加載第二集群的數據源;所述第一類加載器和第二類加載器均繼承所述數據迀移工具的加載器;
[0012]數據讀取模塊,用于在所述數據迀移工具中,第一線程通過所述第一類加載器讀取第一集群的數據源的數據,將所述數據放入數據隊列;
[0013]數據寫入模塊,用于在所述數據迀移工具中,第二線程通過所述第二類加載器將所述數據隊列中的數據寫入第二集群的數據源。
[0014]本公開實施例的數據迀移方法和裝置,通過第一類加載器和第二類加載器分別加載兩個集群的數據目錄,第一類加載器從第一集群數據目錄讀取的數據,可以被第二類加載器獲取并將數據寫入第二集群的數據目錄,從而通過該JVM就可以實現兩個集群之間的數據迀移,相對于兩次操作迀移數據的方式,提高了 Hadoop跨集群的數據迀移的效率。
【附圖說明】
[0015]圖1是本公開實施例提供的一種數據迀移方法的原理圖;
[0016]圖2是本公開實施例提供的一種數據迀移方法的流程圖;
[0017]圖3是本公開實施例提供的一種數據迀移的過程示意圖;
[0018]圖4是本公開實施例提供的另一種數據迀移的過程示意圖;
[0019]圖5是本公開實施例提供的又一種數據迀移的過程示意圖;
[0020]圖6是本公開實施例提供的一種數據迀移裝置的結構示意圖。
【具體實施方式】
[0021]為了克服當前的數據迀移中,由于采用兩個迀移工具操作兩次才能實現數據迀移導致的迀移效率低的問題,本申請實施例提供的數據迀移方法,將在一個數據迀移工具中實現數據迀移,以提高跨集群的數據迀移的效率。
[0022]圖1示例了本申請的數據迀移方法的原理,如圖1所示,假設第一集群11和第二集群12是兩個不同的Hadoop集群,例如,第一集群11可以是CDH5.2.0,第二集群12可以是Hadoop 2.6.0;或者,第一集群11是Hadoop I.χ,第二集群12是Hadoop 2.χ;或者,還可以第一集群11是HDP,第二集群12是Hadoop,等,不再詳舉,這些例子中,第一集群11和第二集群12的數據迀移即為跨集群的數據迀移。
[0023]跨集群的數據迀移的場景,可以是HIVE與HDFS之間的數據迀移,例如,將CDH5.2.0的HIVE中的數據迀移至Hadoop 2.6.0中的HDFS,或者,也可以是將Hadoop 2.6.0中的HDFS中的數據迀移至CDH 5.2.0的HIVE。即數據迀移可以是HIVE與HDFS之間任一方向的迀移。
[0024]請繼續參見圖1,本申請提供了一個數據迀移工具13,將在該數據迀移工具13中實現跨集群的數據迀移的過程。例如,該數據迀移工具13可以是JVM(Java Virtual Machine,Java虛擬機)。在該JVM中,可以根據類加載器的雙親委派機制,創建兩個類加載器,實現對兩個集群的數據操作。圖2示例了該數據迀移方法的流程:
[0025]在步驟201中,通過第一類加載器加載第一集群的數據源,通過第二類加載器加載第二集群的數據源;第一類加載器和第二類加載器均繼承數據迀移工具的加載器。
[0026]例如,可以先進行JVM的初始化,加載該JVM工具本身所需的Jar包。
[0027]本步驟中,可以創建兩個類加載器,結合圖1的示例,一個稱為第一類加載器14,另一個稱為第二類加載器15。
[0028]其中,第一類加載器14繼承當前JVM的加載器,例如,當第一集群11是⑶H5.2.0時,該第一類加載器14可以命名為⑶H 5.2.0Class Loader,用該第一類加載器14加載第一集群11的數據源,例如,加載CDH Lib所在的目錄,包括HIVE JDBC驅動Jar。
[0029]第二類加載器15同樣繼承JVM的加載器,例如,當第二集群12是Hadoop 2.6.0時,該第二類加載器15可以命名為Hadoop 2.6.0Class Loader,用該第二類加載器15加載第二集群12的數據源,例如,加載Hadoop Lib所在的目錄。上述的第一類加載器14和第二類加載器15繼承了相同的加載器,即為雙親委派機制。
[0030]在步驟202中,在數據迀移工具中,第一線程通過第一類加載器讀取第一集群的數據源的數據,將數據放入數據隊列。
[0031]例如,在JVM中可以創建一個新的線程,將該線程可以稱為第一線程。該第一線程用于從第一集群中讀取數據,可以將該第一線程的Context Class Loader設置為CDH5.2.0Class Loader,使得第一線程可以通過第一類加載器CDH 5.2.0Class Loader讀取第一集群中的數據。
[0032]本步驟中,第一線程讀取的數據可以放入數據隊列中,參見圖1所示,示例了其中的一個數據隊列16,第一線程讀取的數據放入該隊列中。
[0033]在步驟203中,在數據迀移工具中,第二線程通過第二類加載器將數據隊列中的數據寫入第二集群的數據源。
[0034]例如,在JVM中可以再創建一個新的線程,將該線程可以稱為第二線程。該第二線程用于向第二集群中寫入數據,可以將該第二線程的Context Class Loader設置為Hadoop2.6.0Class Loader。本步驟中,Hadoop 2.6.0Class Loader可以從數據隊列16中讀取出第一線程放入的數據,并將數據寫入第二集群。
[0035]在本例子的數據迀移方法中,通過第一類加載器和第二類加載器分別加載兩個集群的數據目錄,例如,Hadoop Lib所在的目錄,數據目錄相當于集群數據的存放位置,在本例子中也可以稱為數據源,第一類加載器從第一集群數據目錄讀取的數據,可以被第二類加載器獲取并將數據寫入第二集群的數據目錄,從而通過該JVM就可以實現兩個集群之間的數據迀移,相對于兩次操作迀移數據的方式,提高了數據迀移的效率。用戶只要提供兩個集群對應的版本號相應的LIB,即可通過上述的方案實現在一個進程中完成兩個集群的HIVE和HDFS之間的數據迀移,屏蔽了不同版本集群的實現差異,
[0036]此外,在步驟203中第二線程向第
當前第1頁1 2 3 
網友(you)詢問(wen)留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1