sqoop有两个版本:sqoop1和sqoop2
如果你想自己编译源码:以下是执行步骤:
1.下载源码
2.运行mvn clean package -Pbinary -DskipTests
如果报内存错误:
set MAVEN_OPTS=XX:MaxPermSize=128M
编译docs项目会报异常,对应的pom.xml的一个插件改一个版本3.3
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
</dependency>
sqoop1安装
下载:http://mirror.bit.edu.cn/apache/sqoop/1.4.6/
下载这个包:sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
安装步骤:
1.tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
2.修改/etc/profile
export SQOOP_HOME=/home/spark/app/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile 是配置生效
3.将$SQOOP_HOME/conf中cp sqoop-env-template.sh cp sqoop-env.sh,修改内容:
export HADOOP_COMMON_HOME=/home/spark/app/hadoop-2.4.1
export HADOOP_MAPRED_HOME=/home/spark/app/hadoop-2.4.1
export HIVE_HOME=/home/spark/app/apache-hive-0.13.1-bin/
export ZOOCFGDIR=/home/spark/app/zookeeper-3.4.5/conf
export HBASE_HOME=
4.将mysql的驱动包放到$SQOOP_HOME/lib中
cp mysql-connector-java-5.1.28.jar $SQOOP_HOME/lib中
5.修改$SQOOP_HOME/bin/configure-sqoop
注释掉HCatalog,Accumulo检查(除非你准备使用HCatalog,Accumulo等HADOOP上的组件)
## Moved to be a runtime check in sqoop.
#if [ ! -d "${HCAT_HOME}" ]; then
# echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."
# echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
#fi
#if [ ! -d "${ACCUMULO_HOME}" ]; then
# echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail."
# echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.'
#fi
6.测试连接:
显示mysql数据库列表:
sqoop list-databases --connect jdbc:mysql://spark02:3306/ --username root --password root
显示数据库中所有表:
sqoop list-tables --connect jdbc:mysql://spark02:3306/hive --username root --password root
sqoop2安装
下载: http://mirrors.shuosc.org/apache/sqoop/1.99.7/
下载:sqoop-1.99.7-bin-hadoop200.tar.gz
安装步骤:
1.tar -zxvf sqoop-1.99.7-bin-hadoop200.tar.gz
2.目录介绍
bin:可执行脚本,一般使用sqoop都是通过这个目录中的工具调用,是一些shell或batch脚本。
conf:存放配置文件
docs:目前不清楚具体是什么,可能是帮助文档,不过一般使用sqoop不会用到。
server:里面只有一个lib目录,存了很多jar文件,是sqoop2 的server包。
shell:同理,sqoop2的shell包。
tools:同理,sqoop2的工具包。
3.修改/etc/profile
export SQOOP_HOME=/home/spark/app/sqoop-1.99.7-bin-hadoop200/
export SQOOP_SERVER_EXTRA_LIB=$SQOOP_HOME/extra
export PATH=$PATH:$SQOOP_HOME/bin
4.将mysql的驱动包复制到$SQOOP_HOME/extra目录中
mkdir $SQOOP_HOME/extra
cp mysql-connector-java-5.1.28.jar $SQOOP_HOME/extra
5.配置hadoop代理访问
因为sqoop访问Hadoop的MapReduce使用的是代理的方式,必须在Hadoop中配置所接受的proxy用户和组。找到Hadoop的core-site.xml配置文件(本例是$HADOOP_HOME/etc/hadoop/core-site.xml):
<property>
<name>hadoop.proxyuser.$SERVER_USER.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.$SERVER_USER.groups</name>
<value>*</value>
</property>
$SERVER_USER是运行Sqoop2 Server的系统用户,本例我使用了hadoop用户运行server,所以将之代替为hadoop。
注意:保证你的用户id大于1000(可用id命令查看),否则作为系统变量运行时,可能需要其他配置,参照官网。
6.配置sqoop服务器:在$SQOOP_HOME/conf
sqoop_bootstrap.properties配置文件:
sqoop.config.provider=org.apache.sqoop.core.PropertiesConfigurationProvider
sqoop.properties配置文件: org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/home/hadoop/hadoop2.6/etc/hadoop
org.apache.sqoop.security.authentication.type=SIMPLE
org.apache.sqoop.security.authentication.handler=org.apache.sqoop.security.authentication.SimpleAuthenticationHandler
org.apache.sqoop.security.authentication.anonymous=true
注意:官方文档上只说了配置上面第一项,mapreduce的配置文件路径,但后来运行出现authentication异常,找到sqoop文档描述security部分,发现sqoop2支持hadoop的simple和kerberos两种验证机制。所以配置了一个simple验证,这个异常才消除。
7.可以使用sqoop2-tool工具进行验证是否配置成功:
bin/sqoop2-tool verify
出行一个:Verification was successful
8.启动服务器:
bin/sqoop2-server start
sqoop2的运行模式不再是sqoop1的一个小工具,而加入了服务器,这样只要能访问到mapreduce配置文件及其开发包,sqoop服务器部署在哪里都无所谓,而客户端shell是不需要任何配置的。直接用即可。
这时可以通过JDK中的jps工具查看是否已经正确启动起来,正常情况下会有个SqoopJettyServer的进程,这也可以想象,Sqoop server是基于jetty实现的。