一、版本说明
1. sqoop有sqoop1和sqoop2两个版本
sqoop1 --
安装包:sqoop1.4.4之前所有版本
工作模式:基于客户端模式,在客户端节点安装sqoop和连接器/驱动器
sqoop2 --
安装包:sqoop1.4.4之后的所有版本,包括sqoop1.99.1,sqoop1.99.2,sqoop1.99.3
工作模式:基于服务模式,包括server和client两部分,所有的配置信息和连接器/驱动器都在server端
2. 官方测试过的database
二、sqoop1安装
1. 下载安装包并解压
wget http://mirrors.ustc.edu.cn/apache/sqoop/1.4.4/sqoop-1.4.4.bin__hadoop-1.0.0.tar.gz
tar -xzvf sqoop-1.4.4.bin__hadoop-1.0.0.tar.gz
mv sqoop-1.4.4.bin__hadoop-1.0.0 sqoop-1.4.4
2. 设置环境变量
sudo vi /etc/profile
增加以下内容:
export HADOOP_COMMON_HOME=/home/ysc/hadoop-1.2.1
export HADOOP_MAPRED_HOME=/home/ysc/hadoop-1.2.1
export PATH=$PATH:/home/ysc/sqoop-1.4.4/bin
export HBASE_HOME=/home/ysc/hbase-0.94.12
执行命令 source /etc/profile
3. 复制依赖jar包
将JDBC驱动mysql-connector-java-5.1.18.jar拷贝到/home/ysc/sqoop-1.4.4/lib
三、sqoop2安装
1. 下载安装包并解压
wget http://mirror.bit.edu.cn/apache/sqoop/1.99.2/sqoop-1.99.2-bin-hadoop100.tar.gz
tar -xzvf sqoop-1.99.2-bin-hadoop100.tar.gz
mv sqoop-1.99.2-bin-hadoop100 sqoop-1.99.2
2. 复制依赖jar到war包
bin/addtowar.sh -hadoop-version 1.2.1 -hadoop-path /home/ysc/hadoop-1.2.1
bin/addtowar.sh -jars /home/ysc/mysql-connector-java-5.1.18.jar
3. 修改sqoop.properties 文件
修改org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/etc/hadoop/conf/
为org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/home/ysc/hadoop-1.2.1/conf/
四、sqoop2 server端操作
1. 启动server
执行命令 bin/sqoop.sh server start
验证地址 http://host001:12000/sqoop/
2. 停止server
执行命令 bin/sqoop.sh server stop
五、sqoop2 client端操作
#客户端直接解压即可运行
1. 交互模式运行
执行命令 bin/sqoop.sh client 进入交互shell
2. 批处理模式运行
执行命令 bin/sqoop.sh client /home/ysc/script.sqoop 执行script.sqoop脚本
六、sqoop工具import和export使用详解
1. 通用选项
2. import工具选项
基本选项
Hive选项
Hbase选项
3. export工具选项
4. sqoop job选项
七、使用样例
1. Hive增量导入
sqoop支持两种增量导入到hive的模式
一种是 append,即通过指定一个递增的列,比如:
--incremental append
--check-column num_iid
--last-value 0
另种是可以根据时间戳,比如:
--incremental lastmodified
--check-column created
--last-value '2012-02-01 11:0:00'
2. .把数据从mysql导入到hdfs中
sqoop ##sqoop命令
import ##表示导入
--connect jdbc:mysql://ip:3306/sqoop ##告诉jdbc,连接mysql的url
--username root ##连接mysql的用户名
--password admin ##连接mysql的密码
--table aa ##从mysql导出的表名称
--fields-terminated-by '\t' ##指定输出文件中的行的字段分隔符
-m 1 ##复制过程使用1个map作业
3. 把数据从hdfs导出到mysql中
sqoop
export ##表示数据从hive复制到mysql中
--connect jdbc:mysql://192.168.1.113:3306/test
--username root
--password admin
--table bb ##mysql中的表,即将被导入的表名称
--export-dir '/user/root/aa/part-m-00000' ##hive中被导出的文件
--fields-terminated-by '\t' ##hive中被导出的文件字段的分隔符