• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Hadoop实战:Sqoop 1.99安装配置

Hadoop 彭东稳 8年前 (2017-06-26) 28321次浏览 已收录 0个评论

Sqoop介绍

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,特别是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 2(对应Hadoop 2)由两部分组成:客户端(client)和服务端(server)。需要在集群的其中某个节点上安装server,该节点的服务端可以作为其他Sqoop客户端的入口点。在服务端的节点上必须安装有Hadoop。客户端可以安装在任意数量的机子上。在装有客户端的机子上不需要安装Hadoop。

Sqoop工作原理如下图:

Hadoop实战:Sqoop 1.99安装配置

Sqoop安装配置

安装

确定几大必要条件:

1)Hadoop集群已经安装(Hadoop实战:Hadoop 2.8分布式部署)。

2)Hbase已经安装(Hadoop实战:Hbase分布式集群安装)。

3)Hive已经安装(Hadoop实战:Hive安装配置)。

选择sqoop2的1.99.7版本即可。我直接下的bin版本,这个版本已经编译好了,直接用。当然你也可以下源代码到本地编译安装,确保有Java环境,因为Sqoop用Java编写的。本文直接用的bin版本:sqoop-1.99.7-bin-hadoop200.tar.gz

bin:可执行脚本,一般使用sqoop都是通过这个目录中的工具调用,是一些shell或batch脚本。

conf:存放配置文件。

docs:目前不清楚具体是什么,可能是帮助文档,不过一般使用sqoop不会用到。

server:里面只有一个lib目录,存了很多jar文件,是sqoop2的server包。

shell:同理,sqoop2的shell包。

tools:同理,sqoop2的工具包。

然后在文件/etc/profile中设置环境变量SQOOP_HOME。

这些环境变量,都不能错哦。前面是设置Hadoop的相关环境变量(由于是安装在Hadoop主机上的,需要检查一下这么变量有没有设置,最好不要重复)。然后下面是设置Sqoop的环境变量。

配置第三方jar引用路径

一般我们使用的数据库驱动包都没有随着Sqoop一起出,多半是因版权问题,所以将这些包放置在这个第三方组件下。再在配置一个SQOOP_SERVER_EXTRA_LIB系统变量即可,本例指定路径为$SQOOP_HOME/extra。

我这里直接使用yum安装了mysql-connector-java,然后把MySQL的jdbc驱动复制到sqoop项目的extra目录下。

如果想使用新版MySQL的JDBC驱动:直接上MySQL官网下的connection/J即可。

配置Hadoop代理访问

因为sqoop访问Hadoop的MapReduce使用的是代理的方式,必须在Hadoop中配置所接受的proxy用户和组。找到Hadoop的core-site.xml配置文件(本例是$HADOOP_HOME/etc/hadoop/core-site.xml):

$SERVER_USER是运行Sqoop2 Server的系统用户,本例我使用了hadoop用户运行server,所以将之代替为hadoop。

注意:保证你的用户id大于1000(可用id命令查看),否则作为系统变量运行时,可能需要其他配置,参照官网。

Sqoop服务器配置

主要是配置conf目录下的sqoop.properties和sqoop_bootstrap.properties两个文件

sqoop_bootstrap.properties文件配置config支持类,这里一般使用默认值即可:

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

注意:官方文档上只说了配置上面第一项,mapreduce的配置文件路径,但后来运行出现authentication异常,找到sqoop文档描述security部分,发现sqoop2支持hadoop的simple和kerberos两种验证机制。所以配置了一个simple验证,这个异常才消除。

验证配置是否有效

使用bin中的sqoop2-tool工具进行验证:

这个工具也可用于软件升级。若没有什么问题,则可以往下走了。如果验证出现错误:caused by java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration,一般就是因为找不到Hadoop相关的jar包导致,如果上面的Hadoop相关的几个环境变量已经配置好了,还报错。可以直接修改/usr/local/sqoop/bin/sqoop.sh中的:

可以直接改成对应的绝对路径。安装sqoop-1.99.7报caused by java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration

开启服务器

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

这时可以通过JDK中的jps工具查看是否已经正确启动起来,正常情况下会有个SqoopJettyServer的进程,这也可以想象,Sqoop server是基于jetty实现的。

可以看到SqoopJettyServer进程,端口12000。

配置sqoop server参数

port和host就不用说了,port是默认值;最后一个–webapp官方文档说是指定的sqoop jetty服务器名称,大概是一个自己能识别的用于标示这个服务器的名字吧。

完成后可以验证服务器是否能正确链接上:

查看帮助

支持tab补全。

Sqoop1.99.7安装、配置和使用(一)

Sqoop1.99.7安装、配置和使用(二)


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (1)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!