首頁技術(shù)文章正文

sqoop的工作原理介紹

更新時間:2022-01-05 來源:黑馬程序員 瀏覽量:

Sqoop是Apache旗下的一款開源工具,該項目開始于2009年,最早是作為Hadoop的一個第三方模塊存在,后來為了讓使用者能夠快速部署,也為了讓開發(fā)人員能夠更快速的迭代開發(fā),并在2013年,獨立成為Apache的一個頂級開源項目。

Sqoop主要用于在Hadoop和關(guān)系數(shù)據(jù)庫或大型機之間傳輸數(shù)據(jù),可以使用Sqoop工具將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫管理系統(tǒng)導(dǎo)入(import)到Hadoop分布式文件系統(tǒng)中,或者將Hadoop中的數(shù)據(jù)轉(zhuǎn)換導(dǎo)出(export)到關(guān)系數(shù)據(jù)庫管理系統(tǒng),其功能如下圖所示。

Sqoop的功能

目前Sqoop主要分為Sqoop1和Sqoop2兩個版本,其中,版本號為1.4.x屬于Sqoop1,而版本號為1.99.x的屬于Sqoop2。這兩個版本開發(fā)時的定位方向不同,體系結(jié)構(gòu)具有很大的差異,因此它們之間互不兼容。

Sqoop1功能結(jié)構(gòu)簡單,部署方便,提供命令行操作方式,主要適用于系統(tǒng)服務(wù)管理人員進(jìn)行簡單的數(shù)據(jù)遷移操作;Sqoop2功能完善、操作簡便,同時支持多種訪問模式(命令行操作、Web訪問、Rest API),引入角色安全機制增加安全性等多種優(yōu)點,但是結(jié)構(gòu)復(fù)雜,配置部署更加繁瑣。

Sqoop原理

Sooop是傳統(tǒng)關(guān)系數(shù)據(jù)庫服務(wù)器與Hadoop間進(jìn)行數(shù)據(jù)同步的工具,其底層利用MapReduce并行計算模型以批處理方式加快了數(shù)據(jù)傳輸速度,并且具有較好的容錯性功能,工作流程如下圖所示。

Sqoop工作原理
Sqoop工作流程

從上圖中可以看出,通過客戶端CLI(命令行界面)方式或Java API方式調(diào)用Sqoop工具,Sqoop可以將指令轉(zhuǎn)換為對應(yīng)的MapReduce作業(yè)(通常只涉及Map任務(wù),每個Map任務(wù)從數(shù)據(jù)庫中讀取一片數(shù)據(jù),這樣多個Map任務(wù)實現(xiàn)并發(fā)地復(fù)制,可以快速地將整個數(shù)據(jù)復(fù)制到HDFS上),然后將關(guān)系數(shù)據(jù)庫和Hadoop中的數(shù)據(jù)進(jìn)行相互轉(zhuǎn)換,從而完成數(shù)據(jù)的遷移。

可以說,Sqoop是關(guān)系數(shù)據(jù)庫與Hadoop 之間的數(shù)據(jù)橋梁,這個橋梁的重要組件是Sgoop連接器,它用于實現(xiàn)與各種關(guān)系數(shù)據(jù)庫的連接,從而實現(xiàn)數(shù)據(jù)的導(dǎo)人和導(dǎo)出操作。

Sqoop連接器能夠支持大多數(shù)常用的關(guān)系數(shù)據(jù)庫,如MySQL、Oracle、DB2和SQL Server等,同時它還有一個通用的JDBC連接器,用于連接支持JDBC協(xié)議的數(shù)據(jù)庫。


1.導(dǎo)入原理

在導(dǎo)人數(shù)據(jù)之前,Sqoop使用JDBC檢查導(dǎo)人的數(shù)據(jù)表,檢索出表中的所有列以及列的SQL數(shù)據(jù)類型,并將這些SQL類型映射為Java數(shù)據(jù)類型,在轉(zhuǎn)換后的MapReduce應(yīng)用中使用這些對應(yīng)的Java類型來保存字段的值,Sqoop的代碼生成器使用這些信息來創(chuàng)建對應(yīng)表的類,用于保存從表中抽取的記錄。


2.導(dǎo)出原理

在導(dǎo)出數(shù)據(jù)之前,Sqoop會根據(jù)數(shù)據(jù)庫連接字符串來選擇一個導(dǎo)出方法,對于大部分系統(tǒng)來說,Sqoop會選擇JDBC。Sqoop會根據(jù)目標(biāo)表的定義生成一個Java類,這個生成的類能夠從文本中解析出記錄數(shù)據(jù),并能夠向表中插人類型合適的值,然后啟動一個MapReduce作業(yè),從HDFS中讀取源數(shù)據(jù)文件,使用生成的類解析出記錄,并且執(zhí)行選定的導(dǎo)出方法。



猜你喜歡:

Hadoop怎樣實現(xiàn)二次排序?

Hadoop有幾種運行模式?各種模式都有哪些特性?

Hadoop安裝步驟講解,安裝目錄的內(nèi)容和作用是什么?

怎樣在hadoop虛擬機上安裝和配置JDK?

黑馬程序員Python+大數(shù)據(jù)開發(fā)培訓(xùn)課程

分享到:
在線咨詢 我要報名
和我們在線交談!