一、Sqoop介绍
1、Sqoop:SQL-to-Hadoop 传统数据库与Hadoop间数据同步工具 利用Mapreduce分布式批处理,加快了数据传输速度,保证了容错性。
2、sqoop import 原理:从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的Mapreduce作业,在mapreduce中有很多map,每个map读一片数据,进而并行的完成数据的拷贝。
3、sqoop export原理: 获取导出表的schema、meta信息,和Hadoop中的字段match;多个map only作业同时运行,完成hdfs中数据导出到关系型数据库中。
二、Sqoop安装配置
1、上传解压:
tar -zxvf sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local/
2、配置环境
vi /etc/profile
export SQOOP_HOME = /usr/local/sqoop-1.4.4
export PATH=$PATH:$JAVA_HOME/bin;$HADOOP_HOME/bin:$SQOOP_HOME/bin
source /etc/profile
3、重命名配置文件
在$SQOOP_HOME/conf中执行命令
mv sqoop-env-template.sh sqoop-env.sh
在$SQOOP_HOME/conf中执行命令
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/local/hadoop-2.7.1
#Set the path to where bin/hive is available
export HIVE_HOME=/usr/local/hive-1.2.0
5、添加数据库驱动
把MySQL的JDBC驱动包复制到Sqoop的lib目录下
三、Sqoop导入导出HDFS的操作
- 导入
1.1. 普通导入
sqoop import --connect jdbc:mysql://192.168.4.101:3306/mysql --username root --password root --table user --columns ‘name, age’ –m 1 <表没有主键时,需要指定map数量为1>
1.2. 指定输出路径、指定数据分隔符
sqoop import --connect jdbc:mysql://192.168.4.101:3306/test --username root --password root --table user --target-dir ‘/sqoop/d1’ --fields-terminated-by '\t’
1.3. 指定Map数量 -m
sqoop import --connect jdbc:mysql://192.168.4.101: