Sqoop2安装

一、简介
sqoop是一个用于结构化数据系统(比如关系型数据库系统RDBMS)和Hadoop系统间的大量数据传输的工具,特别是Hadoop所使用的HDFS分布式文件系统。作为ASF下的一个开源项目,其一开始也只是一个小工具,当然现在也是,还附带一些库供客户端调用。
Sqoop版本又分Sqoop1和Sqoop2,其中Sqoop1目前最高释出版本为1.4.6,Sqoop2最高释出版本为1.99.7,Sqoop1与Sqoop2相互间不兼容,而且Sqoop2目的并不是作为产品,主要是致力于开发。再者,其对Hadoop的支持版本有些特别要求,比如Hadoop1和Hadoop0.x还有Hadoop2.x的兼容性等。在下载时一般要注意其兼容的Hadoop版本(Sqoop官网上我没有看到相关具体的描述,只是通过下载的文件名辨别与Hadoop的兼容性)。Sqoop进行数据转移时必须依赖于Hadoop的MapReduce作业,所以Hadoop必须在环境中存在,且能被Sqoop访问。
二、下载安装。
从sqoop官网下载二进制包,你也可以下载源码包到本地编译,本文下载的是sqoop2,确保机器有java环境,hadoop2.7.2以上的版本。https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.99.7/sqoop-1.99.7-bin-hadoop200.tar.gz
1.解压至/app下

[hadoop@master app]$ ls
dataset  elasticsearch  hadoop  hbase  hive  java  kafka  redis  scala  spark  sqoop  tgz  zookeeper

2.配置SQOOP_HOME

[hadoop@master app]$ vim ~/.bash_profile

# User specific environment and startup programs
export JAVA_HOME=/app/java/jdk1.8.0_141
export HADOOP_HOME=/app/hadoop/hadoop-2.7.3
export SCALA_HOME=/app/scala/scala-2.11.8
export SPARK_HOME=/app/spark/spark-2.1.1
export ZOOKEEPER_HOME=/app/zookeeper/zookeeper-3.4.6
export KAFKA_HOME=/app/kafka/kafka_2.10-0.9.0.0
export HIVE_HOME=/app/hive/apache-hive-2.1.1-bin
export HBASE_HOME=/app/hbase/hbase-1.2.6
export SQOOP_HOME=/app/sqoop/sqoop-1.99.7-bin-hadoop200
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin:$SQOOP_HOME/bin


export PATH

3.配置HADOOP_HOME
注意:配置这个变量主要是让Sqoop能找到以下目录的jar文件和Hadoop配置文件:
$HADOOP_HOME/share/hadoop/common

$HADOOP_HOME/share/hadoop/hdfs

$HADOOP_HOME/share/hadoop/mapreduce

$HADOOP_HOME/share/hadoop/yarn

官网上说名了可以单独对各个组建进行配置,使用以下变量:

HADOOP_COMMON_HOME,
HADOOP_HDFS_HOME,
HADOOP_MAPRED_HOME,
HADOOP_YARN_HOME
若$HADOOP_HOME已经配置了,最好不要再配置下面的变量,可能会有些莫名错误。
3.配置Hadoop代理访问
因为sqoop访问Hadoop的MapReduce使用的是代理的方式,必须在Hadoop中配置所接受的proxy用户和组。找到Hadoop的core-site.xml配置文件:

<configuration>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:8020</value>
</property>
<property>
  <name>hadoop.proxyuser.hadoop.hosts</name>
    <value>*</value>
    </property>
    <property>
      <name>hadoop.proxyuser.hadoop.groups</name>
        <value>*</value>
    </property>
</configuration>

