hadoop數(shù)據(jù)傳輸工具sqoop

【概述】
[sqoop]是Apache頂級(jí)項(xiàng)目,主要用來在Hadoop和關(guān)系數(shù)據(jù)庫中傳遞數(shù)據(jù)呜叫。通過sqoop帐要,我們可以方便的將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫導(dǎo)入到HDFS,或者將數(shù)據(jù)從HDFS導(dǎo)出到關(guān)系數(shù)據(jù)庫

【架構(gòu)】

2016-12-21_165905.png

sqoop架構(gòu)非常簡單落塑,其整合了Hive纽疟、Hbase和Oozie,通過map-reduce任務(wù)來傳輸數(shù)據(jù)憾赁,從而提供并發(fā)特性和容錯(cuò)污朽。
sqoop主要通過JDBC和關(guān)系數(shù)據(jù)庫進(jìn)行交互。理論上支持JDBC的database都可以使用sqoop和hdfs進(jìn)行數(shù)據(jù)交互龙考。

【安裝sqoop】

準(zhǔn)備:http://archive.apache.org/dist/sqoop/1.4.4/
    1:sqoop1.4.4.tar.gz
    2 : mysql-connector-5.1.8.jar  (mysql 連接驅(qū)動(dòng))

tar -xzvf sqoop1.4.4.tar.gz
cp -r sqoop1.4.4 /usr/local

//添加驅(qū)動(dòng)到sqoop的lib包
cp  mysql-connector-5.1.8.jar  /usr/local/sqoop1.4.4/lib

為了方便可以配置sqoop的home
vim /etc/pprofile
export SQOOP_HOME=/usr/local/sqoop1.4.4
export PATH=$SQOOP_HOME/bin:$PATH

鍵入sqoop help進(jìn)行安裝測試蟆肆,我們發(fā)現(xiàn)會(huì)有警告,這是因?yàn)槲覀兊臎]有配置HBASE_HOME和HCAT_HOME晦款,這些修改sqoop的啟動(dòng)腳本炎功,讓其在啟動(dòng)時(shí)不進(jìn)行對(duì)應(yīng)類加載檢查即可,


2017-12-19_105951.png

bin/configure-sqoop文件中把以下內(nèi)容注釋掉就可以了

## Moved to be a runtime check in sqoop.
#if [ ! -d "${HBASE_HOME}" ]; then
#  echo "Warning: $HBASE_HOME does not exist! HBase imports will fail."
#  echo 'Please set $HBASE_HOME to the root of your HBase installation.'
#fi

## Moved to be a runtime check in sqoop.
#if [ ! -d "${HCAT_HOME}" ]; then
# echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."
#  echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
#fi
2017-12-19_110349.png

【注意】
這里我sqoop的安裝在hadoop03這臺(tái)主機(jī)上缓溅,觀察可以發(fā)現(xiàn)上邊sqoop的配置除了sqoop_home的配置并沒有其他相關(guān)的配置蛇损,那么他是如何知道HDFS的數(shù)據(jù)存儲(chǔ)位置。其實(shí)是這樣的坛怪,sqoop是基于hadoop的淤齐,只要本機(jī)上配置的HAOOP_HOME的信息,sqoop就會(huì)找到hadoop_home的位置袜匿,進(jìn)而找到etc下的配置文件更啄,從而就可以找到nodeManger和resourceManager。如果本機(jī)沒有配置HAOOP_HOME沉帮,你可以在sqoop的conf目錄下配置sqoop-site.xml

【操作】

