1、sqoop在hadoop中应用较多,由于spark有外部数据源的概念,故spark中不太使用sqoop。
sqoop是一个数据采集与数据交换的工具,用来处理RDBMS和hadoop (hive/hbase/hdfs/.... 基于hadoop 之上的存储都可以)之间的数据的导入导出。
sqoop底层就是一系列简单的读取操作。
2、 Sqoop1: 1.4.x
只有map,没有reduce。文件输出数取决于map数
Sqoop2: 1.99.x
有map,有reduce
两个版本彼此之间不兼容
3、sqoop 中的map数量如何设置呢?设置依据是?
100个count 10个map
一个map10个count,map 依据表主键拆分count
若表没有主键,则需要导入导出是需要主动指定一个column为主键(--split-by emp.name)
若没有主键且不指定一个column为主键,则报错
4、数据从RDBMS到hadoop叫导入 数据从hadoop到RDBMS叫导出
5、sqoop1 架构图分析
版本号为1.4.x为sqoop1
在架构上:sqoop1使用sqoop客户端直接提交的方式
访问方式:CLI控制台方式进行访问
安全性:命令或脚本中指定用户数据库名及密码
6、sqoop2架构图分析
版本号为1.99.x为sqoop2
在架构上:sqoop2引入了sqoop server,对connector实现了集中的管理
访问方式:REST API、 JavaAPI、 WEB UI以及CLI控制台方式进行访问
CLI方式访问,会通过交互过程界面,输入的密码信息不被看到,同时Sqoop2引入基于角色的安全机制,Sqoop2比Sqoop1多了一个Server端。
7、sqoop1与sqoop2优缺点及对比
sqoop1:
支持数据从 RDBMS 传输至 Hive 或 HBase
支持数据从 Hive 或 HBase 传输至 RDBMS
sqoop2:
不支持数据从 RDBMS 传输至 Hive 或 HBase
解决办法:将数据从 RDBMS 导入 HDFS ,在 Hive 中使用相应的工具和命令(例如 LOAD DATA 语句),手动将数据载入 Hive 或 HBase
不支持数据从 Hive 或 HBase 传输至 RDBMS
解决办法:从 Hive 或 HBase 将数据提取至 HDFS (作为文本或 Avro 文件)使用 Sqoop 将上一步的输出导出至 RDBMS
sqoop1与sqoop2优缺点比较 :
sqoop1:
sqoop1的架构,仅仅使用一个sqoop客户端
sqoop1优点架构部署简单
sqoop1的缺点命令行方式容易出错,格式紧耦合,无法支持所有数据类型,安全机制不够完善,例如密码暴漏,
安装需要root权限,connector必须符合JDBC模型
sqoop2:
sqoop2的架构,引入了sqoop server集中化管理connector,以及rest api,web,UI,并引入权限安全机制。
sqoop2的优点多种交互方式,命令行,web UI,rest API,conncetor集中化管理,所有的链接安装在sqoop server上,完善权限管理机制,connector规范化,仅仅负责数据的读写。
sqoop2的缺点,架构稍复杂,配置部署更繁琐。
在生产上,sqoop1占到绝大多数
安装配置sqoop1
1、下载安装
下载与hadoop版本对应的sqoop安装包,如本机hadoop版本为hadoop-*-cdh5.7.0.tar.gz,对应下载的sqoop为sqoop-1.4.*-cdh5.7.0.tar.gz,在将其解压到对应目录即可(注意解压后文件的属主与属组)
sqoop-1.4.*-cdh5.7.0为该版本对应的文档
2、配置文件
cp sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/hadoop/apps/hadoop
配置hadoop的家目录
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/apps/hadoop
配置hadoop的家目录
#set the path to where bin/hbase is available
export HBASE_HOME=
#Set the path to where bin/hive is available
export HIVE_HOME=/home/hadoop/apps/hive
配置hive的家目录
#Set the path for where zookeper config dir is
#export ZOOCFGDIR=
sqoop-site.xml暂时就不配了,目前够用了
3、将sqoop家目录加入系统环境变量
vi /etc/profile
export SQOOP_HOME=/home/hadoop/apps/sqoop-1.4.6-cdh5.7.0
export PATH=$SQOOP_HOME/bin:$PATH