$SERVER_USER是运行Sqoop2 Server的系统用户,本例我使用了hadoop用户运行server,所以将之代替为hadoop。
注意:保证你的用户id大于1000(可用id命令查看),否则作为系统变量运行时,可能需要其他配置,参照官网。
4.配置第三方jar引用路径
一般我们使用的数据库驱动包都没有随着Sqoop一起释出,多半是因版权问题,所以将这些包放置在这个第三方组件下。再在配置一个SQOOP_SERVER_EXTRA_LIB 系统变量即可,本例指定路径为SQOOP_HOME/extra ,所以建立一个extra目录在sqoop的根目录下,把mysql的驱动jar文件复制到这个目录下。
将下面的变量加入环境变量中,source即可

export SQOOP_SERVER_EXTRA_LIB=$SQOOP_HOME/extra  

5.Sqoop服务器配置
根据官网描述,主要是配置conf目录下的sqoop.properties和sqoop_bootstrap.properties两个文件,sqoop_bootstrap.properties文件配置config支持类,这里一般使用默认值即可:

sqoop.config.provider=org.apache.sqoop.core.PropertiesConfigurationProvider  

sqoop.properties文件配置比较多,这里按需要配置,我写下我配置的项,其他都使用默认值:

org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/app/hadoop/hadoop2.7.3/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验证,这个异常才消除,如果没有异常,只需配置第一项。
6.在conf目录下,添加catalina.properties文件,加入本机hadoop的相关jar路径,如下所示,官网没有说明,可以选择配置。

common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/../lib/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/common/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/common/lib/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/hdfs/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/tools/lib/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/yarn/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/*.jar,/app/hadoop/hadoop-2.7.3/share/hadoop/httpfs/tomcat/lib/*.jar

7.验证配置是否有效
使用bin中的sqoop2-tool工具进行验证:

[hadoop@master conf]$ sqoop2-tool verify 
Setting conf dir: /app/sqoop/sqoop-1.99.7-bin-hadoop200/bin/../conf
Sqoop home directory: /app/sqoop/sqoop-1.99.7-bin-hadoop200
Sqoop tool executor:
    Version: 1.99.7
    Revision: 435d5e61b922a32d7bce567fe5fb1a9c0d9b1bbb
    Compiled on Tue Jul 19 16:08:27 PDT 2016 by abefine
Running tool: class org.apache.sqoop.tools.tool.VerifyTool
0    [main] INFO  org.apache.sqoop.core.SqoopServer  - Initializing Sqoop server.
33   [main] INFO  org.apache.sqoop.core.PropertiesConfigurationProvider  - Starting config file poller thread
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/app/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/app/hive/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Verification was successful.
Tool class org.apache.sqoop.tools.tool.VerifyTool has finished correctly.

成功,这个工具也可用于软件升级。
8.开启服务器
sqoop2的运行模式不再是sqoop1的一个小工具,而加入了服务器,这样只要能访问到mapreduce配置文件及其开发包,sqoop服务器部署在哪里都无所谓,而客户端shell是不需要任何配置的。直接用即可。
开启服务器:

[hadoop@master hadoop]$ sqoop2-server start  
[hadoop@master bin]$ sqoop2-server start 
Setting conf dir: /app/sqoop/sqoop-1.99.7-bin-hadoop200/bin/../conf
Sqoop home directory: /app/sqoop/sqoop-1.99.7-bin-hadoop200
Starting the Sqoop2 server...
0    [main] INFO  org.apache.sqoop.core.SqoopServer  - Initializing Sqoop server.
22   [main] INFO  org.apache.sqoop.core.PropertiesConfigurationProvider  - Starting config file poller thread
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/app/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/app/hive/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Sqoop2 server started.
[hadoop@master bin]$ jps
5224 SqoopJettyServer
5242 Jps
[hadoop@master bin]$ 

jps查看,SqoopJettyServer的进程,猜测Sqoop server是基于jetty实现的。
9.开启客户端

[hadoop@master bin]$ sqoop.sh client
Setting conf dir: /app/sqoop/sqoop-1.99.7-bin-hadoop200/bin/../conf
Sqoop home directory: /app/sqoop/sqoop-1.99.7-bin-hadoop200
Sqoop Shell: Type 'help' or '\h' for help.

sqoop:000> 

至此Sqoop2配置安装完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值