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,整了很久才发现

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