1. 程式人生 > >sqoop2的shell下的使用及其詳解(sqoop-1.99.7)

sqoop2的shell下的使用及其詳解(sqoop-1.99.7)

前提是安裝好sqoop!!

1.服務端

如圖,我們可以使用 sqoop2-server [ start | stop ] 來啟動和關閉服務端。之後使用 jps 命令可以檢視到 
這裡寫圖片描述
會多了這個程序。

在啟動服務成功後,會在自動生成兩個檔案(如果沒有檔案),(預設的是BASEDIR 和LOGDIR),

前者存放建立的link和job,,後者存放日誌檔案,

如果採用預設的,當你換個路徑啟動服務,link和job會找不到,即使你回到原來的路徑啟動也找到了,所有建議採用絕對路徑,配置檔案路徑:$SQOOP_HOME/conf/sqoop.properties

附上全域性替換命令:(把@[email protected]

換成 /user/hadoop/sqoop-1.99.7/logs)

# 設定日誌檔案的目錄
0,%s/@[email protected]/\/usr\/hadoop\/sqoop-1.99.7\/logs/g
# 設定資料的存放目錄
0,%s/@[email protected]/\/usr\/hadoop\/sqoop-1.99.7\/bin\/BASEDIR/g

使用sqoop前請確保hadoop服務和Sqoop2伺服器均已啟動。其中Hadoop不僅要啟動hdfs(NameNode、DataNode),還要啟動yarn(NodeManager、ResourceManager),當然,一般還會有一個SecondaryNameNode,用於原始NameNode的備援程序。


2.客戶端

服務啟動後, 使用命名進入:  sqoop2-shell 

若成功會開啟sqoop的shell命令列提示符:sqoop:000>

我們在使用的過程中可能會遇到錯誤,使用以下命令來使錯誤資訊顯示出來(每次進來都要設定才起作用)

set option --n[ame] verbose --v[alue] true

連線Sqoop服務端:

#我們的服務端安裝在master這個節點上所以--host是master(每次進來都要設定才起作用)
 

set server --h[ost] master


(set server --h[ost] master --p[ort] 12000 --w[ebapp] sqoop)
或者:  set server -u[rl] http://master:12000/sqoop

使用命令檢視剛剛設定的資訊:

show version --a[ll] 


可以使用help檢視幫助文件,雖然不太詳細,比較蠢,試一試命令就知道怎麼用了

MySQL連結使用的是JDBC,這樣想來不難理解,必須有對應的驅動檔案jar,還得有對應的訪問許可權,請確保能在server端訪問MySQL。

可以先看看connector模板都有哪些:    show connector  

這時候會顯示各個conector資訊,在1.99.7版本以前,每個connector會有一個id,當建立link時,用這個id指定所繼承的connector,但在這個版本中沒有這個id了,建立link時直接使用connector名稱建立,這裡我們使用的是generic-jdbc-connector(一般資料庫都可以用這個):

2.1建立mysql連結

create link -c[onnector] generic-jdbc-connector  

這時候就會出現互動會話,提示你輸入各項引數:
Name: mysql-link      標示這個link的字串,就是一個名字,但是不能重複

Driver Class:指定jdbc啟動時所需要載入的driver類,這個類實現了Java.sql.Driver介面。對本文來說,這個值是com.mysql.jdbc.Driver。

Connection String:本例為jdbc:mysql://master:3306/hive,   #注意:jdbc:mysql://主機名(ip):埠/資料庫名
Username:連結資料庫的使用者名稱,也就是mysql客戶端傳入的-u引數。本例是hive。

Password:連結資料庫的使用者密碼。(注:在使用update命令時,這裡預設是沒有的,其他引數都會儲存原來輸過的值)

FetchSize:直接回車了,使用的預設值,不是很清楚這個值,請知道的大牛告知,按字面意思就是獲取一次資源時的大小。

填寫完上面幾項,將提供一個可以輸入JDBC屬性的hash,提示符是entry#,這時候可以手動指定很多JDBC屬性的值。本例只覆蓋了一個protocol值為tcp:protocol=tcp

再按回車,之後會再定義一下SQL方言。也就是說,各個資料庫系統提供商們對SQL語言標準的理解和實現各有不同,於是各有各的一些細微差別。以下屬性就是用於指定這些區別的。 官方文件上並沒有說明這些屬性如何填寫,連提都沒提(官網有時還是挺坑的)。

Identifier enclose:指定SQL中識別符號的定界符,也就是說,有的SQL標示符是一個引號:select * from "table_name", 在寫mysql的sql語句中會加上雙引號,這種定界符在MySQL中是會報錯的,。這個屬性預設值就是雙引號,所以不能直接回車使用預設值,必須將之覆蓋,我使用空格覆蓋了這個值。 

至此,就可以完成這個link的建立。命令列提示符也會還原為sqoop:000>。使用以下命令檢視是否建立成功:

 show link  ,  後面也可以加引數,-n或者-a之類的
 

2.2建立HDFS連結

create link -c  hdfs-connector  

Name: hdfs-link    與mysql的一樣,是個名字但不重複

HDFS URI:  hdfs://master:9000/ 這個url是hadoop中配置hdfs-site.xml中的屬性fs.defaultFS的值(老版的hadoop是fs.default.name,如果沒找到就使用webUI  (http://主機名(ip):8088/conf)  去配置中心看)。
Hadoop conf directory:/mysoftware/hadoop-2.7.1/etc/hadoop   #Hadoop配置檔案的目錄

回車後沒有什麼錯誤就會顯示successful資訊。


2.3 建立一個job

 create job -f "mysql-link" -t "hdfs-link"  

-f指定from,即是資料來源位置,-t指定to,即是目的地位置。本例是從MySQL傳遞資料到HDFS,所以就是from mysql to HDFS。引數值就是在建立連結(link)時指定的Name。名字在上面取好了,知道為啥名字不能重複了吧

Name: mysql_hdfs_job #Name必須唯一

Schema name: hive                     #必填,資料庫名稱
Table name: DBS                  #必填,表名
#以下幾個配置我也是直接回車,使用預設值,從名字上能看出個大概的值
Table SQL statement:                   #可選
Table column names:   #可選
Partition column name:         #可選
Null value allowed for the partition column:      #可選
Boundary query:                        #可選

 
Check column:                         #可選
Last value:                          #可選
 
Override null value:                    #可選
Null value: 
Output format:                    #輸出檔案格式
 0 : TEXT_FILE  

..........

Choose: 0                           #必選 
Compression format: #用於指定使用什麼壓縮演算法進行匯出資料檔案壓縮,我指定NONE,這個也可以使用自定義的壓縮演算法CUSTOM,用Java實現相應的介面

0 : NONE
  ..........
Choose: 0                               #必選  這個就是指定的custom壓縮演算法
 
Output directory: /mysqoop  # 指定儲存在HDFS檔案系統中的路徑,這裡最好指定一個存在的路徑,或者存在但路徑下是空的,貌似這樣才能成功。
Append mode: #是否追加檔案,不懂的是,要求資料夾是空,連檔案都沒有何來追加!


#下面兩個數量怎麼取值,還不是很情況,請大牛告知
Extractors: 2                            #可選,對應mapreduce的job中的map的數量    
Loaders: 1                              #可選,對應mapreduce的job中的reduce的數量


最後再次出現element#提示符,用於輸入extra mapper jars的屬性,可以什麼都不寫。直接回車。


至此若出現successful則證明已經成功建立。

2.4 執行job 

