1. 程式人生 > >大資料(hadoop-資料入庫系統Sqoop原理架構)

大資料(hadoop-資料入庫系統Sqoop原理架構)

Sqoop是什麼

Sqoop:SQL-to-Hadoop

連線傳統關係型資料庫和Hadoop的橋樑
   把關係型資料庫的資料匯入到 Hadoop 系統 ( 如 HDFS、HBase 和 Hive) 中;
   把資料從 Hadoop 系統裡抽取並匯出到關係型資料庫裡。

利用MapReduce

批處理方式進行資料傳輸

Sqoop優勢

高效、可控的利用資源
   任務並行度、超時時間等

資料型別對映與轉換
   可自動進行,使用者也可自定義

支援多種資料庫
   MySQL
   Oracle
   PostgreSQL

Sqoop1架構

Sqoop2架構

Sqoop import

將資料從關係型資料庫匯入Hadoop 中

步驟1 :Sqoop 與資料庫Server通訊,獲取資料庫表的元資料資訊;
步驟2 :Sqoop 啟動一個Map-
Only 的MR 作業,利用元資料資訊並行將資料寫入Hadoop 。

Sqoop import使用

sqoop import \
	--connect jdbc:mysql://mysql.example.com/sqoop \
	--username sqoop \
	--password sqoop \
	--table person
	--target-dir
 --connnect:  指定JDBC URL
 --username/password :mysql 資料庫的使用者名稱
 --table :要讀取的資料庫表

Sqoop Export

將資料從Hadoop 匯入關係型資料庫導中

步驟1 :
Sqoop 與資料庫Server通訊,獲取資料庫表的元資料資訊;

步驟2 :並行匯入資料:
  將Hadoop 上檔案劃分成若干個split ;
  每個split 由一個Map Task 進行資料匯入。

Sqoop Export使用方法

sqoop export \
   --connect jdbc:mysql://mysql.example.com/sqoop \
   --username sqoop \
   --password sqoop \
   --table cities \
   --export-dir cities
   --fields-terminated-by

 --connnect:  指定JDBC URL
 --username/password :mysql 資料庫的使用者名稱
 --table :要匯入的資料庫表
 export-dir :資料在HDFS 上存放目錄

Sqoop與其他系統結合

     Sqoop 可以與Oozie 、Hive 、Hbase 等系統結合;

     使用者需要在sqoop-env.sh 中增加HBASE_HOME 、HIVE_HOME