實作一

Sqoop (1) : 將 MS SQL 資料表匯出到 HDFS

連線至 EMS

首先,請使用 SSH Client (Ex. PieTTY) 連進 EMS 的 Master 虛擬機器。(若您是參考官方步驟進行設定,則 IP 位址應為 192.168.60.250)

  1. 嘗試連線至 Etu Manager Sandbox (EMS) 的 Master 虛擬機器(若您有根據設定步驟正確設定,則 IP 位址應為 192.168.60.250)

確認 HDFS 與 MapReduce 服務狀態

  1. 由於後續的實作會用到 HDFS 跟 MapReduce,因此請先確認 HDFS 與 MapReduce 的狀態是正常運作中。以 Etu Manager Sandbox 為例,您可以連線至 http://192.168.60.250:50070http://192.168.60.250:50030 確認 NameNode 與 JobTracker 的狀態。或者從 http://192.168.60.250/login.html 登入管理介面 ( 帳號: admin / 密碼: etusolution ),點選 Etu Manager Console。

執行記錄匯出

  1. 請輸入指令: sqoop version
    user@master ~ $ sqoop version
    Sqoop 1.4.3-cdh4.7.1
    git commit id 
    Compiled by jenkins on Tue Nov 18 09:41:51 PST 2014
    
  2. 請輸入如下指令並將「帳號」處替換成您的帳號:
    ## 以下兩行為防止錯誤結果的檢查指令 
    user@master ~ $ hadoop fs -ls
    user@master ~ $ hadoop fs -rmr mysql_data MSSQL_DATA
    ## 進行匯入
    user@master ~ $ export DBID=帳號
    user@master ~ $ sqoop import --connect "jdbc:sqlserver://sql.3du.me:1433;database=$DBID" --table MSSQL_DATA --username $DBID -P
    Enter password: 輸入密碼
    
  3. 若資料轉換有正常執行,您將看到以下的類似訊息:
    13/12/22 10:12:31 INFO hdfs.DFSClient: Created HDFS_DELEGATION_TOKEN token 13 for user on 192.168.60.250:9000
    13/12/22 10:12:31 INFO security.TokenCache: Got dt for hdfs://master.etusolution.com:9000;uri=192.168.60.250:9000;t.service=192.168.60.250:9000
    13/12/22 10:12:31 INFO hdfs.DFSClient: Created HDFS_DELEGATION_TOKEN token 14 for user on 192.168.60.250:9000
    13/12/22 10:12:31 INFO security.TokenCache: Got dt for hdfs://master.etusolution.com:9000/var/disk/a/hadoop/tmp/hadoop-etu/mapred/staging/user/.staging/job_201312211330_0007/libjars/ant-eclipse-1.0-jvm1.2.jar;uri=192.168.60.250:9000;t.service=192.168.60.250:9000
    13/12/22 10:12:34 INFO db.DataDrivenDBInputFormat: BoundingValsQuery: SELECT MIN([id]), MAX([id]) FROM [MSSQL_DATA]
    13/12/22 10:12:41 INFO mapred.JobClient: Running job: job_201312211330_0007
    .
    .. 略 ..
    .
    13/12/22 10:13:07 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 87.6205 seconds (0 bytes/sec)
    13/12/22 10:13:07 INFO mapreduce.ImportJobBase: Retrieved 2 records.
    

檢查結果檔案

  1. 轉換之結果,可於 HDFS 取得。請檢查目錄下是否有 MSSQL_DATA 資料夾。若轉換成功,您將看到 part-m-***** 的結果檔案。
    user@master ~ $ hadoop fs -ls MSSQL_DATA
    -rw-------   3 user user          0 2013-12-22 10:13 MSSQL_DATA/_SUCCESS
    drwxrwxr-x   - user user          0 2013-12-22 10:12 MSSQL_DATA/_logs
    -rw-------   3 user user         16 2013-12-22 10:13 MSSQL_DATA/part-m-00000
    
  2. 檢視 part-m-***** 轉換結果
    user@master ~ $ hadoop fs -cat MSSQL_DATA/part-m-00000
    1,Hello
    2,World
    

常見問題

參考資料

  1. Sqoop: Big data conduit between NoSQL and RDBMS”, , Advisory Consultant, IBM, 23 Jul 2013

本文件最後更新於: