日期:2014-05-16  浏览次数:20450 次

使用sqoop将MySQL数据库中的数据导入Hbase

前提:安装好 sqoop、hbase。

下载jbdc驱动:mysql-connector-java-5.1.10.jar

将?mysql-connector-java-5.1.10.jar?复制到 /usr/lib/sqoop/lib/ 下

MySQL导入HBase命令:
sqoop import --connect jdbc:mysql://10.10.97.116:3306/rsearch --table researchers --hbase-table A --column-family person --hbase-row-key id --hbase-create-table --username 'root' -P

说明:
--connect jdbc:mysql://10.10.97.116:3306/rsearch 表示远程或者本地 Mysql 服务的URI,3306是Mysql默认监听端口,rsearch是数据库,若是其他数据库,如Oracle,只需修改URI即可。
--table researchers ?表示导出rsearch数据库的researchers表。
--hbase-table A ?表示在HBase中建立表A。
--column-family person 表示在表A中建立列族person。
--hbase-row-key id ?表示表A的row-key是researchers表的id字段。
--hbase-create-table 表示在HBase中建立表。
--username 'root' 表示使用用户root连接Mysql。

注意:

HBase的所有节点必须能够访问MySQL数据库,不然会出现如下错误:
java.sql.SQLException: null, ?message from server: "Host '10.10.104.3' is not allowed to connect to this MySQL server"

?


  1. 在MySQL数据库服务器节点上执行以下命令允许远程机器使用相应用户访问本地数据库服务器:??
  2. [root@gc01vm6?htdocs]?#?/opt/lampp/bin/mysql??
  3. ??
  4. mysql>?use?mysql;??
  5. Database?changed??
  6. mysql>?GRANT?ALL?PRIVILEGES?ON?rsearch.*?TO?'root'@'10.10.104.3'?IDENTIFIED?BY?''?WITH?GRANT?OPTION;???
  7. mysql>?GRANT?ALL?PRIVILEGES?ON?rsearch.*?TO?'root'@'10.10.104.5'?IDENTIFIED?BY?''?WITH?GRANT?OPTION;???
  8. mysql>?GRANT?ALL?PRIVILEGES?ON?rsearch.*?TO?'root'@'10.10.104.2'?IDENTIFIED?BY?''?WITH?GRANT?OPTION;???


这里10.10.104.2,10.10.104.3,10.10.104.5 是HBase节点。

-------------------------------------------------------------


MySQL导入HBase的日志:

[root@gd02 hadoop]# sqoop import --connect jdbc:mysql://10.10.97.116:3306/rsearch --table researchers --hbase-table A --column-family person --hbase-row-key id --hbase-create-table --username 'root' -P
Enter password:?
11/06/29 19:08:00 INFO tool.CodeGenTool: Beginning code generation
11/06/29 19:08:00 INFO manager.MySQLManager: Executing SQL statement: SELECT t.* FROM `researchers` AS t LIMIT 1
11/06/29 19:08:00 INFO manager.MySQLManager: Executing SQL statement: SELECT t.* FROM `researchers` AS t LIMIT 1
11/06/29 19:08:00 INFO orm.CompilationManager: HADOOP_HOME is /usr/lib/hadoop
11/06/29 19:08:00 INFO orm.CompilationManager: Found hadoop core jar at: /usr/lib/hadoop/hadoop-core.jar
Note: /tmp/sqoop-root/compile/d4dd4cb4e1e325fce31ca72c00a5589c/researchers.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
11/06/29 19:08:02 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-root/compile/d4dd4cb4e1e325fce31ca72c00a5589c/researchers.jar
11/06/29 19:08:02 WARN manager.MySQLManager: It looks like you are importing from mysql.
11/06/29 19:08:02 WARN manager.MySQLManager: This transfer can be faster! Use the --direct
11/06/29 19:08:02 WARN manager.MySQLManager: option to exercise a MySQL-specific fast path.
11/06/29 19:08:02 INFO manager.MySQLManager: Setting zero DATETIME behavior to convertToNull (mysql)
11/06/29 19:08:02 INFO