start job -n mysql_hdfs_job  -s  (名字上的引號要不要都無所謂)

  -s 引數可以看到執行的狀態,

 也可以用  status job -n mysql_hdfs_job  檢視或者使用webUI檢視  (http://主機名(ip):8088/cluster/apps),也能看日誌

如果失敗,優先看sqoop shell中有沒有報錯,再者看日誌,可以在webUI中和sqoop的日誌檔案看,前面有提及,如果日誌中沒有明顯的報錯,一般是你設定某個引數時不正確,或者是(hadoop)配置檔案有問題,

報錯時的推薦引數:

在Hadoop的yarn-site.xml 這個配置檔案中設定以下屬性
<property>  
  <name>yarn.log-aggregation-enable</name>  
  <value>true</value>  
</property>


在mapred-site.xml中設定:(預設200)
<property>
  <name>mapred.child.java.opts</name>
  <value>-Xmx1024m</value>
</property>

參考文章:

http://www.cnblogs.com/avivaye/p/6196485.html

http://www.cnblogs.com/avivaye/p/6197123.html

http://blog.csdn.net/M_SIGNALs/article/details/53189424

http://blog.csdn.net/u012842205/article/details/52346595

http://blog.csdn.net/u014729236/article/details/46876651

還有很多地方不太懂,求知道的大牛,不吝賜教!共勉!

相關推薦

sqoop2的shell的使用及其(sqoop-1.99.7)

前提是安裝好sqoop!! 1.服務端 如圖,我們可以使用 sqoop2-server [ start | stop ] 來啟動和關閉服務端。之後使用 jps 命令可以檢視到 會多了這個程序。 在啟動服務成功後,會在自動生成兩個檔案(如果沒有檔案),(預設的是BASEDIR

Sqoop-1.99.7安裝配置(詳細圖文)

環境:centos 6.5,hadoop2.6.4叢集 1.解壓安裝sqoop 從官網下載好安裝包,傳送到叢集中任意一臺主機即可。相信大家已經看到,1.99.7跟1.4.6是不相容的,而且官網也不建議使用這個版本在生產環境中使用。可是,為了學習,搞吧!

AIXPVID及其修改方法

AIX下PVID詳解及其修改方法AIX 下 PVID 詳解及其修改方法1.PVID 是什麽PVID 全稱 physical volume identifier,它非常重要,相當於軟序列號,當把一個磁盤變成 PV 時, 就生成了 PVID , PVID 是由機器序列號 (uname -m的前8位 ) 和它生成的

linux的Makefile1

七、清空目標檔案的規則 每個Makefile中都應該寫一個清空目標檔案(.o和執行檔案)的規則,這不僅便於重編譯,也很利於保持檔案的清潔。這是一個“修養”(呵呵,還記得我的《程式設計修養》嗎)。一般的風格都是: clean: rm edit $(objects) 更為穩健的做法是: .PHONY : clea

MongoDB執行計劃分析1

mongo smu pre als comm 計劃 -- {} direct 正文 queryPlanner queryPlanner是現版本explain的默認模式,queryPlanner模式下並不會去真正進行query語句查詢,而是針對query語句進行執行計劃分析並

ls命令的參數及其

ls功能說明:列出目錄內容。語  法:ls [-1aAbBcCdDfFgGhHiklLmnNopqQrRsStuUvxX][-I <範本樣式>][-T <跳格字數>][-w <每列字符數>][--block-size=<區塊大小>][--color=<使用

find命令參數及其

findfindfind功能說明:查找文件或目錄。語  法:find [目錄...][-amin <分鐘>][-anewer <參考文件或目錄>][-atime <24小時數>][-cmin <分鐘>][-cnewer <參考文件或目錄>][-cti

grep命令的參數及其

grep功能說明:查找文件裏符合條件的字符串。語  法:grep [-abcEFGhHilLnqrsvVwxy][-A<顯示列數>][-B<顯示列數>][-C<顯示列數>][-d<進行動作>][-e<範本樣式>][-f<範本文件>][--

mkisofs命令的參數及其

mkisofs功能說明:建立ISO 9660映像文件。語  法:mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A <應用程序ID>][-abstract <摘要文件>][-b <開機映像文件>][-biblio <IS

跟開濤學SpringMVC(4.1):Controller接口控制器1

詳解 shu fix gmv 控制器 input abstract pre pdf http://www.importnew.com/19397.html http://blog.csdn.net/u014607184/article/details/5207453

指標1)-- 軌道線指標(ENE)

本質 平均值 width 簡單 公式 方向 重新 alt 改變 軌道線指標(ENE): 1、定義:軌道線(ENE)由上軌線(UPPER)和下軌線(LOWER)及中軌線(ENE)組成,軌道線的優勢在於其不僅具有趨勢軌道的研判分析作用,也可以敏銳的覺察股價運行過程中方向的改

《TCP-IP1:協議》【PDF】下載

聯網 1.2 rar 測試 第5章 時間段 關註 4.5 控制 《TCP-IP詳解卷1:協議》【PDF】下載鏈接: https://u253469.pipipan.com/fs/253469-230062539 內容簡介《TCP/IP詳解卷1:協議》描述了屬於每一層

TCP/IP1 第二十章 TCP的成塊數據流

互聯 媒體 即將 它的 提交數據 技術分享 超時重傳 red 更多 先補充一個知識: 1.停止等待協議:是tcp保證傳輸可靠的重要途徑,“停止等待”就是指發送完一個分組就停止發送,等待對方確認之後,才能繼續發送下一個分組 停止等待協議的優點是簡單,缺點就是信道的利用率太低,

JAVA線程池原理1

err 最大 RKE private queue 分享 ren ++ ant 線程池的優點 1、線程是稀缺資源,使用線程池可以減少創建和銷毀線程的次數,每個工作線程都可以重復使用。 2、可以根據系統的承受能力,調整線程池中工作線程的數量,防止因為消耗過多內存導致服務器崩潰。

Spring Boot中使用MyBatis註解配置1

sql type .org 實體 sch 整合 PE 匯總 同傳 之前在Spring Boot中整合MyBatis時,采用了註解的配置方式,相信很多人還是比較喜歡這種優雅的方式的,也收到不少讀者朋友的反饋和問題,主要集中於針對各種場景下註解如何使用,下面就對幾種常見的情況舉

Spring Cloud Spring Boot mybatis分布式微服務雲架構(三)屬性配置文件1

定義 public 配置數據庫連接 clas cep and xml配置 其他 PE 相信很多人選擇Spring Boot主要是考慮到它既能兼顧Spring的強大功能,還能實現快速開發的便捷。我們在Spring Boot使用過程中,最直觀的感受就是沒有了原來自己整合Spri

基於Tomcat的JSP 1)—— 概述

normal pad san borde orm ace text pin style 們使用。 一.為什麽使用JSP 下面基於Tomcat的JSP 詳解(1)—— 概述

第2章 Internet地址結構 [TCP/IP1:協議]

壓力 其余 用戶 變化 分層結構 連續 全球 尋址 ieee 本章介紹了Interent中使用的網絡層地址,又稱為IP地址。連接到Interent的每個設備至少有一個IP地址。基於TCP/IP協議的專用網絡中使用的設備也需要IP地址。在任何情況下,IP路由器實現的轉發程序使

linux 重定向命令(如1>/dev/null 2>&1)

信息 重定向命令 指定路徑 定向 終端 pre inux 輸入 設備 基礎 0:表示標準輸入stdin 1:表示標準輸出stdout,系統默認為1,可省略(即1>/dev/null等價於>/dev/null) 2:表示標準錯誤stderr >:表示重定向

Java1)--知識點總結1

大資料NP知識點總結1 ---------------------  作者:文動天下 來源:CSDN  連結:https://blog.csdn.net/li_yi_kun?t=1 版權宣告:本文為博主原創文章,轉載請附上博文連結! 目錄 上午