教你如何使用FusionInsight SqoopShell

華為雲開發者社群發表於2021-08-10
摘要: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

教你如何使用FusionInsight SqoopShell

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

教你如何使用FusionInsight SqoopShell

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獲取更新的幫助資訊,以此類推)

教你如何使用FusionInsight SqoopShell

3. 檢視聯結器

教你如何使用FusionInsight SqoopShell

以此類推,可以檢視framework、job、connection等資訊

教你如何使用FusionInsight SqoopShell

4. 建立聯結器

根據show connector資訊選擇對應的聯結器,根據create幫助資訊建立connection,然後根據命令列提示,輸入對應資訊,假如提示的引數無需設定,可按enter直接跳過

教你如何使用FusionInsight SqoopShell

5. 建立作業

根據show connection出來的資訊選擇對應連結,根據create幫助資訊建立Job,然後根據命令列提示,輸入對應資訊,假如提示的引數無需設定,可按enter直接跳過

教你如何使用FusionInsight SqoopShell

也可以使用—help檢視建立job的選項資訊

教你如何使用FusionInsight SqoopShell

Json獲取方法

1) 登入loader原生頁面,建立一個相同型別的作業(如TaiPingTab)。

教你如何使用FusionInsight SqoopShell

2) 匯出作業的配置json檔案,複製json檔案中,hops的內容(包括大括號),儲存為新的json檔案

教你如何使用FusionInsight SqoopShell

3) 根據業務需要調整json檔案。

3.2 批量模式

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

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

獲取幫助:

./sqoop2-shell -c "create connection -cn generic-jdbc-connector --help"獲取建立connection的幫助資訊

教你如何使用FusionInsight SqoopShell

./sqoop2-shell -c "create job -xn mysql -t import --help"檢視建立Job幫助資訊

教你如何使用FusionInsight SqoopShell

1. 指令碼方式

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

vi batchCommand.sh

教你如何使用FusionInsight SqoopShell

教你如何使用FusionInsight SqoopShell

更新作業

教你如何使用FusionInsight SqoopShell

教你如何使用FusionInsight SqoopShell

教你如何使用FusionInsight SqoopShell

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"

教你如何使用FusionInsight SqoopShell

啟動:./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. 更新的引數和建立的引數保持一致

 

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

相關文章