Sqoop安裝配置與從mysql中導入數據到hbase

1.下載以下三個包:
 sqoop-1.2.0-CDH3B4.tar
 hadoop-0.20.2-CDH3B4.tar
 mysql-connector-java-5.1.18.tar
2.解壓sqoop包,配置/etc/profile的
 SQOOP_HOME爲解壓位置
 在PATH里加上$SQOOP_HOME/bin
 新建ZOOKEEPER_HOME爲HBASE裏zookeeper的jar包所在位置,我的是$HBASE_HOME/lib,好像在哪裏設置一下,就不用判斷ZOOKEEPER檢驗
3.解壓hadoop-0.20.2-CDH3B4.tar包,並將解壓後根目錄的hadoop-core-**.jar複製到sqoop的lib文件夾下,重命名成hadoop-mrunit-0.20.2-CDH***.jar,即將其替換掉,可以把之前的jar包加個_old後綴。我當前的hadoop版本是0.20.2,不用換hadoop版本,只需按本步操作即可
4.解壓mysql包將解壓後的jar包copy到sqoop的lib目錄,並將此jar文件路徑添加到classpath中
OK了,配置完畢

分佈式模式下導入MYSQL數據到HBASE:
1.安裝mysql,我的centos6系統安裝時便安裝了mysql
2.配置mysql,HADOOP權威指南上的例子15-1是本機模式,而分佈式模式必須將mysql的連接權限設給其他人,有兩種方法:
一種是
 GRANT ALL PRIVILEGES ON databaseName.* TO '%'@'%';   #允許所有用戶查看和修改databaseName數據庫模式的內容,否則別的IP連不上本MYSQL
 GRANT ALL PRIVILEGES ON databaseName.* TO ''@'%';  #不是很清楚,可能是匿名吧
另外一種是一個個的將權限賦給指定IP的用戶,這裏不說了
3.可以運行了
sqoop import --connect jdbc:mysql://mysqlserver_IP/databaseName --table testtable -m 1 
其中,   mysqlserver_IP是mysql服務器地址,databaseName是數據庫名,testtable是表名,-m 1 指定只用一個map任務,因爲我測試數據才3條記錄,默認4個map,這是導成文件格式,如果要導入到hbase中,則輸入下面的,最好將其寫在shell中:

sqoop import --connect jdbc:mysql://mysqlserver_IP/databaseName --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之外的所有列的列族名
切記:--connect jdbc:mysql://mysqlserver_IP/databaseName : 非單機模式下,必須寫成mysql服務器地址,不能用localhost,整了很久才發現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章