前言
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}

本文介绍了如何使用Sqoop2将数据从MySQL数据库高效地导入到Hadoop HDFS。涉及的环境包括Debian 8.7、Hadoop 2.6.5和Sqoop 1.99.7。配置步骤包括设置Hadoop的proxyuser,配置Sqoop2的classpath,添加MySQL JDBC驱动,并详细解释了如何创建链接、Job以及启动导入过程。

9966

被折叠的 条评论
为什么被折叠?



