Loader簡(jiǎn)介
- Loader介紹
Loader是在開(kāi)源Sqoop組件的基礎(chǔ)上進(jìn)行了一些擴(kuò)展,實(shí)現(xiàn)MRS與關(guān)系型數(shù)據(jù)庫(kù)、文件系統(tǒng)之間交換“數(shù)據(jù)”、“文件”,同時(shí)也可以將數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫(kù)或者文件服務(wù)器導(dǎo)入到HDFS/HBase中,或者反過(guò)來(lái)從HDFS/HBase導(dǎo)出到關(guān)系型數(shù)據(jù)庫(kù)或者文件服務(wù)器中。
- Loader模型
Loader模型主要由Loader Client和Loader Server組成,如圖所示,各部分功能介紹如下:
Loader Client:
Loader的客戶(hù)端,包括WebUI和CLI版本兩種交互界面。
Loader Server:
Loader的服務(wù)端,主要功能包括:處理客戶(hù)端操作請(qǐng)求、管理連接器和元數(shù)據(jù)、提交MapReduce作業(yè)和監(jiān)控MapReduce作業(yè)狀態(tài)等。
REST API:
實(shí)現(xiàn)RESTful(HTTP + JSON)接口,處理來(lái)自客戶(hù)端的操作請(qǐng)求。
Job Scheduler:
簡(jiǎn)單的作業(yè)調(diào)度模塊,支持周期性的執(zhí)行Loader作業(yè)。
Transform Engine:
數(shù)據(jù)轉(zhuǎn)換處理引擎,支持字段合并、字符串剪切、字符串反序等。
Execution Engine:
Loader作業(yè)執(zhí)行引擎,支持以MapReduce方式執(zhí)行Loader作業(yè)。
Submission Engine:
Loader作業(yè)提交引擎,支持將作業(yè)提交給MapReduce執(zhí)行。
Job Manager:
管理Loader作業(yè),包括創(chuàng)建作業(yè)、查詢(xún)作業(yè)、更新作業(yè)、刪除作業(yè)、激活作業(yè)、去激活作業(yè)、啟動(dòng)作業(yè)、停止作業(yè)。
Metadata Repository:
元數(shù)據(jù)倉(cāng)庫(kù),存儲(chǔ)和管理Loader的連接器、轉(zhuǎn)換步驟、作業(yè)等數(shù)據(jù)。
HA Manager:
管理Loader Server進(jìn)程的主備狀態(tài),Loader Server包含2個(gè)節(jié)點(diǎn),以主備方式部署。

Loader通過(guò)MapReduce作業(yè)導(dǎo)入\導(dǎo)出作業(yè)
數(shù)據(jù)導(dǎo)入到HBase
在MapReduce作業(yè)的Map階段中從外部數(shù)據(jù)源抽取數(shù)據(jù)。
在MapReduce作業(yè)的Reduce階段中,按Region的個(gè)數(shù)啟動(dòng)同樣個(gè)數(shù)的Reduce Task,Reduce Task從Map接收數(shù)據(jù),然后按Region生成HFile,存放在HDFS臨時(shí)目錄中。
在MapReduce作業(yè)的提交階段,將HFile從臨時(shí)目錄遷移到HBase目錄中。
數(shù)據(jù)導(dǎo)入HDFS
在MapReduce作業(yè)的Map階段中從外部數(shù)據(jù)源抽取數(shù)據(jù),并將數(shù)據(jù)輸出到HDFS臨時(shí)目錄下(以“輸出目錄-ldtmp”命名)。
在MapReduce作業(yè)的提交階段,將文件從臨時(shí)目錄遷移到輸出目錄中。
數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫(kù)
在MapReduce作業(yè)的Map階段,從HDFS或者HBase中抽取數(shù)據(jù),然后將數(shù)據(jù)通過(guò)JDBC接口插入到臨時(shí)表(Staging Table)中。
在MapReduce作業(yè)的提交階段,將數(shù)據(jù)從臨時(shí)表遷移到正式表中。
數(shù)據(jù)導(dǎo)出到文件系統(tǒng)
在MapReduce作業(yè)的Map階段,從HDFS或者HBase中抽取數(shù)據(jù),然后將數(shù)據(jù)寫(xiě)入到文件服務(wù)器臨時(shí)目錄中。
在MapReduce作業(yè)的提交階段,將文件從臨時(shí)目錄遷移到正式目錄。
Loader開(kāi)源增強(qiáng)特性
Loader是在開(kāi)源Sqoop組件的基礎(chǔ)上進(jìn)行了一些擴(kuò)展,除了包含Sqoop開(kāi)源組件本身已有的功能外,還開(kāi)發(fā)了如下的增強(qiáng)特性:
- 提供數(shù)據(jù)轉(zhuǎn)化功能
- 支持圖形化配置轉(zhuǎn)換步驟
- 支持從SFTP/FTP服務(wù)器導(dǎo)入數(shù)據(jù)到HDFS/OBS、HBase表、Phoenix表、Hive表
- 支持從HDFS/OBS、HBase表、Phoenix表導(dǎo)出數(shù)據(jù)到SFTP服務(wù)器
- 支持從關(guān)系型數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)到HBase表、Phoenix表、Hive表
- 支持從HBase表、Phoenix表導(dǎo)出數(shù)據(jù)到關(guān)系型數(shù)據(jù)庫(kù)
- 支持從Oracle分區(qū)表導(dǎo)入數(shù)據(jù)到HDFS/OBS、HBase表、Phoenix表、Hive表
- 支持從HDFS/OBS、HBase表、Phoenix表導(dǎo)出數(shù)據(jù)到Oracle分區(qū)表
- 在同一個(gè)集群內(nèi),支持從HDFS導(dǎo)數(shù)據(jù)到HBase、Phoenix表和Hive表
- 在同一個(gè)集群內(nèi),支持從HBase和Phoenix表導(dǎo)數(shù)據(jù)到HDFS/OBS
- 導(dǎo)入數(shù)據(jù)到HBase和Phoenix表時(shí)支持使用bulkload和put list兩種方式
- 支持從SFTP/FTP導(dǎo)入所有類(lèi)型的文件到HDFS,開(kāi)源只支持導(dǎo)入文本文件
- 支持從HDFS/OBS導(dǎo)出所有類(lèi)型的文件到SFTP,開(kāi)源只支持導(dǎo)出文本文件和sequence格式文件
- 導(dǎo)入(導(dǎo)出)文件時(shí),支持對(duì)文件進(jìn)行轉(zhuǎn)換編碼格式,支持的編碼格式為jdk支持的所有格式
- 導(dǎo)入(導(dǎo)出)文件時(shí),支持保持原來(lái)文件的目錄結(jié)構(gòu)和文件名不變
- 導(dǎo)入(導(dǎo)出)文件時(shí),支持對(duì)文件進(jìn)行合并,如輸入文件為海量個(gè)文件,可以合并為n個(gè)文件(n值可配)
- 導(dǎo)入(導(dǎo)出)文件時(shí),可以對(duì)文件進(jìn)行過(guò)濾,過(guò)濾規(guī)則同時(shí)支持通配符和正則表達(dá)式
- 支持批量導(dǎo)入/導(dǎo)出ETL任務(wù)
- 支持ETL任務(wù)分頁(yè)查詢(xún)、關(guān)鍵字查詢(xún)和分組管理
- 對(duì)外部組件提供浮動(dòng)IP