教你如何使用FusionInsight SqoopShell

摘要:Sqoop-shell是一個Loader的shell工具,其所有功能都是通過執行腳本「sqoop2-shell」來實現的。

本文分享自華為雲社區《FusionInsight SqoopShell使用案例》,作者:Jia裝大佬。

1 SqoopShell使用簡介

sqoop-shell是一個Loader的shell工具,其所有功能都是通過執行腳本「sqoop2-shell」來實現的。

sqoop-shell工具提供了如下功能:

  • 支持創建和更新連接器
  • 支持創建和更新作業
  • 支持刪除連接器和作業
  • 支持以同步或異步的方式啟動作業
  • 支持停止作業
  • 支持查詢作業狀態
  • 支持查詢作業歷史執行記錄
  • 支持複製連接器和作業
  • 支持創建和更新轉換步驟
  • 支持指定行、列分隔符

sqoop-shell工具支持如下模式:

  • 交互模式

通過執行不帶參數的「sqoop2-shell」腳本,進入Loader特定的交互窗口,用戶輸入腳本後,工具會返回相應信息到交互窗口。

  • 批量模式

通過執行「sqoop2-shell」腳本,帶一個文件名作為參數,該文件中按行存儲了多條命令,sqoop-shell工具將會按順序執行文件中所有命令;或者在「sqoop2-shell」腳本後面通過「-c」參數附加一條命令,一次只執行一條命令。

2 SqoopShell配置

2.1 配置Loader客戶端

1. 使用「PuTTY」工具,使用安裝客戶端的用戶登錄客戶端所在節點。

2. 執行以下命令,防止超時退出。

TMOUT=0

3. 執行以下命令,進入Loader客戶端安裝目錄。例如,Loader客戶端安裝目錄為「/opt/hadoopclient/Loader」。

cd /opt/hadoopclient/Loader

4. 執行以下命令,配置環境變量。

source /opt/hadoopclient/bigdata_env

5. 執行以下命令解壓「loader-tools-1.99.3.tar」。

tar -xvf loader-tools-1.99.3.tar

解壓後的新文件保存在「loader-tools-1.99.3」目錄。

6. 執行以下命令修改工具授權配置文件「login-info.xml」,並保存退出。

vi loader-tools-1.99.3/loader-tool/job-config/login-info.xml

2.2 配置sqoopshell 配置文件

  1. 使用「PuTTY」工具,使用安裝客戶端的用戶登錄Loader客戶端所在節點。
  2. 執行以下命令,進入sqoop-shell工具的「conf」目錄。例如,Loader客戶端安裝目錄為「/opt/hadoopclient/Loader」。

cd /opt/hadoopclient/Loader/loader-tools-1.99.3/sqoop-shell/conf

  1. 執行以下命令,配置認證信息。

vi client.properties

3 Sqoopshell使用示例

3.1 交互模式

1. 執行以下命令,進入交互模式(客戶端以/opt/hadoopclient為例)。

source /opt/hadoopclient/bigdata_env

cd /opt/hadoopclient/Loader/loader-tools-1.99.3/sqoop-shell

./sqoop2-shell

2. 獲取幫助信息(\h獲取幫助信息,\cr獲取create的幫助信息,\up獲取更新的幫助信息,以此類推)

3. 查看連接器

以此類推,可以查看framework、job、connection等信息

4. 創建連接器

根據show connector信息選擇對應的連接器,根據create幫助信息創建connection,然後根據命令行提示,輸入對應信息,假如提示的參數無需設置,可按enter直接跳過

5. 創建作業

根據show connection出來的信息選擇對應鏈接,根據create幫助信息創建Job,然後根據命令行提示,輸入對應信息,假如提示的參數無需設置,可按enter直接跳過

也可以使用—help查看創建job的選項信息

Json獲取方法

1) 登錄loader原生頁面,創建一個相同類型的作業(如TaiPingTab)。

2) 導出作業的配置json文件,複製json文件中,hops的內容(包括大括號),保存為新的json文件

3) 根據業務需要調整json文件。

3.2 批量模式

批量模式有兩種方式,一種是./sqoop2-shell+腳本的方式,腳本中配置待執行的命令

另一種是./sqoop2-shell -c 「待執行的命令」方式

獲取幫助:

./sqoop2-shell -c “create connection -cn generic-jdbc-connector –help”獲取創建connection的幫助信息

./sqoop2-shell -c “create job -xn mysql -t import –help”查看創建Job幫助信息

1. 腳本方式

cd /opt/hadoopclient/Loader/loader-tools-1.99.3/sqoop-shell

vi batchCommand.sh

更新作業

2. –c 方式(使用-c參數附帶一條命令,sqoop-shell可以一次只執行附帶的這一條命令)

創建鏈接為mysql名稱為TaiPingTab的導入任務

./sqoop2-shell -c “create job -xn mysql -t import -name TaiPingTab –connector-table-schemaName keshangbank –connector-table-tableName Tab –connector-table-needPartition false –connector-table-columns id,name,value –framework-output-storageType HIVE –framework-output-outputDirectory /user/loader/Tab –framework-throttling-partitionHandlers 10 –framework-throttling-extractors 10 –trans /opt/client/Loader/loader-tools-1.99.3/loader-tool/job-config/TaiPing.json –queue root.default”

啟動:./sqoop2-shell -c “start job -n TaiPingTab -s”

刪除:./sqoop2-shell -c “delete job -n TaiPingTab”

更新:./sqoop2-shell -c ‘update job -j 37 -name update-test –connector-table-sql “select * from keshangbank.update_test where time < “2020-2-2″ and ${CONDITIONS}” ‘

註: 1. sqoop-shell目錄中createConnection createJob helpCmd startCmd中詳細描述了各個參數的含義

2. Json文件的獲取及參考方式均一樣,批量模式中Json文件的獲取跟方式請參考交互模式中json的獲取方式

3. 此文檔中並未對參數詳細介紹,參數部分可參考產品文檔sqoop-shell章節

4. 更新的參數和創建的參數保持一致

 

點擊關注,第一時間了解華為雲新鮮技術~