Loader是在開源Sqoop組件的基礎(chǔ)上進(jìn)行了一些擴(kuò)展,實(shí)現(xiàn)MRS與關(guān)系型 數(shù)據(jù)庫 、文件系統(tǒng)之間交換“數(shù)據(jù)”、“文件”,同時(shí)也可以將數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫或者文件服務(wù)器導(dǎo)入到MRS的HDFS/HBase中,或者反過來從HDFS/HBase導(dǎo)出到關(guān)系型數(shù)據(jù)庫或者文件服務(wù)器中。
Loader模型主要由Loader Client和Loader Server組成,如圖1所示。
圖1 Loader模型
Loader通過MapReduce作業(yè)實(shí)現(xiàn)并行的導(dǎo)入或者導(dǎo)出作業(yè)任務(wù),不同類型的導(dǎo)入導(dǎo)出作業(yè)可能只包含Map階段或者同時(shí)Map和Reduce階段。
Loader同時(shí)利用MapReduce實(shí)現(xiàn)容錯(cuò),在作業(yè)任務(wù)執(zhí)行失敗時(shí),可以重新調(diào)度。
數(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ù)庫
在MapReduce作業(yè)的Map階段,從HDFS或者HBase中抽取數(shù)據(jù),然后將數(shù)據(jù)通過JDBC接口插入到臨時(shí)表(Staging Table)中。
在MapReduce作業(yè)的提交階段,將數(shù)據(jù)從臨時(shí)表遷移到正式表中。
數(shù)據(jù)導(dǎo)出到文件系統(tǒng)
在MapReduce作業(yè)的Map階段,從HDFS或者HBase中抽取數(shù)據(jù),然后將數(shù)據(jù)寫入到文件服務(wù)器臨時(shí)目錄中。
在MapReduce作業(yè)的提交階段,將文件從臨時(shí)目錄遷移到正式目錄。