sqoop的安装、配置及使用简介

Sqoop的安装和配置

  • 下载sqoop和hadoop:wget http://archive.cloudera.com/cdh/3/sqoop-1.3.0-cdh3u1.tar.gz
                                        wget http://archive.cloudera.com/cdh/3/hadoop-0.20.2-cdh3u1.tar.gz
  • 解压:tar zxvf sqoop-1.3.0-cdh3u1.tar.gz
                tar zxvf hadoop-0.20.2-cdh3u1.tar.gz
  • 设置环境变量:export SQOOP_HOME=XXXXX
  • 将Hadoop的hadoop-core-0.20.2-cdh3u1.jar、HBase的hbase-XXX.jar、ZooKeeper的zookeeper-XXX.jar以及MySQL的mysql-connector-java-XXXX-bin.jar拷贝到Sqoop的lib目录下
  • 设置要远程访问的MySQL数据库的权限:
[sql]  view plain copy
  1. [root@test1 bin]# /usr/local/mysql/bin/mysql -u root -p  
  2. Enter password:   
  3. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  4. Your MySQL connection id is 110  
  5. Server version: 5.1.59 MySQL Community Server (GPL)  
  6.   
  7.   
  8. Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.  
  9.   
  10.   
  11. Oracle is a registered trademark of Oracle Corporation and/or its  
  12. affiliates. Other names may be trademarks of their respective  
  13. owners.  
  14.   
  15.   
  16. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  17.   
  18.   
  19. mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;  
  20. Query OK, 0 rows affected (0.00 sec)  
  21.   
  22.   
  23. mysql> flush privileges;  
  24. Query OK, 0 rows affected (0.01 sec)  

sqoop的简单使用

连接MySQL数据库

查看MySQL的数据库
[sql]  view plain copy
  1. sqoop list-databases --connect jdbc:mysql://IP:PORT/ --username USER --password PASSWD   
  2. sqoop list-databases --connect jdbc:mysql://IP:PORT/ --username USER -P   (此方式更加安全一点)  

[sql]  view plain copy
  1. [root@test1 bin]# sqoop list-databases --connect jdbc:mysql://IP:PORT/ --username root -P             
  2. Enter password:   
  3. 12/06/04 07:56:48 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.  
  4. information_schema  
  5. hive_metastore  
  6. mysql  
  7. test  

查看数据库中的表

[sql]  view plain copy
  1. sqoop list-tables --connect jdbc:mysql://IP:PORT/database --username USER -P  
[sql]  view plain copy
  1. [root@test1 bin]# sqoop list-tables --connect jdbc:mysql://IP:PORT/mysql --username root -P    
  2. Enter password:   
  3. 12/06/04 07:55:57 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.  
  4. columns_priv  
  5. db  
  6. event  
  7. func  
  8. general_log  
  9. help_category  
  10. help_keyword  
  11. help_relation  
  12. help_topic  
  13. host  
  14. ndb_binlog_index  
  15. plugin  
  16. proc  
  17. procs_priv  
  18. servers  
  19. slow_log  
  20. tables_priv  
  21. time_zone  
  22. time_zone_leap_second  
  23. time_zone_name  
  24. time_zone_transition  
  25. time_zone_transition_type  
  26. user  

sqoop-imoprt : RMDBS——>DFS

将mysql的test库中的表students的数据导到DFS上

  • --connect : 要连接的数据库JDBC-URL
  • --username:登录数据库的用户名
  • --password:登录数据的密码
  • --table : 需要导出的表
  • --target-dir :目标目录
  • --split-by:字段的分隔符

[sql]  view plain copy
  1. [root@test1 bin]# sqoop import --verbose --fields-terminated-by ','  --connect jdbc:mysql://IP:PORT/test --username root --password PASSWD --table students --target-dir /test/students --split-by 'age'  
  2. 12/06/04 11:52:07 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.  
  3. 12/06/04 11:52:07 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.  
  4. 12/06/04 11:52:07 INFO tool.CodeGenTool: Beginning code generation  
  5. 12/06/04 11:52:07 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  6. 12/06/04 11:52:07 INFO orm.CompilationManager: HADOOP_HOME is /usr/local/hadoop/install/bin/..  
  7. Note: /tmp/sqoop-root/compile/821690e0ecd4932aeddf6b4ad1252aa0/students.java uses or overrides a deprecated API.  
  8. Note: Recompile with -Xlint:deprecation for details.  
  9. 12/06/04 11:52:14 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-root/compile/821690e0ecd4932aeddf6b4ad1252aa0/students.jar  
  10. 12/06/04 11:52:14 WARN manager.MySQLManager: It looks like you are importing from mysql.  
  11. 12/06/04 11:52:14 WARN manager.MySQLManager: This transfer can be faster! Use the --direct  
  12. 12/06/04 11:52:14 WARN manager.MySQLManager: option to exercise a MySQL-specific fast path.  
  13. 12/06/04 11:52:14 INFO manager.MySQLManager: Setting zero DATETIME behavior to convertToNull (mysql)  
  14. 12/06/04 11:52:14 INFO mapreduce.ImportJobBase: Beginning import of students  
  15. 12/06/04 11:52:56 INFO db.DataDrivenDBInputFormat: BoundingValsQuery: SELECT MIN(`age`), MAX(`age`) FROM `students`  
  16. 12/06/04 11:52:57 INFO mapred.JobClient: Running job: job_201206040901_0014  
  17. 12/06/04 11:52:58 INFO mapred.JobClient:  map 0% reduce 0%  
  18. 12/06/04 11:54:04 INFO mapred.JobClient:  map 100% reduce 0%  
  19. 12/06/04 11:54:18 INFO mapred.JobClient: Job complete: job_201206040901_0014  
  20. 12/06/04 11:54:18 INFO mapred.JobClient: Counters: 14  
  21. 12/06/04 11:54:18 INFO mapred.JobClient:   Job Counters   
  22. 12/06/04 11:54:18 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=35427  
  23. 12/06/04 11:54:18 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0  
  24. 12/06/04 11:54:18 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0  
  25. 12/06/04 11:54:18 INFO mapred.JobClient:     Launched map tasks=1  
  26. 12/06/04 11:54:18 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=0  
  27. 12/06/04 11:54:18 INFO mapred.JobClient:   File Output Format Counters   
  28. 12/06/04 11:54:18 INFO mapred.JobClient:     Bytes Written=21  
  29. 12/06/04 11:54:18 INFO mapred.JobClient:   FileSystemCounters  
  30. 12/06/04 11:54:18 INFO mapred.JobClient:     GFS_BYTES_WRITTEN=21  
  31. 12/06/04 11:54:18 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=39425  
  32. 12/06/04 11:54:18 INFO mapred.JobClient:     GFS_BYTES_READ=106  
  33. 12/06/04 11:54:18 INFO mapred.JobClient:   File Input Format Counters   
  34. 12/06/04 11:54:18 INFO mapred.JobClient:     Bytes Read=0  
  35. 12/06/04 11:54:18 INFO mapred.JobClient:   Map-Reduce Framework  
  36. 12/06/04 11:54:18 INFO mapred.JobClient:     Map input records=2  
  37. 12/06/04 11:54:18 INFO mapred.JobClient:     Spilled Records=0  
  38. 12/06/04 11:54:18 INFO mapred.JobClient:     Map output records=2  
  39. 12/06/04 11:54:18 INFO mapred.JobClient:     SPLIT_RAW_BYTES=103  
  40. 12/06/04 11:54:18 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 123.2224 seconds (0 bytes/sec)  
  41. 12/06/04 11:54:18 INFO mapreduce.ImportJobBase: Retrieved 2 records.  
查看DFS上的数据是否和mysql中的数据一致:
[sql]  view plain copy
  1. [root@test1 bin]# hadoop fs -ls /test/students  
  2. Found 3 items  
  3. -rwxrwxrwx   2          0 2012-06-04 11:54 /test/students/_SUCCESS  
  4. drwxrwxrwx   -          0 2012-06-04 11:52 /test/students/_logs  
  5. -rwxrwxrwx   2         21 2012-06-04 11:53 /test/students/part-m-00000  
  6. [root@test1 bin]# hadoop fs -cat /test/students/part-m-00000  
  7. aaaaaa,26  
  8. bbbbbb,27  
  9. [root@test1 bin]#   
[sql]  view plain copy
  1. [root@test1 conf]# /usr/local/mysql/bin/mysql -uUSER -pPASSWD  
  2. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  3. Your MySQL connection id is 230  
  4. Server version: 5.1.59 MySQL Community Server (GPL)  
  5.   
  6. Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.  
  7.   
  8. Oracle is a registered trademark of Oracle Corporation and/or its  
  9. affiliates. Other names may be trademarks of their respective  
  10. owners.  
  11.   
  12. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  13.   
  14. mysql> select * from test.students;  
  15. +---------+------+  
  16. name    | age  |  
  17. +---------+------+  
  18. | aaaaaa  |   26 |  
  19. | bbbbbb  |   27 |  
  20. +---------+------+  
  21. rows in set (0.01 sec)  
  22.   
  23. mysql>   

sqoop-export:DFS——>RMDBS

将数据从DFS导入到MySQL

[sql]  view plain copy
  1. [root@test1 bin]# sqoop export --connect jdbc:mysql://IP:PORT/test --username USER --password PASSWD --table students --export-dir /test/students/ --input-fields-terminated-by '\t'             
  2. 12/06/04 12:31:49 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.  
  3. 12/06/04 12:31:49 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.  
  4. 12/06/04 12:31:49 INFO tool.CodeGenTool: Beginning code generation  
  5. 12/06/04 12:31:49 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  6. 12/06/04 12:31:50 INFO orm.CompilationManager: HADOOP_HOME is /usr/local/hadoop/install/bin/..  
  7. Note: /tmp/sqoop-root/compile/546460e114dd8311c4a1dc80cac7419b/students.java uses or overrides a deprecated API.  
  8. Note: Recompile with -Xlint:deprecation for details.  
  9. 12/06/04 12:32:01 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-root/compile/546460e114dd8311c4a1dc80cac7419b/students.jar  
  10. 12/06/04 12:32:01 INFO mapreduce.ExportJobBase: Beginning export of students  
  11. 12/06/04 12:32:40 INFO input.FileInputFormat: Total input paths to process : 1  
  12. 12/06/04 12:32:40 INFO input.FileInputFormat: Total input paths to process : 1  
  13. 12/06/04 12:32:41 INFO mapred.JobClient: Running job: job_201206040901_0021  
  14. 12/06/04 12:32:42 INFO mapred.JobClient:  map 0% reduce 0%  
  15. 12/06/04 12:33:27 INFO mapred.JobClient:  map 100% reduce 0%  
  16. 12/06/04 12:33:38 INFO mapred.JobClient: Job complete: job_201206040901_0021  
  17. 12/06/04 12:33:39 INFO mapred.JobClient: Counters: 14  
  18. 12/06/04 12:33:39 INFO mapred.JobClient:   Job Counters   
  19. 12/06/04 12:33:39 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=20935  
  20. 12/06/04 12:33:39 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0  
  21. 12/06/04 12:33:39 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0  
  22. 12/06/04 12:33:39 INFO mapred.JobClient:     Rack-local map tasks=1  
  23. 12/06/04 12:33:39 INFO mapred.JobClient:     Launched map tasks=1  
  24. 12/06/04 12:33:39 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=0  
  25. 12/06/04 12:33:39 INFO mapred.JobClient:   File Output Format Counters   
  26. 12/06/04 12:33:39 INFO mapred.JobClient:     Bytes Written=0  
  27. 12/06/04 12:33:39 INFO mapred.JobClient:   FileSystemCounters  
  28. 12/06/04 12:33:39 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=39238  
  29. 12/06/04 12:33:39 INFO mapred.JobClient:     GFS_BYTES_READ=148  
  30. 12/06/04 12:33:39 INFO mapred.JobClient:   File Input Format Counters   
  31. 12/06/04 12:33:39 INFO mapred.JobClient:     Bytes Read=0  
  32. 12/06/04 12:33:39 INFO mapred.JobClient:   Map-Reduce Framework  
  33. 12/06/04 12:33:39 INFO mapred.JobClient:     Map input records=2  
  34. 12/06/04 12:33:39 INFO mapred.JobClient:     Spilled Records=0  
  35. 12/06/04 12:33:39 INFO mapred.JobClient:     Map output records=2  
  36. 12/06/04 12:33:39 INFO mapred.JobClient:     SPLIT_RAW_BYTES=108  
  37. 12/06/04 12:33:39 INFO mapreduce.ExportJobBase: Transferred 0 bytes in 96.3916 seconds (0 bytes/sec)  
  38. 12/06/04 12:33:39 INFO mapreduce.ExportJobBase: Exported 2 records.  

查看DFS上的数据是否已经导入mysql:

[sql]  view plain copy
  1. [root@test1 bin]# hadoop fs -cat /test/students/part-m*  
  2. cccccc  26  
  3. dddddd  24  
[sql]  view plain copy
  1. [root@test1 bin]# /usr/local/mysql/bin/mysql -uUSER -pPASSWD  
  2. Welcome to the MySQL monitor.  Commands end with ; or \g.  
  3. Your MySQL connection id is 262  
  4. Server version: 5.1.59 MySQL Community Server (GPL)  
  5.   
  6. Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.  
  7.   
  8. Oracle is a registered trademark of Oracle Corporation and/or its  
  9. affiliates. Other names may be trademarks of their respective  
  10. owners.  
  11.   
  12. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  13.   
  14. mysql> select * from test.students;  
  15. +---------+------+  
  16. name    | age  |  
  17. +---------+------+  
  18. | aaaaaa  |   26 |  
  19. | bbbbbb  |   27 |  
  20. | cccccc  |   26 |  
  21. | dddddd  |   24 |  
  22. +---------+------+  
  23. rows in set (0.00 sec)  
  24.   
  25. mysql>   

选取一定条件的数据导入DFS

[sql]  view plain copy
  1. sqoop import --connect jdbc:mysql://IP:PORT/test --username USER --password PASSWD --query 'SELECT * FROM students WHERE age=26 AND $CONDITIONS' -m 1 --target-dir /test/student26       
  2. 12/06/05 05:53:55 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.  
  3. 12/06/05 05:53:55 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.  
  4. 12/06/05 05:53:55 INFO tool.CodeGenTool: Beginning code generation  
  5. 12/06/05 05:53:56 INFO manager.SqlManager: Executing SQL statement: SELECT * FROM students WHERE age=26 AND  (1 = 0)   
  6. 12/06/05 05:53:56 INFO manager.SqlManager: Executing SQL statement: SELECT * FROM students WHERE age=26 AND  (1 = 0)   
  7. 12/06/05 05:53:56 INFO orm.CompilationManager: HADOOP_HOME is /usr/local/hadoop/install/bin/..  
  8. 12/06/05 05:54:06 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-root/compile/38bfade178cccb8dfaa2b31c2502eec3/QueryResult.jar  
  9. 12/06/05 05:54:06 INFO mapreduce.ImportJobBase: Beginning query import.  
  10. 12/06/05 05:54:38 INFO mapred.JobClient: Running job: job_201206040901_0033  
  11. 12/06/05 05:54:39 INFO mapred.JobClient:  map 0% reduce 0%  
  12. 12/06/05 05:55:11 INFO mapred.JobClient:  map 100% reduce 0%  
  13. 12/06/05 05:55:19 INFO mapred.JobClient: Job complete: job_201206040901_0033  
  14. 12/06/05 05:55:19 INFO mapred.JobClient: Counters: 14  
  15. 12/06/05 05:55:19 INFO mapred.JobClient:   Job Counters   
  16. 12/06/05 05:55:19 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=21246  
  17. 12/06/05 05:55:19 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0  
  18. 12/06/05 05:55:19 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0  
  19. 12/06/05 05:55:19 INFO mapred.JobClient:     Launched map tasks=1  
  20. 12/06/05 05:55:19 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=0  
  21. 12/06/05 05:55:19 INFO mapred.JobClient:   File Output Format Counters   
  22. 12/06/05 05:55:19 INFO mapred.JobClient:     Bytes Written=20  
  23. 12/06/05 05:55:19 INFO mapred.JobClient:   FileSystemCounters  
  24. 12/06/05 05:55:19 INFO mapred.JobClient:     GFS_BYTES_WRITTEN=20  
  25. 12/06/05 05:55:19 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=32065  
  26. 12/06/05 05:55:19 INFO mapred.JobClient:     GFS_BYTES_READ=90  
  27. 12/06/05 05:55:19 INFO mapred.JobClient:   File Input Format Counters   
  28. 12/06/05 05:55:19 INFO mapred.JobClient:     Bytes Read=0  
  29. 12/06/05 05:55:19 INFO mapred.JobClient:   Map-Reduce Framework  
  30. 12/06/05 05:55:19 INFO mapred.JobClient:     Map input records=2  
  31. 12/06/05 05:55:19 INFO mapred.JobClient:     Spilled Records=0  
  32. 12/06/05 05:55:19 INFO mapred.JobClient:     Map output records=2  
  33. 12/06/05 05:55:19 INFO mapred.JobClient:     SPLIT_RAW_BYTES=87  
  34. 12/06/05 05:55:19 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 72.4785 seconds (0 bytes/sec)  
  35. 12/06/05 05:55:19 INFO mapreduce.ImportJobBase: Retrieved 2 records.  
如果--query 后面的SQL语句带有WHERE,则一定要加上 (AND $CONDITIONS),否则会出错。

到目前为止已经可以实现MySQL和DFS之间相互导数据了,可以先凑合着用了。


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

