1、Sqoop是什么
Sqoop:SQL-to-Hadoop
传统数据库与Hadoop间数据同步工具
利用Mapreduce分布式批处理,加快了数据传输速度,保证了容错性
2、Sqoop1架构
sqoop1 import原理:
从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的Mapreduce作业,在mapreduce中有很多map,每个map读一片数据,进而并行的完成数据的拷贝。
sqoop1 export原理:
获取导出表的schema、meta信息,和Hadoop中的字段match;多个map only作业同时运行,完成hdfs中数据导出到关系型数据库中。
3、sqoop1常用用法
1)sqoop import toHDFS:sqoop import \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities
--where "country = 'USA'"
--target-dir /etl/input/cities
--warehouse-dir /etl/input/
--num-mappers 10
--null-string '\\N' \
--null-non-string '\\N'
--incremental append \
--check-column id \
--last-value 1
说明:
--connnect: 指定JDBC URL
--username/password:mysql数据库的用户名
--table:要读取的数据库表
--where:导入数据的过滤条件
--target-dir:HDFS中导入表的存放目录
--warehouse-dir:指定表存放的父目录,只需要指定一次,下次存放时会在该目录下自动以该表名命名
--num-mappers:并发的map数
--null-string:null值时,HDFS存储为N
--null-non-string:非字符类型的字段为空时,存储为N
--incremental append或lastmodified:自动增量方式
--check-column
--last-value:上一次导入的最后一个值
2) sqoop import to Hbase
bin/sqoop import \
--connect "jdbc:mysql://localhost/mytest" \
--username "root" \
--password "aaa" \
--table "student" \
--hbase-create-table \
--hbase-table student \
--column-family info \
--hbase-row-key id
3)sqoop export
sqoop export \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--export-dir cities \
--input-fields-terminated-by "\001"
--columns id,name
--batch
-Dsqoop.export.records.per.statement=10 //批量更新,每隔10条提交一次
--staging-table staging_cities //先把数据导入到这个临时表staging_cities,确定所有导入成功后,一次性重命名为正确的表,保证原子性
--update-key id
--update-mode allowinsert
4、Sqoop1存在的问题
基于命令行的操作方式易于出错,且不安全;
数据传输和数据格式是紧耦合的,这使得connector无法支持所有数据格式;
安全密钥是暴露出来的,非常不安全
Sqoop安装需要root权限
Connector必须符合JDBC模型,并使用通用的JDBC词汇
5、常用注意点:
密码保护方法:1)加参数-P,执行时要求终端输入
2)参数--password-file my-sqoop-password,指定密码文件的路径,密码防到文件,文件只读,只有自己可读的
非文本导入,比如图片、视频等,使用--as-sequencefile以sequencefile保存到HDFS上
也可以保存成avrodatafile格式,--as-avrodatafile
6、参考
http://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html
(官网手册,很详细)
http://pan.baidu.com/share/link?shareid=1639527429&uk=1678247570&fid=1399679120
(sqoop cookbook书籍)