前言
Apache Sqoop(TM) is a tool designed for efficiently transferring bulk data between Apache Hadoop and structured datastores such as relational databases.
Sqoop是一个在Hadoop与关系数据库之间进行高效传输大量数据的工具。也即是可进行导入和导出操作。
翻译的不太好见谅哈。
而Sqoop2是最新版本,但并不兼容Sqoop1。Sqoop2相比之前的版本添加了很多新的东西。具体的可参看官方文档,这里不过多介绍了。
对了,Sqoop2还可以在非关系数据库之间进行导入和导出,如:HBase等
环境
- OS Debian 8.7
- Hadoop 2.6.5
- Sqoop 1.99.7
- MySQL 5.7.17
这里除了Hadoop和Sqoop版本需要注意一下,其他的都差不多就行。
配置
关于Hadoop的集群基本配置,我会在另外一篇文章再介绍。这里只说下跟Sqoop2有关的配置。
Hadoop相关配置
因为sqoop访问Hadoop的MapReduce使用的是代理的方式,必须在Hadoop中配置所接受的proxy用户和组。
编辑hadoop-2.6.5/etc/hadoop/core-site.xml
文件。
在里面添加如下内容:
<!-- sqoop2 -->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
其中hadoop.proxyuser.hadoop.hosts(groups)的格式应该是:hadoop.proxyuser.${SYSTEM_USER}.hosts
表示运行hadoop的系统用户名,这里我就是使用hadoop用户运行的,所以就这样配置。
Sqoop2相关配置
- 修改sqoop classpath配置,编辑
sqoop-1.99.7-bin-hadoop200/bin/sqoop.sh
文件
找到sqoop_server_classpath_set函数,修改内容如下:
function sqoop_server_classpath_set {
#HADOOP_COMMON_HOME=${
HADOOP_COMMON_HOME:-${
HADOOP_HOME}/share/hadoop/common}
#HADOOP_HDFS_HOME=${
HADOOP_HDFS_HOME:-${
HADOOP_HOME}/share/hadoop/hdfs}
#HADOOP_MAPRED_HOME=${
</