[plain]  view plain copy
  1. sqoop import --connect jdbc:mysql://IP:PORT/test --table students --hbase-table sqoop_test --column-family st_info --hbase-row-key id --hbase-create-table --username USER --password PASSWD  
  2. 12/06/13 15:09:10 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.  
  3. 12/06/13 15:09:10 INFO tool.CodeGenTool: Beginning code generation  
  4. 12/06/13 15:09:11 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  5. 12/06/13 15:09:11 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  6. 12/06/13 15:09:11 INFO orm.CompilationManager: HADOOP_HOME is /usr/local/hadoop/install/bin/..  
  7. 12/06/13 15:09:18 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-root/compile/807268e14873b072ec8b9a9e7f46f326/students.jar  
  8. 12/06/13 15:09:18 WARN manager.MySQLManager: It looks like you are importing from mysql.  
  9. 12/06/13 15:09:18 WARN manager.MySQLManager: This transfer can be faster! Use the --direct  
  10. 12/06/13 15:09:18 WARN manager.MySQLManager: option to exercise a MySQL-specific fast path.  
  11. 12/06/13 15:09:18 INFO manager.MySQLManager: Setting zero DATETIME behavior to convertToNull (mysql)  
  12. 12/06/13 15:09:18 INFO mapreduce.ImportJobBase: Beginning import of students  
  13. 12/06/13 15:09:19 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  14. 12/06/13 15:09:20 INFO zookeeper.ZooKeeper: Session: 0x437cf07b9a50013 closed  
  15. 12/06/13 15:09:20 INFO mapreduce.HBaseImportJob: Creating missing HBase table sqoop_test  
  16. 12/06/13 15:09:20 INFO zookeeper.ClientCnxn: EventThread shut down  
  17. 12/06/13 15:09:54 INFO db.DataDrivenDBInputFormat: BoundingValsQuery: SELECT MIN(`id`), MAX(`id`) FROM `students`  
  18. 12/06/13 15:09:56 INFO mapred.JobClient: Running job: job_201206131415_0002  
  19. 12/06/13 15:09:57 INFO mapred.JobClient:  map 0% reduce 0%  
  20. 12/06/13 15:10:29 INFO mapred.JobClient:  map 33% reduce 0%  
  21. 12/06/13 15:10:54 INFO mapred.JobClient:  map 66% reduce 0%  
  22. 12/06/13 15:10:58 INFO mapred.JobClient:  map 100% reduce 0%  
  23. 12/06/13 15:11:09 INFO mapred.JobClient: Job complete: job_201206131415_0002  
  24. 12/06/13 15:11:09 INFO mapred.JobClient: Counters: 13  
  25. 12/06/13 15:11:09 INFO mapred.JobClient:   Job Counters   
  26. 12/06/13 15:11:09 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=48737  
  27. 12/06/13 15:11:09 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0  
  28. 12/06/13 15:11:09 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0  
  29. 12/06/13 15:11:09 INFO mapred.JobClient:     Launched map tasks=3  
  30. 12/06/13 15:11:09 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=0  
  31. 12/06/13 15:11:09 INFO mapred.JobClient:   File Output Format Counters   
  32. 12/06/13 15:11:09 INFO mapred.JobClient:     Bytes Written=0  
  33. 12/06/13 15:11:09 INFO mapred.JobClient:   FileSystemCounters  
  34. 12/06/13 15:11:09 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=124270  
  35. 12/06/13 15:11:09 INFO mapred.JobClient:     GFS_BYTES_READ=304  
  36. 12/06/13 15:11:09 INFO mapred.JobClient:   File Input Format Counters   
  37. 12/06/13 15:11:09 INFO mapred.JobClient:     Bytes Read=0  
  38. 12/06/13 15:11:09 INFO mapred.JobClient:   Map-Reduce Framework  
  39. 12/06/13 15:11:09 INFO mapred.JobClient:     Map input records=4  
  40. 12/06/13 15:11:09 INFO mapred.JobClient:     Spilled Records=0  
  41. 12/06/13 15:11:09 INFO mapred.JobClient:     Map output records=4  
  42. 12/06/13 15:11:09 INFO mapred.JobClient:     SPLIT_RAW_BYTES=295  
  43. 12/06/13 15:11:09 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 103.0751 seconds (0 bytes/sec)  
  44. 12/06/13 15:11:09 INFO mapreduce.ImportJobBase: Retrieved 4 records.  
