sqoop數(shù)據(jù)導(dǎo)入工具_(dá)第1頁(yè)
sqoop數(shù)據(jù)導(dǎo)入工具_(dá)第2頁(yè)
sqoop數(shù)據(jù)導(dǎo)入工具_(dá)第3頁(yè)
sqoop數(shù)據(jù)導(dǎo)入工具_(dá)第4頁(yè)
sqoop數(shù)據(jù)導(dǎo)入工具_(dá)第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Sqoop數(shù)據(jù)導(dǎo)入工具本章教學(xué)內(nèi)容節(jié)知識(shí)點(diǎn)掌握程度Sqoop概述Sqoop簡(jiǎn)介了解Sqoop架構(gòu)了解Sqoop導(dǎo)入導(dǎo)出數(shù)據(jù)原理掌握實(shí)驗(yàn)環(huán)境說(shuō)明掌握Sqoop1工具使用安裝部署Sqoop1掌握mysql導(dǎo)入到hdfs掌握HDFS導(dǎo)出到mysql掌握將mysql數(shù)據(jù)導(dǎo)入到hive掌握Hive數(shù)據(jù)導(dǎo)出到Mysql掌握Mysql導(dǎo)入到hbase掌握Sqoop2工具使用(可選)安裝部署Sqoop2掌握客戶端使用掌握mysql與hdfs之間互操作掌握課程目標(biāo)本課程的目標(biāo)是幫助學(xué)員掌握Sqoop工具的使用,了解Sqoop工作原理,掌握Sqoop1的安裝配置,能夠使用Sqoop1進(jìn)行mysql與hdfs、hbase、hive之間的數(shù)據(jù)導(dǎo)入導(dǎo)出課程內(nèi)容Sqoop概述Sqoop1工具使用Sqoop簡(jiǎn)介Sqoop即SQLtoHadoop,是一款方便的在傳統(tǒng)型數(shù)據(jù)庫(kù)與Hadoop之間進(jìn)行數(shù)據(jù)遷移的工具,充分利用MapReduce并行特點(diǎn)以批處理的方式加快數(shù)據(jù)傳輸,發(fā)展至今主要演化了二大版本,Sqoop1和Sqoop2。Sqoop工具是hadoop下連接關(guān)系型數(shù)據(jù)庫(kù)和Hadoop的橋梁,支持關(guān)系型數(shù)據(jù)庫(kù)和hive、hdfs、hbase之間數(shù)據(jù)的相互導(dǎo)入,可以使用全表導(dǎo)入和增量導(dǎo)入。

Sqoop優(yōu)勢(shì)高效可控的利用資源,任務(wù)并行度,超時(shí)時(shí)間。數(shù)據(jù)類型映射與轉(zhuǎn)化,可自動(dòng)進(jìn)行,用戶也可自定義支持多種主流數(shù)據(jù)庫(kù),MySQL,Oracle,SQLServer,DB2等等

Sqoop1架構(gòu)Sqoop導(dǎo)入與導(dǎo)出Sqoop從數(shù)據(jù)庫(kù)導(dǎo)入到HDFS的原理在導(dǎo)入開始之前,Sqoop使用JDBC來(lái)檢查將要導(dǎo)入的表,檢索出表中所有的列以及列的SQL數(shù)據(jù)類型,這些SQL類型(VARCHAR、INTEGER)被映射到Java數(shù)據(jù)類型(String、Integer等),在MapReduce應(yīng)用中將使用這些對(duì)應(yīng)的java類型來(lái)保存字段的值。Sqoop的代碼生成器使用這些信息來(lái)創(chuàng)建對(duì)應(yīng)表的類,用于保存從表中抽取的記錄。JDBC的ResultSet接口提供了檢索記錄的游標(biāo)Sqoop啟動(dòng)的MapReduce作業(yè),在生成反序列化代碼和配置InputFormat之后,Sqoop將作業(yè)發(fā)送到MapReduce集群。Map任務(wù)將執(zhí)行查詢并將ResultSet中的數(shù)據(jù)反序列化到生成類的實(shí)例,寫入到HDFS中。Sqoop從HDFS導(dǎo)出到數(shù)據(jù)庫(kù)的原理Sqoop在執(zhí)行導(dǎo)出操作之前,sqoop會(huì)根據(jù)數(shù)據(jù)庫(kù)連接字符串來(lái)選擇一個(gè)導(dǎo)出方法,一般為jdbc。sqoop會(huì)根據(jù)目標(biāo)表的定義生成一個(gè)java類,這個(gè)生成的類能夠從文本文件中解析記錄,并能夠向表中插入類型合適的值。接著會(huì)啟動(dòng)一個(gè)MapReduce作業(yè),從HDFS中讀取源數(shù)據(jù)文件,使用生成的類解析記錄,并且執(zhí)行選定的導(dǎo)出方法。實(shí)驗(yàn)環(huán)境說(shuō)明操作系統(tǒng):Ubuntu16.04ServerJDK版本:1.8Hadoop版本:2.7.2Sqoop版本:sqoop-1.4.6 sqoop-1.99.7課程內(nèi)容Sqoop概述Sqoop1工具使用安裝部署Sqoop1下載Sqoop/apache/sqoop/解壓安裝包tar-xzvfsqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gzmvsqoop-1.4.6.bin__hadoop-2.0.4-alphasqoop-1.4.6設(shè)置環(huán)境變量在.profile中配置環(huán)境變量exportHADOOP_HOME=/home/hadoop/hadoop-2.7.2export