類一:數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到HDFS上
      1>默認(rèn)上傳
      sqoop import --connect jdbc:mysql://192.168.1.121:3307/hisee --username root --password 123  --table hisee_user --columns 'id, account, income, expenses'

      2>指定輸出路徑锈死、指定數(shù)據(jù)分隔符
      sqoop import --connect jdbc:mysql://192.168.1.121:3307/hisee --username root --password 123  --table hisee_user --target-dir '/sqoop/td' --fields-terminated-by '\t'

      3>指定Map數(shù)量 -m 
      sqoop import --connect jdbc:mysql://192.168.1.121:3307/hisee --username root --password 123  --table hisee_user --target-dir '/sqoop/td1' --fields-terminated-by '\t' -m 2

      4>增加where條件, 注意:條件必須用引號(hào)引起來
      sqoop import --connect jdbc:mysql://192.168.1.121:3307/hisee --username root --password 123  --table hisee_user --where 'id>3' --target-dir '/sqoop/td2'

      5>增加query語句
      sqoop import --connect jdbc:mysql://192.168.1.121:3307/hisee --username root --password 123 --query 'SELECT * FROM trade_detail where id > 2 AND $CONDITIONS' --split-by trade_detail.id --target-dir '/sqoop/td3' 

注意:如果使用--query這個(gè)命令的時(shí)候贫堰,需要注意的是where后面的參數(shù),AND $CONDITIONS這個(gè)參數(shù)必須加上
     而且存在單引號(hào)與雙引號(hào)的區(qū)別待牵,如果--query后面使用的是雙引號(hào)其屏,那么需要在$CONDITIONS前加上\即\$CONDITIONS
     如果設(shè)置map數(shù)量為1個(gè)時(shí)即-m 1,不用加上--split-by ${tablename.column}缨该,否則需要加上


類二:將HDFS上的數(shù)據(jù)導(dǎo)出到數(shù)據(jù)庫中(不要忘記指定分隔符)
    1>sqoop export --connect jdbc:mysql://192.168.1.121:3307/hisee --username root --password 123 --export-dir '/td3' --table td_bak -m 1 --fields-terminated-by ','

注意:./sqoop的運(yùn)行實(shí)際上就是一個(gè)只有map的mapreduce程序偎行,實(shí)現(xiàn)將數(shù)據(jù)相互傳遞

2016-12-21_173140.png
2016-12-21_173215.png

【配置mysql遠(yuǎn)程連接】

GRANT ALL PRIVILEGES ON itcast.* TO 'root'@'192.168.1.201' IDENTIFIED BY '123' WITH GRANT OPTION;
    FLUSH PRIVILEGES; 
    
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
    FLUSH PRIVILEGES
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贰拿,隨后出現(xiàn)的幾起案子蛤袒,更是在濱河造成了極大的恐慌,老刑警劉巖膨更,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妙真,死亡現(xiàn)場離奇詭異,居然都是意外死亡荚守,警方通過查閱死者的電腦和手機(jī)珍德,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矗漾,“玉大人锈候,你說我怎么就攤上這事〕ü保” “怎么了泵琳?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長誊役。 經(jīng)常有香客問我获列,道長,這世上最難降的妖魔是什么蛔垢? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任蛛倦,我火速辦了婚禮,結(jié)果婚禮上啦桌,老公的妹妹穿的比我還像新娘。我一直安慰自己及皂,他們只是感情好甫男,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著验烧,像睡著了一般板驳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碍拆,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天若治,我揣著相機(jī)與錄音慨蓝,去河邊找鬼。 笑死端幼,一個(gè)胖子當(dāng)著我的面吹牛礼烈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播婆跑,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼此熬,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了滑进?” 一聲冷哼從身側(cè)響起犀忱,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扶关,沒想到半個(gè)月后阴汇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡节槐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年搀庶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疯淫。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡地来,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出熙掺,到底是詐尸還是另有隱情未斑,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布币绩,位于F島的核電站蜡秽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏缆镣。R本人自食惡果不足惜芽突,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望董瞻。 院中可真熱鬧寞蚌,春花似錦、人聲如沸钠糊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抄伍。三九已至艘刚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間截珍,已是汗流浹背攀甚。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國打工箩朴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秋度。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓炸庞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親静陈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子燕雁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容