Loader簡介
- Loader介紹
Loader是在開源Sqoop組件的基礎上進行了一些擴展,實現(xiàn)MRS與關系型數(shù)據(jù)庫、文件系統(tǒng)之間交換“數(shù)據(jù)”、“文件”,同時也可以將數(shù)據(jù)從關系型數(shù)據(jù)庫或者文件服務器導入到HDFS/HBase中,或者反過來從HDFS/HBase導出到關系型數(shù)據(jù)庫或者文件服務器中。
- Loader模型
Loader模型主要由Loader Client和Loader Server組成,如圖所示,各部分功能介紹如下:
Loader Client:
Loader的客戶端,包括WebUI和CLI版本兩種交互界面。
Loader Server:
Loader的服務端,主要功能包括:處理客戶端操作請求、管理連接器和元數(shù)據(jù)、提交MapReduce作業(yè)和監(jiān)控MapReduce作業(yè)狀態(tài)等。
REST API:
實現(xiàn)RESTful(HTTP + JSON)接口,處理來自客戶端的操作請求。
Job Scheduler:
簡單的作業(yè)調度模塊,支持周期性的執(zhí)行Loader作業(yè)。
Transform Engine:
數(shù)據(jù)轉換處理引擎,支持字段合并、字符串剪切、字符串反序等。
Execution Engine:
Loader作業(yè)執(zhí)行引擎,支持以MapReduce方式執(zhí)行Loader作業(yè)。
Submission Engine:
Loader作業(yè)提交引擎,支持將作業(yè)提交給MapReduce執(zhí)行。
Job Manager:
管理Loader作業(yè),包括創(chuàng)建作業(yè)、查詢作業(yè)、更新作業(yè)、刪除作業(yè)、激活作業(yè)、去激活作業(yè)、啟動作業(yè)、停止作業(yè)。
Metadata Repository:
元數(shù)據(jù)倉庫,存儲和管理Loader的連接器、轉換步驟、作業(yè)等數(shù)據(jù)。
HA Manager:
管理Loader Server進程的主備狀態(tài),Loader Server包含2個節(jié)點,以主備方式部署。
Loader通過MapReduce作業(yè)導入\導出作業(yè)
數(shù)據(jù)導入到HBase
在MapReduce作業(yè)的Map階段中從外部數(shù)據(jù)源抽取數(shù)據(jù)。
在MapReduce作業(yè)的Reduce階段中,按Region的個數(shù)啟動同樣個數(shù)的Reduce Task,Reduce Task從Map接收數(shù)據(jù),然后按Region生成HFile,存放在HDFS臨時目錄中。
在MapReduce作業(yè)的提交階段,將HFile從臨時目錄遷移到HBase目錄中。
數(shù)據(jù)導入HDFS
在MapReduce作業(yè)的Map階段中從外部數(shù)據(jù)源抽取數(shù)據(jù),并將數(shù)據(jù)輸出到HDFS臨時目錄下(以“輸出目錄-ldtmp”命名)。
在MapReduce作業(yè)的提交階段,將文件從臨時目錄遷移到輸出目錄中。
數(shù)據(jù)導出到關系型數(shù)據(jù)庫
在MapReduce作業(yè)的Map階段,從HDFS或者HBase中抽取數(shù)據(jù),然后將數(shù)據(jù)通過JDBC接口插入到臨時表(Staging Table)中。
在MapReduce作業(yè)的提交階段,將數(shù)據(jù)從臨時表遷移到正式表中。
數(shù)據(jù)導出到文件系統(tǒng)
在MapReduce作業(yè)的Map階段,從HDFS或者HBase中抽取數(shù)據(jù),然后將數(shù)據(jù)寫入到文件服務器臨時目錄中。
在MapReduce作業(yè)的提交階段,將文件從臨時目錄遷移到正式目錄。
Loader開源增強特性
Loader是在開源Sqoop組件的基礎上進行了一些擴展,除了包含Sqoop開源組件本身已有的功能外,還開發(fā)了如下的增強特性:
- 提供數(shù)據(jù)轉化功能
- 支持圖形化配置轉換步驟
- 支持從SFTP/FTP服務器導入數(shù)據(jù)到HDFS/OBS、HBase表、Phoenix表、Hive表
- 支持從HDFS/OBS、HBase表、Phoenix表導出數(shù)據(jù)到SFTP服務器
- 支持從關系型數(shù)據(jù)庫導入數(shù)據(jù)到HBase表、Phoenix表、Hive表
- 支持從HBase表、Phoenix表導出數(shù)據(jù)到關系型數(shù)據(jù)庫
- 支持從Oracle分區(qū)表導入數(shù)據(jù)到HDFS/OBS、HBase表、Phoenix表、Hive表
- 支持從HDFS/OBS、HBase表、Phoenix表導出數(shù)據(jù)到Oracle分區(qū)表
- 在同一個集群內,支持從HDFS導數(shù)據(jù)到HBase、Phoenix表和Hive表
- 在同一個集群內,支持從HBase和Phoenix表導數(shù)據(jù)到HDFS/OBS
- 導入數(shù)據(jù)到HBase和Phoenix表時支持使用bulkload和put list兩種方式
- 支持從SFTP/FTP導入所有類型的文件到HDFS,開源只支持導入文本文件
- 支持從HDFS/OBS導出所有類型的文件到SFTP,開源只支持導出文本文件和sequence格式文件
- 導入(導出)文件時,支持對文件進行轉換編碼格式,支持的編碼格式為jdk支持的所有格式
- 導入(導出)文件時,支持保持原來文件的目錄結構和文件名不變
- 導入(導出)文件時,支持對文件進行合并,如輸入文件為海量個文件,可以合并為n個文件(n值可配)
- 導入(導出)文件時,可以對文件進行過濾,過濾規(guī)則同時支持通配符和正則表達式
- 支持批量導入/導出ETL任務
- 支持ETL任務分頁查詢、關鍵字查詢和分組管理
- 對外部組件提供浮動IP