到hbase中查看结果:
[plain]  view plain copy
  1. hbase(main):004:0> list  
  2. TABLE                                                                                                                                          
  3. sqoop_test                                                                                                                                     
  4. 1 row(s) in 0.7200 seconds  
  5.   
  6. hbase(main):005:0> scan 'sqoop_test'  
  7. ROW                                  COLUMN+CELL                                                                                               
  8.  1                                   column=st_info:age, timestamp=1339571427057, value=26                                                     
  9.  1                                   column=st_info:name, timestamp=1339571427057, value=aaaaaa                                                
  10.  2                                   column=st_info:age, timestamp=1339571450535, value=27                                                     
  11.  2                                   column=st_info:name, timestamp=1339571450535, value=bbbbbb                                               
  12.  3                                   column=st_info:age, timestamp=1339571451670, value=26                                                     
  13.  3                                   column=st_info:name, timestamp=1339571451670, value=cccccc                                                
  14.  4                                   column=st_info:age, timestamp=1339571451670, value=24                                                     
  15.  4                                   column=st_info:name, timestamp=1339571451670, value=dddddd                                                
  16. 4 row(s) in 0.5560 seconds  
  17.   
  18. hbase(main):006:0>   


性能测试

1)MySQL导向DFS

数据库表sqoop_test:
[sql]  view plain copy
  1. mysql> desc relation ;  
  2. +-----------------+------------------+------+-----+---------+-------+  
  3. | Field           | Type             | Null | Key | Default | Extra |  
  4. +-----------------+------------------+------+-----+---------+-------+  
  5. | cid             | varchar(40)      |      |     |         |       |  
  6. | recommended_cid | varchar(40)      |      |     |         |       |  
  7. | similarity      | int(10) unsigned |      |     | 0       |       |  
  8. +-----------------+------------------+------+-----+---------+-------+  
  9. rows in set (0.00 sec)  
  10.   
  11. mysql> select count(*) from relation;  
  12. +----------+  
  13. count(*) |  
  14. +----------+  
  15. | 23512528 |  
  16. +----------+  
  17. 1 row in set (0.00 sec)  
测试结果如下表所示:
sqoop_from_mysql_to_dfs
split-by map num time
cid 6 4m16.053s
cid 12 2m36.905s
[sql]  view plain copy
  1. similarity   
4 3m36.390s
[sql]  view plain copy
  1. similarity  
10 2m5.120s

注:推荐--sqlit-by的参数为整数类型的:
[java]  view plain copy
  1. 12/06/11 17:03:16 WARN db.TextSplitter: You are strongly encouraged to choose an integral split column.  

2)DFS导向MySQL
数据还是和上述的数据一样,总共23512528行记录。
测试结果如下表所示:
sqoop_from_dfs_to_mysql
map num time
4 42m56.324s
10 41m31.888s

