sqoop1和sqoop2对比

疑问
sqoop作为数据迁移工具合适吗?
sqoop1没有提供api接口,sqoop2似乎不能导入数据到hbase

Sqoop简单介绍

Sqoop是一款开源的工具,主要用于在Hadoop和传统的数据库(MySQL、postgresql等)进行数据的传递,可以将一个关系型数据库(例如:MySQL、Oracle、Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop中一大亮点就是可以通过hadoop的mapreduce把数据从关系型数据库中导入数据到HDFS。

Sqoop目前版本已经到了1.99.7,我们可以在其官网上看到所有的版本,Sqoop1.99.7是属于sqoop2,Sqoop1的最高版本为1.4.6,版本号划分区别,Apache:1.4.x,1.99.x~

Sqoop一代和二代对比

版本号对比两代之间是两个完全不同的版本,不兼容

sqoop2比sqoop1的改进:

  • (1) 引入sqoop server,集中化管理connector等
  • (2) 多种访问方式:CLI,Web UI,REST API
  • (3) 引入基于角色 的安全机制

sqoop2和sqoop1的功能性对比

功能 Sqoop 1 Sqoop 2
用于所有主要 RDBMS 的连接器 支持 不支持。解决办法: 使用已在以下数据库上执行测试的通用 JDBC 连接器: Microsoft SQL Server 、 PostgreSQL 、 MySQL 和 Oracle 。此连接器应在任何其它符合 JDBC 要求的数据库上运行。但是,性能可能无法与 Sqoop 中的专用连接器相比
Kerberos 安全集成 支持 不支持
数据从 RDBMS 传输至 Hive 或 HBase 支持 不支持。解决办法: 按照此两步方法操作:1、将数据从 RDBMS 导入 HDFS;2、在 Hive 中使用相应的工具和命令(例如 LOAD DATA 语句),手动将数据载入 Hive 或 HBase
数据从 Hive 或 HBase 传输至 RDBMS 不支持。解决办法: 按照此两步方法操作。 从 Hive 或 HBase 将数据提取至 HDFS (作为文本或 Avro 文件)使用 Sqoop 将上一步的输出导出至 RDBMS 不支持。按照与 Sqoop 1 相同的解决方法操作

优缺点

sqoop1与sqoop2的优缺点如下:

    sqoop1的架构,仅仅使用一个sqoop客户端。
    sqoop2的架构,引入了sqoop server集中化管理connector,以及rest api,web,UI,并引入权限安全机制。 

sqoop1与sqoop2优缺点比较 :

    sqoop1优点架构部署简单  
    sqoop1的缺点命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏,  
安装需要root权限,connector必须符合JDBC模型  
    sqoop2的优点多种交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的链接安装在sqoop 
server上,完善权限管理机制,connector规范化,仅仅负责数据的读写。  
    sqoop2的缺点:架构稍复杂,配置部署更繁琐。

一些小问题

测试sqoop1

bin/sqoop import --connect jdbc:mysql://192.168.2.133:3306/hive --username root --password x5  --table student -m1

出现以下问题

Streaming result set com.mysql.jdbc.RowDataDynamic@1d5a7f6 is still active

原因及解决办法
mysql的bug,下载新的jar包就可以了
http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.32.tar.gz

从windows上用navcat连接虚拟机Linux上的MySQL出现 Host xxx is not allowed to connect to this MySQL server
原因是没有授权,解决方法如下:
  // 从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:
  # mysql -u root -proot 
  mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
  mysql>FLUSH PRIVILEGES;

你可能感兴趣的:(sqoop1和sqoop2对比)