1. Impala和Hive以SQL语言对数据进行操作。它们的数据以HFDS/HBase的方式存储。因此,关系数据库的数据,需要转储到HDFS文件,才能供它们使用。有时候也需要将HDFS存储的数据,转储到关系数据库。
2. Apache Sqoop项目 http://sqoop.apache.org/ ,提供关系数据库和HDFS之间双向转储。
由于历史原因,Sqoop有两个版本: Sqoop1和Sqoop2。Sqoop1的版本号形如1.4.x,目前的稳定版是1.4.6,Sqoop2的版本号形如1.99.x,目前的稳定版是1.99.7。
Sqoop1和Sqoop2互不兼容,特性不一致,建议将它们视为完全不同的东西。
Sqoop1的MapOnly作业进行HDFS/HBase/Hive与关系数据库进行数据导入导出,用户以命令行方式交互操作。
Sqoop2使用集中化的服务,由Server负责管理完整的MapReduce作业,提供多种用户交互方式(CLI/WebUI/RESTAPI),具有权限管理机制,具有规范化的Connector。
3. CDH对sqoop1和Sqoop2均提供支持。建议:手工作业使用Sqoop1,大批量自动化数据转储使用Sqoop2(推荐优先使用REST接口方式)。但请注意,sqoop2是极其复杂的,非常难用,如果不能承受这个成本,可以选择sqoop1。
Sqoop2的命令 create, update, clone只能在交互界面运行,不能在batch模式下运行,因此不适合处理批量自动化导入。当然,也可以通过linux expect实现create, update, clone自动交互,但显然比REST更复杂,成本过高。
4. 文档
CDH Sqoop1 安装
http://www.cloudera.com/documentation/enterprise/5-7-x/topics/cdh_ig_sqoop_installation.html
CDH Sqoop2 安装
http://www.cloudera.com/documentation/enterprise/5-7-x/topics/cdh_ig_sqoop2_installation.html
Sqoop官网文档,包括Sqoop1和Sqoop2
其中,Sqoop2 REST API在这里:
http://sqoop.apache.org/docs/1.99.7/dev/RESTAPI.html
书籍:《Apache Sqoop Cookbook》by Kathleen Ting and Jarek Jarcec Cecho,这本书主要内容是sqoop1的,2013年出版,没有sqoop2的内容。本书关于增量导入,性能调优,以及Sqoop1和工作流Oozie的集成比较有价值。
http://ishare.iask.sina.com.cn/f/37906166.html
5. CDH Sqoop2的不提供第三方JDBC驱动,所以如果要处理不同的数据库连接问题,提前需要安装第三方JDBC驱动器的jar包,包括MySQL,Oracle,SQL Server,PosgreSQL。安装方式如下:
6. 登录CDH集群试运行Sqoop2
6.1 使用vpn
6.2 登录bigdata-master
ssh root@10.14.1.9
6.3 登录后,切换到hdfs用户
su hdfs cd
6.4 启动Sqoop2,从6.5起的命令均在Sqoop2交互界面执行
sqoop2
6.5 设置Sqoop2服务器IP地址
set server --host 10.14.1.9
6.6 Sqoop2版本信息
show version --all
6.7 Connector信息
show connector
7. Sqoop2 REST API
7.1 检查Sqoop2的版本信息
wget -qO - 10.14.1.9:12000/sqoop/version
返回值应当是json格式,且形式如下:
{"source-url":"http:\/\/github.com\/cloudera\/sqoop2","source-revision":"95271ec80d5e20913726cb08057f1b44505c3b04","build-version":"1.99.5-cdh5.7.0","api-versions":["v1"],"user":"jenkins","build-date":"Wed Mar 23 11:31:21 PDT 2016"}