通過Sqoop實現Mysql / Oracle 與HDFS / Hbase互導數據

下文將重點說明通過Sqoop實現Mysql與HDFS互導數據,Mysql與Hbase,Oracle與Hbase的互導最后給出命令。
一、Mysql與HDFS互導數據

環境:

宿主機器操作系統為Win7,Mysql安裝在宿主機上,宿主機地址為192.168.66.96
3臺虛擬機操作系統為Ubuntu-12.04.1-32位
三臺虛擬機已成功安裝Hadoop,并實現免密鑰互訪,配hosts為:
192.168.66.91 masternode
192.168.66.92 slavenode1
192.168.66.93 slavenode2
/etc/profile已配置好必備環境變量HADOOP_HOME,JAVA_HOME
實驗在masternode上進行,已成功連接mysql
?
步驟一,下載安裝包:
我安裝的Hadoop版本是原生hadoop-0.20.203.0,SQOOP不支持此版本,可使用CDH3版本hadoop,也可以通過拷貝相應的包到sqoop-1.2.0-CDH3B4/lib下,依然可以使用。
下載相關文件:
http://archive.cloudera.com/cdh/3/hadoop-0.20.2-CDH3B4.tar.gz
http://archive.cloudera.com/cdh/3/sqoop-1.2.0-CDH3B4.tar.gz
sqoop-1.2.0-CDH3B4依賴hadoop-core-0.20.2-CDH3B4.jar,所以你需要下載hadoop- 0.20.2-CDH3B4.tar.gz,解壓縮后將hadoop-0.20.2-CDH3B4/hadoop-core-0.20.2- CDH3B4.jar復制到sqoop-1.2.0-CDH3B4/lib中。
另外,sqoop導入mysql數據運行過程中依賴mysql-connector-java-*.jar,所以你需要下載mysql-connector-java-*.jar并復制到sqoop-1.2.0-CDH3B4/lib中。
?
步驟二,相關配置:
修改SQOOP的文件configure-sqoop,注釋掉hbase和zookeeper檢查(除非你準備使用HABASE等HADOOP上的組件) #if [ ! -d "${HBASE_HOME}" ]; then
# echo “Error: $HBASE_HOME does not exist!”
# echo ‘Please set $HBASE_HOME to the root of your HBase installation.’
# exit 1
#fi
#if [ ! -d "${ZOOKEEPER_HOME}" ]; then
# echo “Error: $ZOOKEEPER_HOME does not exist!”
# echo ‘Please set $ZOOKEEPER_HOME to the root of your ZooKeeper installation.’
# exit 1
#fi
修改/etc/profile環境變量文件(su root之后,sudo gedit /etc/profile):
添加?export SQOOP_HOME=/home/grid/sqoop
在原有PATH后添加?:$SQOOP_HOME/bin
步驟三,在mysql中建立測試用戶,測試表和數據,并測試sqoop連接mysql:
創建用戶sqoop并授權:
grant all privileges on *.* to 'sqoop'@'%' identified by 'sqoop' with grant option;
創建表空間(schema)sqoop,并創建測試表:
create table students (
id int not null primary key,
name varchar(20),
age int)
插入測試數據:
insert into students values('10001','liyang',29);
insert into students values('10002','lion',28);
insert into students values('10003','leon',26);
在masternode測試sqoop能否成功連接宿主機器上的mysql:
sqoop list-tables --connect jdbc:mysql://192.168.66.96:3306/sqoop --username sqoop --password sqoop
如果能正確顯示出sqoop表空間中的students表,就說明sqoop已經可以成功連接mysql!
步驟四,將mysql中sqoop表空間的students表的三行數據導入HDFS:
啟動hadoop
start-all.sh
用jps驗證啟動是否成功
顯示正在運行以下進程即為啟動成功:
2820 SecondaryNameNode
4539 Jps
2887 JobTracker
2595 NameNode
?
從mysql導入數據,運行如下命令
sqoop import --connect jdbc:mysql://192.168.66.96:3306/sqoop --username sqoop --password?sqoop?--table students -m 1
驗證導入數據是否成功:
若導入成功,運行?hadoop dfs -ls?將能看到根目錄/user/grid/下有以表名命名的文件夾students
運行?hadoop dfs -ls /user/grid/students?能看到該文件夾中包含文件:/user/grid/students/part-m-00000
運行?hadoop dfs -cat /user/grid/students/part-m-00000?就能看到該文件已經包含mysql中students表的三行數據:
10001,liyang,29
10002,lion,28
10003,leon,26
?
步驟五,將HDFS中的數據導入Mysql的students表中:
首先將mysql的students表數據清空:
delete from students;
然后在masternode上執行導出數據命令:
sqoop export --connect jdbc:mysql://192.168.66.96:3306/sqoop --username sqoop --password sqoop --table students --export-dir hdfs://masternode:9000/user/grid/students/part-m-00000
?
若成功,在mysql中會看到students表中的數據恢復了!
?
注意過程中可能會因為slavenode的50010端口沒打開而報錯,需用root用戶通過sudo ufw allow 50010命令打開端口!
二、Mysql與Hbase互導數據
將mysql的數據導入hbase的命令格式為:
sqoop import --connect jdbc:mysql://mysqlserver_IP/databaseName --username --password password --table datatable --hbase-create-table --hbase-table hbase_tablename --column-family col_fam_name --hbase-row-key key_col_name
其中 ,databaseName 和datatable 是mysql的數據庫和表名,hbase_tablename是要導成hbase的表名,key_col_name可以指定datatable中哪一列作為hbase新表的rowkey,col_fam_name是除rowkey之外的所有列的列族名
例如:可通過如下命令將Mysql中的students表導入到Hbase中:
/home/grid/sqoop/bin/sqoop import --connect jdbc:mysql://192.168.66.96/sqoop --username sqoop --password liyang16 --table students --hbase-create-table --hbase-table students --column-family stuinfo --hbase-row-key id
成功執行后,可在hbase中用以下命令查看結果:
hbase(main):011:0> scan 'students'
ROW COLUMN+CELL
10001 column=stuinfo:age, timestamp=1356759994058, value=29
10001 column=stuinfo:name, timestamp=1356759994058, value=liyang
10002 column=stuinfo:age, timestamp=1356760044478, value=28
10002 column=stuinfo:name, timestamp=1356760044478, value=lion
10003 column=stuinfo:age, timestamp=1356760044478, value=26
10003 column=stuinfo:name, timestamp=1356760044478, value=leon
3 row(s) in 0.0900 seconds
三、Oracle與Hbase互導數據
將Oracle中的dept表(列為id,name,addr)導出至hbase中的dept表(行鍵為id,列族為deptinfo)
sqoop import --append --connect jdbc:oracle:thin:@192.168.66.90:1521:orcl --username test --password test --m 1 --table dept --columns id,name,addr --hbase-create-table --hbase-table dept --hbase-row-key id --column-family deptinfo
?
-------------------------------------------------------------------------------------
注:以上所有命令均實測通過,只需修改參數即可執行!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539484.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539484.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539484.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android5.0新控件

