Hadoop入門進階課程11--Sqoop介紹、安裝與操作


本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,博主為石山園,博客地址為 http://www.cnblogs.com/shishanyuan  。該系列課程是應邀實驗樓整理編寫的,這里需要贊一下實驗樓提供了學習的新方式,可以邊看博客邊上機實驗,課程地址為 https://www.shiyanlou.com/courses/237

【注】該系列所使用到安裝包、測試數據和代碼均可在百度網盤下載,具體地址為 http://pan.baidu.com/s/10PnDs,下載該PDF文件

1搭建環境

部署節點操作系統為CentOS,防火牆和SElinux禁用,創建了一個shiyanlou用戶並在系統根目錄下創建/app目錄,用於存放Hadoop等組件運行包。因為該目錄用於安裝hadoop等組件程序,用戶對shiyanlou必須賦予rwx權限(一般做法是root用戶在根目錄下創建/app目錄,並修改該目錄擁有者為shiyanlou(chown R shiyanlou:shiyanlou /app)。

Hadoop搭建環境:

l  虛擬機操作系統: CentOS6.6  64位,單核,1G內存

l  JDK1.7.0_55 64

l  Hadoop1.1.2

2Sqoop介紹

2.1  Sqoop簡介

Sqoop SQL to Hadoop ,是一款方便的在傳統型數據庫與Hadoop之間進行數據遷移的工具,充分利用MapReduce並行特點以批處理的方式加快數據傳輸,發展至今主要演化了二大版本,Sqoop1Sqoop2 

Sqoop工具是hadoop下連接關系型數據庫和Hadoop的橋梁,支持關系型數據庫和hivehdfshbase之間數據的相互導入,可以使用全表導入和增量導入。

那么為什么選擇Sqoop呢? 

l  高效可控的利用資源,任務並行度,超時時間。 

l  數據類型映射與轉化,可自動進行,用戶也可自定義 

l  支持多種主流數據庫,MySQL,OracleSQL ServerDB2等等 

2.2  Sqoop1Sqoop2比較

2.2.1 Sqoop1Sqoop2異同

l  兩個不同的版本,完全不兼容 

l  版本號划分區別,Apache版本:1.4.x(Sqoop1); 1.99.x(Sqoop2)     CDH版本 : Sqoop-1.4.3-cdh4(Sqoop1) ; Sqoop2-1.99.2-cdh4.5.0 (Sqoop2)

l  Sqoop2Sqoop1的改進 

(1)引入Sqoop server,集中化管理connector 

(2)多種訪問方式:CLI,Web UIREST API 

(3)引入基於角色的安全機制

2.2.2 Sqoop1Sqoop2的架構圖

Sqoop架構圖1

clip_image002

Sqoop架構圖2

clip_image004

2.2.3 Sqoop1Sqoop2的優缺點

比較

Sqoop1

Sqoop2

架構

僅僅使用一個Sqoop客戶端

引入了Sqoop server集中化管理connector,以及rest apiwebUI,並引入權限安全機制

部署

部署簡單,安裝需要root權限,connector必須符合JDBC模型

架構稍復雜,配置部署更繁瑣

使用

命令行方式容易出錯,格式緊耦合,無法支持所有數據類型,安全機制不夠完善,例如密碼暴漏

多種交互方式,命令行,web UIrest APIconncetor集中化管理,所有的鏈接安裝在Sqoop server上,完善權限管理機制,connector規范化,僅僅負責數據的讀寫

 

clip_image006

 

3安裝部署Sqoop

3.1 下載Sqoop

可以到apache基金sqoop官網http://hive.apache.org/,選擇鏡像下載地址:http://mirror.bit.edu.cn/apache/sqoop/下載一個穩定版本,如下圖所示下載支持Hadoop1.X1.4.5版本gz包:

clip_image008

也可以在/home/shiyanlou/install-pack目錄中找到該安裝包,解壓該安裝包並把該安裝包復制到/app目錄中

cd /home/shiyanlou/install-pack

tar -xzf sqoop-1.4.5.bin__hadoop-1.0.0.tar.gz

mv sqoop-1.4.5.bin__hadoop-1.0.0 /app/sqoop-1.4.5

ll /app

clip_image010

3.2 設置/etc/profile參數

編輯/etc/profile文件,加入sqoopHome路徑和在PATH加入bin的路徑:

export SQOOP_HOME=/app/sqoop-1.4.5

export PATH=$PATH:$SQOOP_HOME/bin

clip_image012

編譯配置文件/etc/profile,並確認生效

source /etc/profile

echo $PATH

3.3 設置bin/configure-sqoop配置文件

修改bin/configure-sqoop配置文件

cd /app/sqoop-1.4.5/bin

sudo vi configure-sqoop

注釋掉HBaseZookeeper等檢查(除非使用HBaseZookeeperHADOOP上的組件)

clip_image014

3.4 設置conf/sqoop-env.sh配置文件

如果不存在sqoop-env.sh文件,復制sqoop-env-template.sh文件,然后修改sqoop-env.sh配置文件

cd /app/sqoop-1.4.5/conf

cp sqoop-env-template.sh sqoop-env.sh

sudo vi sqoop-env.sh

clip_image016

設置hadoop運行程序所在路徑和hadoop-*-core.jar路徑(Hadoop1.X需要配置)

#Set path to where bin/hadoop is available

export HADOOP_COMMON_HOME=/app/hadoop-1.1.2

#Set path to where hadoop-*-core.jar is available

export HADOOP_MAPRED_HOME=/app/hadoop-1.1.2

clip_image018

編譯配置文件sqoop-env.sh使之生效

3.5 驗證安裝完成

輸入如下命令驗證是否正確安裝sqoop,如果正確安裝則出現sqoop提示

sqoop help

clip_image020

4文件導入/導出

4.1 MySql數據導入到HDFS

如果沒有安裝MySql,請參照第83.1進行安裝

4.1.1 下載MySql驅動

MySql官網進入下載頁面:http://dev.mysql.com/downloads/connector/j/ ,選擇所需要的版本進行下載,這里下載的zip格式的文件,然后在本地解壓:

clip_image022

也可以在/home/shiyanlou/install-pack目錄中找到該安裝包,把MySql驅動包使用如下命令放到Sqooplib目錄下

cd /home/shiyanlou/install-pack

cp mysql-connector-java-5.1.22-bin.jar /app/sqoop-1.4.5/lib

clip_image024

4.1.2 啟動MySql服務

查看MySql服務並查看狀態,如果沒有啟動則啟動服務

sudo service mysql status

sudo service mysql start

clip_image026

4.1.3 查看MySql中的數據表

進入MySql數據庫,選擇有數據的一張表查看內容,比較導出結果是否正確,輸入如下命令:

mysql -uhive -phive

mysql>show databases;

mysql>use hive;

mysql>show tables;

mysql>select TBL_ID, CREATE_TIME, DB_ID, OWNER, TBL_NAME,TBL_TYPE from TBLS;

clip_image028

clip_image030

4.1.4 MySql數據導入到HDFS

使用如下命令列出MySql中所有數據庫:

sqoop list-databases --connect jdbc:mysql://hadoop:3306/ --username hive --password hive

clip_image032

使用如下命令把hive數據庫TBLS表數據導入到HDFS中:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username hive --password hive --table TBLS -m 1

l--username 數據庫用戶名

l--password連接數據庫密碼

l--table 表名

l-m 1表示map

clip_image034

4.1.5 查看導出結果

使用如下命令查看導出到HDFS結果,文件路徑在當前用戶hadoop目錄下增加了TBLS表目錄,查看part-m-00000文件:

hadoop fs -ls /user/shiyanlou/TBLS

hadoop fs -cat /user/shiyanlou/TBLS/part-m-00000

clip_image036

4.2 MySql數據導入到Hive

4.2.1 啟動metastorehiveserver

在使用hive之前需要啟動metastorehiveserver服務,通過如下命令啟用:

hive --service metastore &

hive --service hiveserver &

啟動用通過jps命令可以看到兩個進行運行在后台

clip_image038

4.2.2 MySql導入表數據到Hive

使用如下命令到把MySqlTBLS表數據導入到Hive中:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username hive --password hive --table TBLS --hive-table MySql2Hive --hive-import -m 1

l-- usernamemysql中的數據庫連接用戶名

l--passwordmysql中的數據庫連接密碼

l--table為導出表

l--hive-table test1 為導出表在Hive中的名稱

l-m 1表示map

clip_image040

clip_image042

從運行的日志可以看到,這個過程有兩個階段:

1.  第一個階段是從MySql中把數據到HDFS文件中

2.  第二個階段是從HDFS中把數據寫入到MySql

4.2.3 查看導出結果

登錄hive,在hive創建表並查看該表,命令如下:

hive

hive>show tables;

hive>desc MySql2Hive;

clip_image044


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM