# sqoop
1、Sqoop是什么
Sqoop:SQL-to-Hadoop,传统数据库与Hadoop间数据同步工具,利用Mapreduce分布式批处理,加快了数据传输速度,保证了容错性
2、sqoop的特点:
sqoop的底层实现是mapreduce,所以sqoop依赖于hadoop,数据是并行导入的。
sqoop1 import原理:
从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的Mapreduce作业,在mapreduce中有很多map,每个map读一片数据,进而并行的完成数据的拷贝。
sqoop1 export原理:
获取导出表的schema、meta信息,和Hadoop中的字段match;多个map only作业同时运行,完成hdfs中数据导出到关系型数据库中。
3、sqoop架构
![](https://box.kancloud.cn/b69089151ff1368c3c826c986e683ceb_629x493.png)
3、sqoop的安装和配置
*1. 解压sqoop安装包
* 2.修改配置
[hadoop@master conf]$ pwd
/home/hadoop/software/sqoop/conf
[hadoop@master conf]$ cp sqoop-env-template.sh sqoop-env.sh
[hadoop@master conf]$ vim sqoop-env.sh
~~~
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME= /home/hadoop/software/hadoop-2.7.3(hadoop安装目录)
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/software/hadoop-2.7.3/share/hadoop/mapreduce(自己的mapreduce安装目录)
#set the path to where bin/hbase is available
export HBASE_HOME=/home/hadoop/software/hbase-1.4.3(自己的hbase安装目录)
#Set the path to where bin/hive is available
export HIVE_HOME=/home/hadoop/software/hive(自己的hive安装目录)
#Set the path to where bin/hive is available
export zookeeper =/home/hadoop/software/zookeeper-3.4.6(自己的zookeeper安装目录)
~~~
* 3.测试安装[hadoop@master sqoop1_h2]$ sqoop version
..........................
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
15/07/04 19:01:00 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
Sqoop 1.4.5
git commit id 5b34accaca7de251fc91161733f906af2eddbe83
Compiled by abe on Fri Aug 1 11:19:26 PDT 2014
* 4. 拷贝驱动包(将MySQL驱动包放到SQOOP的lib目录下)
* [hadoop@master lib]$ pwd
/home/hadoop/sqoop1/lib
* 5常用参数
![](https://box.kancloud.cn/078c40996f30154569f1a2c849f56f55_468x328.png)
* 6、Sqoop1存在的问题
基于命令行的操作方式易于出错,且不安全;
数据传输和数据格式是紧耦合的,这使得connector无法支持所有数据格式;
安全密钥是暴露出来的,非常不安全
Sqoop安装需要root权限
Connector必须符合JDBC模型,并使用通用的JDBC词汇
* 7、常用注意点:
密码保护方法:1)加参数-P,执行时要求终端输入
2)参数--password-file my-sqoop-password,指定密码文件的路径,密码防到文件,文件只读,只有自己可读的
非文本导入,比如图片、视频等,使用--as-sequencefile以sequencefile保存到HDFS上,也可以保存成avrodatafile格式,--as-avrodatafile