谷歌在推出Android5.0的同時推出了一些新控件,Android5.0中最常用的新控件有下面5種。 1. CardView(卡片視圖) CardView顧名思義是卡片視圖,它繼承FrameLayout。它是一個帶圓角的背景和陰影FrameLayout。CardView被包裝為一種布局…

python中要使用導入全部的是什么符號-在python格式字符串中使用標點符號

這是因為您可以使用格式迷你語言來訪問對象的屬性.例如,我經常在自己的自定義類工作中使用它.假設我為每臺需要處理的計算機定義了一個類. class Computer(object): def __init__(self,IP): self.IP IP 而現在我想對整個計算機做一些事情 list_comps [Computer(name,"19…

oracle 讀懂10046視頻,10046、10053、實操記錄

10046是一個Oracle的內部事件(event),通過設置這個事件可以得到Oracle內部執行系統解析、調用、等待、綁定變量等詳細的trace信息,即幫助我們解析一條/多條SQL、PL/SQL語句的運行狀態,這些狀態包括:Parse/Fetch/Execute三個階段中…

linux重定向文件被修改后,Linux服務器修改.htaccess文件實現301重定向

出于 SEO、PR 值傳遞、網址轉換的目的,在網站初建和網站遷移時我們都需要使用 301 重定向,通常包括域名對域名,目錄對目錄和一個獨立網址對另一個獨立網址的重定向。在虛擬主機上作 301 重定向,最常用的方法有2種:第一…

Druid使用起步—在javaWeb項目中配置監控

原文章:http://my.oschina.net/u/568779/blog/152813 ---------------------------------------------------- druid wiki 當我們在javaWEB項目中使用到druid來作為我們的連接池的時候,一定不會忘了添加監控功能。下面我們就來看一下,在一個…

[譯] 想幫助用戶做決定?你的APP可以這樣設計!

原文地址:Design your app for decision-making原文作者:Jeni譯文出自:掘金翻譯計劃本文永久鏈接:github.com/xitu/gold-m…譯者:PTHFLY校對者:ryouaki想幫助用戶做決定?你的APP可以這樣設計&am…

ip地址管理系統_門禁監控管理系統項目總結

門禁監控管理系統項目總結1、門禁管理設備(IFACE802) 16臺 ,都有獨立的網線到控制的房間。IP地址從 192.168.1.101--192.168.1.116。(地下一層 新家的最后一間是在附近的一個房間接的網線。一層的大門 有1臺控制器和IFACE802 部署了2根網線)2、門禁控制的IP地址 192.168.1.1173…

linux mount命令銜接,Linux mount命令詳解:掛載Linux系統外的文件

Linux mount命令詳解:掛載Linux系統外的文件《Linux掛載》一節講到,所有的硬件設備必須掛載之后才能使用,只不過,有些硬件設備(比如硬盤分區)在每次系統啟動時會自動掛載,而有些(比如 U 盤、光盤)則需要手動進行掛載。…

targetFilterLifecycle的作用

targetFilterLifecycle的作用&#xff0c;有需要的朋友可以參考下。 在web.xml中進行配置&#xff0c;對所有的URL請求進行過濾&#xff0c;就像"擊鼓傳花"一樣&#xff0c;鏈式處理。 配置分為兩種A和B。 A:普通配置 在web.xml中增加如下內容&#xff1a;<fi…

平板電腦可以插u盤嗎_有手機還需要平板電腦嗎 酷比魔方iplay30平板電腦評測

原標題&#xff1a;有手機還需要平板電腦嗎 酷比魔方iplay30平板電腦評測一、前言&#xff1a;前段時間我們一幫60歲左右的退休老頭、老太太到農家樂去玩&#xff0c;玩累了就開始喝茶&#xff0c;一坐下來&#xff0c;人人都把手機掏出來&#xff0c;看著他們看手機的姿勢&…

[8086匯編]利用棧翻轉內存數據

assume cs:codesegcodeseg segmentdw 1h, 2h, 3h, 4h, 5h, 6h, 7h, 8h, 9hdw 9 dup(?)start:; 設置棧段mov ax, csmov ss, ax; 36 9 * 2 * 2mov sp, 36sub bx, bxmov cx, 9 s_push:mov ax, cs:[bx]push axadd bx, 2loop s_pushsub bx, bxmov cx, 9 s_pop:pop cs:[bx]add bx, …

面向多媒體 linux 版本,基于MX Linux 的 AV Linux 新版發布,此AV非彼AV

原標題&#xff1a;基于MX Linux 的 AV Linux 新版發布&#xff0c;此AV非彼AV作者&#xff1a;Linux迷鏈接&#xff1a;https://www.linuxmi.com/av-linux-2020-11-23-mx-linux-19-3.html經過六個多月的開發&#xff0c;面向多媒體的AV Linux發行版已發行了新版本&#xff0c;…

Spring的PropertyPlaceholderConfigurer應用

1. PropertyPlaceholderConfigurer是個bean工廠后置處理器的實現&#xff0c;也就是 BeanFactoryPostProcessor接口的一個實現。PropertyPlaceholderConfigurer可以將上下文&#xff08;配置文 件&#xff09;中的屬性值放在另一個單獨的標準java Properties文件中去。在XML文件…

safari瀏覽器_吹爆蘋果自帶瀏覽器Safari,沒有比它更貼心的瀏覽器了!!

大家一定覺得蘋果的很多自帶軟件很難用對不對&#xff1f;嘻嘻&#xff0c;我覺得這正是蘋果的魅力所在&#xff0c;它的很多產品與我們的正常使用習慣思維之間存在著一堵看不見的墻&#xff0c;只有當你你花點時間去研究、去駕馭它&#xff0c;把那堵墻給它推倒&#xff0c;然…

正則表達式知識詳解(轉自晴天碧日)

一、什么是正則表達式&#xff1f; 1.定義&#xff1a; 正則表達式(regular expression)描述了一種字符串匹配的模式&#xff0c;可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。構造正則表達式的方法和創建數學表達式的方法…

Spring tx:advice/

<tx:advice/> 有關的設置 這一節里將描述通過 <tx:advice/> 標簽來指定不同的事務性設置。默認的 <tx:advice/> 設置如下&#xff1a; 事務傳播設置是 REQUIRED 隔離級別是 DEFAULT 事務是 讀/寫 事務超時默認是依賴于事務系統的&#xff0c;或者事務超…

drcom linux怎么運行,linux下使用drcom登錄認證

下載首先感謝開發者:https://github.com/drcoms/drcom-generic這個項目基于python實現了d,p,x版drcom認證,請到上述鏈接查看相關信息,項目的wiki簡單介紹了各版本的使用方法.首先下載上面的drcom-generic,我將其下載到了家目錄~/下,完整目錄:~/drcom-generic取得必要信息下面啟…

升級瀏覽器_星愿瀏覽器升級至6.3.2000.2001

玩懂手機網資訊&#xff0c;星愿瀏覽器升級至6.3.2000.2001&#xff0c;可能很多玩友都不熟悉這款瀏覽器&#xff0c;星愿瀏覽器(Twinkstar Browser)是一款使用chromium內核來自一首英文歌曲《 Twinkle, twinkle, little star》&#xff0c;選twinkle的名詞twink&#xff0c;組…

js定時刷新時間

<p id"currentTime"> </p><script> document.getElementById("currentTime").innerHTML new Date();//初始化時間 var timing setInterval(function(){changeTime()},1000);//設置定時執行方法和執行頻率 function changeTime(){ docu…

mybatis3 添加ehcache支持

為了提高MyBatis的性能,有時候我們需要加入緩存支持,目前用的比較多的緩存莫過于ehcache緩存了,ehcache性能強大,而且位各種應用都提供了解決方案,在此我們主要是做查詢緩存,提高查詢的效率. 在Mybatis的官網上把集成ehcache的文檔下載下來看了看,說的太簡單了,對于新手很難理解…