SQOOP_HOME=/home/hadoop/sqoop-1.4.6export

ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.6exportHIVE_HOME=/home/hadoop/hive-1.2.1exportHBASE_HOME=/home/hadoop/hbase-1.2.4exportPATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$SQOOP_HOME/bin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin復(fù)制文件在sqoop配置目錄中復(fù)制sqoop-env-template.sh文件為

sqoop-env.sh將hadoop的hadoop-common-2.7.2.jar包文件復(fù)制到sqoop的lib目錄下將Java的MySQL連接器mysql-connector-java-5.1.39-bin.jar包文件復(fù)制到Sqoop的lib目錄下Sqoop配置修改sqoop-env.sh配置exportHADOOP_COMMON_HOME=/home/hadoop/hadoop-2.7.2/exportHADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.7.2/exportHBASE_HOME=/home/hadoop/hbase-1.2.4exportHIVE_HOME=/home/hadoop/hive-1.2.1exportZOOCFGDIR=/home/hadoop/zookeeper-3.4.6/conf測(cè)試Sqoop是否配置成功sqooplist-databases--connectjdbc:mysql://:3306--usernameroot--password123456表的創(chuàng)建createtabletest(idint,namevarchar(50),crt_datetimestamp);mysql導(dǎo)入到hdfssqoopimport--connectjdbc:mysql://:3306/test--usernameroot--password123456--tabletest--target-dir/data--fields-terminated-by','-m1mysql導(dǎo)入到hdfs—數(shù)據(jù)并發(fā)導(dǎo)入Sqoop在import時(shí),需要指定split-by參數(shù),Sqoop根據(jù)不同的split-by參數(shù)值來(lái)進(jìn)行切分,然后將切分出來(lái)的區(qū)域分配到不同map中,每個(gè)map中再處理數(shù)據(jù)庫(kù)中獲取的一行一行的值,寫入到HDFS中。sqoopimport--connectjdbc:mysql:///test--usernameroot--password123456--tabletest--target-dir/data-m2--split-byidmysql數(shù)據(jù)增量導(dǎo)入--append模式sqoopimport--connectjdbc:mysql:///test--usernameroot--password123456--tabletest--fields-terminated-by',‘-m1--target-dir/data--incrementalappend--check-columnid--last-value3HDFS導(dǎo)出到mysqlsqoopexport--connectjdbc:mysql://:3306/test--tabletest--input-fields-terminated-by','--usernameroot--password123456--export-dir/dataSqoop容錯(cuò)Sqoop將一個(gè)傳輸作業(yè)生成一個(gè)mapreducejob,一個(gè)傳輸任務(wù),由多個(gè)task并行執(zhí)行,每個(gè)task本身是一個(gè)transaction,當(dāng)這個(gè)taskfail,這個(gè)transaction會(huì)rollback,但其他的transaction不會(huì)rollback,這就會(huì)導(dǎo)致非常嚴(yán)重的臟數(shù)據(jù)問(wèn)題,數(shù)據(jù)部分導(dǎo)入,部分缺失,導(dǎo)致數(shù)據(jù)出現(xiàn)一致性問(wèn)題。SqoopExport提供了一個(gè)“中間表”的解決辦法,先將數(shù)據(jù)寫入到中間表,寫入中間表成功,在一個(gè)transaction中將中間表的數(shù)據(jù)寫入目標(biāo)表

Sqoop容錯(cuò)sqoopexport--connectjdbc:mysql://:3306/test--usernameroot--password123456--tabletest--export-dir/data--staging-tabletest_tmp--clear-staging-table-m1--fields-terminated-by','HDFS導(dǎo)出到mysql--數(shù)據(jù)覆蓋更新對(duì)于HDFS上更新的數(shù)據(jù)以及新增數(shù)據(jù)的處理sqoopexport--connectjdbc:mysql://:3306/test--usernameroot--password123456--tabletest--update-keyid--update-modeallowinsert--input-fields-terminated-by','--export-dir/dataMysql全庫(kù)導(dǎo)入到hdfssqoopimport-all-tables--connectjdbc:mysql://:3306/test--usernameroot--password123456--fields-terminated-by','-m1Mysql導(dǎo)入到hivesqoopimport--connectjdbc:mysql://:3306/test--usernameroot--password123456--tabletest--delete-target-dir--target-dir/sqoop--hive-databasetest--hive-import--hive-overwrite--fields-terminated-by','-m1Mysql全庫(kù)導(dǎo)入Hivesqoopimport-all-tables--connectjdbc:mysql://:3306/test--usernameroot--password123456--h

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論