在往Hive导数据的过程中遇到下面的问题,目前还未找到解决方法
[java]  view plain copy
  1. [root@test1 ~]# sqoop import --connect jdbc:mysql://IP:PORT/test --username USER --password PASSWD --table students --input-fields-terminated-by '\t' --hive-import -m 1  
  2. 12/06/05 06:34:32 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.  
  3. 12/06/05 06:34:32 INFO tool.BaseSqoopTool: Using Hive-specific delimiters for output. You can override  
  4. 12/06/05 06:34:32 INFO tool.BaseSqoopTool: delimiters with --fields-terminated-by, etc.  
  5. 12/06/05 06:34:32 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.  
  6. 12/06/05 06:34:32 INFO tool.CodeGenTool: Beginning code generation  
  7. 12/06/05 06:34:33 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  8. 12/06/05 06:34:33 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  9. 12/06/05 06:34:33 INFO orm.CompilationManager: HADOOP_HOME is /usr/local/hadoop/install/bin/..  
  10. 12/06/05 06:34:39 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-root/compile/97263d4aeecd15c92e0b3d570c3aa024/students.jar  
  11. 12/06/05 06:34:39 WARN manager.MySQLManager: It looks like you are importing from mysql.  
  12. 12/06/05 06:34:39 WARN manager.MySQLManager: This transfer can be faster! Use the --direct  
  13. 12/06/05 06:34:39 WARN manager.MySQLManager: option to exercise a MySQL-specific fast path.  
  14. 12/06/05 06:34:39 INFO manager.MySQLManager: Setting zero DATETIME behavior to convertToNull (mysql)  
  15. 12/06/05 06:34:39 INFO mapreduce.ImportJobBase: Beginning import of students  
  16. 12/06/05 06:34:40 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  17. 12/06/05 06:35:08 INFO mapred.JobClient: Running job: job_201206040901_0035  
  18. 12/06/05 06:35:09 INFO mapred.JobClient:  map 0% reduce 0%  
  19. 12/06/05 06:35:52 INFO mapred.JobClient:  map 100% reduce 0%  
  20. 12/06/05 06:36:03 INFO mapred.JobClient: Job complete: job_201206040901_0035  
  21. 12/06/05 06:36:03 INFO mapred.JobClient: Counters: 14  
  22. 12/06/05 06:36:03 INFO mapred.JobClient:   Job Counters   
  23. 12/06/05 06:36:03 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=28519  
  24. 12/06/05 06:36:03 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0  
  25. 12/06/05 06:36:03 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0  
  26. 12/06/05 06:36:03 INFO mapred.JobClient:     Launched map tasks=1  
  27. 12/06/05 06:36:03 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=0  
  28. 12/06/05 06:36:03 INFO mapred.JobClient:   File Output Format Counters   
  29. 12/06/05 06:36:03 INFO mapred.JobClient:     Bytes Written=41  
  30. 12/06/05 06:36:03 INFO mapred.JobClient:   FileSystemCounters  
  31. 12/06/05 06:36:03 INFO mapred.JobClient:     GFS_BYTES_WRITTEN=41  
  32. 12/06/05 06:36:03 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=31978  
  33. 12/06/05 06:36:03 INFO mapred.JobClient:     GFS_BYTES_READ=90  
  34. 12/06/05 06:36:03 INFO mapred.JobClient:   File Input Format Counters   
  35. 12/06/05 06:36:03 INFO mapred.JobClient:     Bytes Read=0  
  36. 12/06/05 06:36:03 INFO mapred.JobClient:   Map-Reduce Framework  
  37. 12/06/05 06:36:03 INFO mapred.JobClient:     Map input records=4  
  38. 12/06/05 06:36:03 INFO mapred.JobClient:     Spilled Records=0  
  39. 12/06/05 06:36:03 INFO mapred.JobClient:     Map output records=4  
  40. 12/06/05 06:36:03 INFO mapred.JobClient:     SPLIT_RAW_BYTES=87  
  41. 12/06/05 06:36:03 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 83.3192 seconds (0 bytes/sec)  
  42. 12/06/05 06:36:03 INFO mapreduce.ImportJobBase: Retrieved 4 records.  
  43. 12/06/05 06:36:03 INFO hive.HiveImport: Removing temporary files from import process: students/_logs  
  44. 12/06/05 06:36:03 INFO hive.HiveImport: Loading uploaded data into Hive  
  45. 12/06/05 06:36:03 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  46. 12/06/05 06:36:03 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `students` AS t LIMIT 1  
  47. hive-log4j.properties not found  
  48. Hive history file=/tmp/root/hive_job_log_root_201206050636_1946485104.txt  
  49. 12/06/05 06:36:05 INFO exec.HiveHistory: Hive history file=/tmp/root/hive_job_log_root_201206050636_1946485104.txt  
  50. 12/06/05 06:36:05 INFO parse.ParseDriver: Parsing command: CREATE TABLE IF NOT EXISTS `students` ( `name` STRING, `age` INT) COMMENT 'Imported by sqoop on 2012/06/05 06:36:03' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' LINES TERMINATED BY '\012' STORED AS TEXTFILE  
  51. 12/06/05 06:36:06 INFO parse.ParseDriver: Parse Completed  
  52. 12/06/05 06:36:06 INFO parse.SemanticAnalyzer: Starting Semantic Analysis  
  53. 12/06/05 06:36:06 INFO parse.SemanticAnalyzer: Creating table students position=27  
  54. org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.IllegalArgumentException: URI:  does not have a scheme  
  55.         at org.apache.hadoop.hive.ql.metadata.Hive.getTablesByPattern(Hive.java:919)  
  56.         at org.apache.hadoop.hive.ql.metadata.Hive.getTablesByPattern(Hive.java:904)  
  57.         at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeCreateTable(SemanticAnalyzer.java:7074)  
  58.         at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:6573)  
  59.         at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:238)  
  60.         at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:340)  
  61.         at org.apache.hadoop.hive.ql.Driver.run(Driver.java:736)  
  62.         at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:164)  
  63.         at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:241)  
  64.         at org.apache.hadoop.hive.cli.CliDriver.processReader(CliDriver.java:262)  
  65.         at org.apache.hadoop.hive.cli.CliDriver.processFile(CliDriver.java:269)  
  66.         at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:430)  
  67.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  68.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
  69.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  70.         at java.lang.reflect.Method.invoke(Method.java:616)  
  71.         at com.cloudera.sqoop.hive.HiveImport.executeScript(HiveImport.java:270)  
  72.         at com.cloudera.sqoop.hive.HiveImport.importTable(HiveImport.java:218)  
  73.         at com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:362)  
  74.         at com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:423)  
  75.         at com.cloudera.sqoop.Sqoop.run(Sqoop.java:144)  
  76.         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)  
  77.         at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:180)  
  78.         at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:219)  
  79.         at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:228)  
  80.         at com.cloudera.sqoop.Sqoop.main(Sqoop.java:237)  
  81. Caused by: java.lang.IllegalArgumentException: URI:  does not have a scheme  
  82.         at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.(HiveMetaStoreClient.java:127)  
  83.         at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:1868)  
  84.         at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:1878)  
  85.         at org.apache.hadoop.hive.ql.metadata.Hive.getTablesByPattern(Hive.java:917)  
  86.         ... 25 more  
  87. 12/06/05 06:36:06 INFO ql.Driver: Semantic Analysis Completed  
  88. 12/06/05 06:36:06 INFO ql.Driver: Returning Hive schema: Schema(fieldSchemas:null, properties:null)  
  89. 12/06/05 06:36:06 INFO ql.Driver: Starting command: CREATE TABLE IF NOT EXISTS `students` ( `name` STRING, `age` INT) COMMENT 'Imported by sqoop on 2012/06/05 06:36:03' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' LINES TERMINATED BY '\012' STORED AS TEXTFILE  
  90. 12/06/05 06:36:06 INFO exec.DDLTask: Default to LazySimpleSerDe for table students  
  91. 12/06/05 06:36:06 INFO hive.log: DDL: struct students { string name, i32 age}  
  92. FAILED: Error in metadata: java.lang.IllegalArgumentException: URI:  does not have a scheme  
  93. 12/06/05 06:36:07 ERROR exec.DDLTask: FAILED: Error in metadata: java.lang.IllegalArgumentException: URI:  does not have a scheme  
  94. org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.IllegalArgumentException: URI:  does not have a scheme  
  95.         at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:476)  
  96.         at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:3146)  
  97.         at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:213)  
  98.         at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:130)  
  99.         at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57)  
  100.         at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1063)  
  101.         at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:900)  
  102.         at org.apache.hadoop.hive.ql.Driver.run(Driver.java:748)  
  103.         at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:164)  
  104.         at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:241)  
  105.         at org.apache.hadoop.hive.cli.CliDriver.processReader(CliDriver.java:262)  
  106.         at org.apache.hadoop.hive.cli.CliDriver.processFile(CliDriver.java:269)  
  107.         at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:430)  
  108.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  109.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
  110.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  111.         at java.lang.reflect.Method.invoke(Method.java:616)  
  112.         at com.cloudera.sqoop.hive.HiveImport.executeScript(HiveImport.java:270)  
  113.         at com.cloudera.sqoop.hive.HiveImport.importTable(HiveImport.java:218)  
  114.         at com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:362)  
  115.         at com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:423)  
  116.         at com.cloudera.sqoop.Sqoop.run(Sqoop.java:144)  
  117.         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)  
  118.         at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:180)  
  119.         at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:219)  
  120.         at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:228)  
  121.         at com.cloudera.sqoop.Sqoop.main(Sqoop.java:237)  
  122. Caused by: java.lang.IllegalArgumentException: URI:  does not have a scheme  
  123.         at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.(HiveMetaStoreClient.java:127)  
  124.         at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:1868)  
  125.         at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:1878)  
  126.         at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:470)  
  127.         ... 26 more  
  128.   
  129. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask  
  130. 12/06/05 06:36:07 ERROR ql.Driver: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask  
  131. 12/06/05 06:36:08 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive CliDriver exited with status=9  
  132.         at com.cloudera.sqoop.hive.HiveImport.executeScript(HiveImport.java:294)  
  133.         at com.cloudera.sqoop.hive.HiveImport.importTable(HiveImport.java:218)  
  134.         at com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:362)  
  135.         at com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:423)  
  136.         at com.cloudera.sqoop.Sqoop.run(Sqoop.java:144)  
  137.         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)  
  138.         at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:180)  
  139.         at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:219)  
  140.         at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:228)  
  141.         at com.cloudera.sqoop.Sqoop.main(Sqoop.java:237)  

原文地址:http://blog.csdn.net/leeqing2011/article/details/7630690?utm_source=weibolife

你可能感兴趣的:(sqoop)