笔者之前因工作倒腾了一段时间的Sqoop,当时使用的是Sqoop2(1.99.7),但Sqoop2与Sqoop1有很多很多不同,且不能相互兼容。Sqoop2引入了服务器,而Sqoop1还是像一个单机工具,通过一些选项或参数传递进去,并产生MapReduce作业。这样的工具用起来较之Sqoop2更方便。于是现在将这两天倒腾Sqoop1的一些坑和一些经验记录下来。本文将主要着重于Sqoop1.4.6(以下简称Sqoop或Sqoop1)的安装(其实没什么可说的,安装很简单)。
1.环境与软件
操作系统:Ubuntu 16.04 x86_64
Apache Hadoop: 2.7.3
Apache Zookeeper: 3.4.8
Apache Sqoop: 1.4.6
Oracle JDBC: 1.8.0_101
2.安装前
(1)本文使用的Hadoop集群有7个节点,对HDFS服务而言,有两个NameNode, 5个DataNode。
(2)我没有尝试过将Sqoop安装到非集群节点上,也即是说,本文将Sqoop安装在Hadoop集群的其中一个节点上。我不清楚能不能将Sqoop单独安装到我自己的机器上,并在这上面指定一些Hadoop配置文件,有时间也可以试试。
(3)安装Sqoop前,所有依赖服务的环境变量已经设定好(如Hadoop、JDK等)。
3.安装
(1)从官方下载Sqoop1.4.6安装包(sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz);
(2)解压到一个自己指定的目录下,本文是/home/hadoop/deploy
tar -xzvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /home/hadoop/deploy
(3)指定Sqoop根路径,这一步甚至可以省略,起码我是为了方便才设置的,不设置时同样可以用。
在/etc/profile.d/目录下创建文件sqoop1.4.6.sh,并导入环境变量:
export SQOOP_HOME="/home/hadoop/deploy/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/"
export PATH=$PATH:$SQOOP_HOME/bin
注意,在这个文件中不要写Shebang ( #!/bin/bash 这一行),之前导入环境变量时加入这一行导不进去,大概是shell的一些语法吧,目前没有搞清楚。
4.配置
在Sqoop根目录下,进入conf目录,找到其中的sqoop-env-template.sh,复制成sqoop-env.sh:
cp sqoop-env-template.sh ./sqoop-env.sh
修改其中的环境变量,此处使用的主要是四个:
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=${HADOOP_HOME}
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
#set the path to where bin/hbase is available
export HBASE_HOME=${HBASE_HOME}
#Set the path for where zookeper config dir is
export ZOOCFGDIR=${ZOOKEEPER_HOME}/conf
注:之前已说明,所有的环境变量都有效设置。这里直接使用这些变量。另,在conf中仍然可以看到一个sqoop-site-template.xml,由于我没有涉及什么配置,这里可以不去配置,所有配置项sqoop自己用默认值即可。
5.检测使用
至此Sqoop1安装完成,比起Sqoop2来说,简单多了。我们可以使用下面的Sqoop命令检测是否安装成功:
bin/sqoop help
注意,这里可能会报警告:
Warning: /home/hadoop/deploy/sqoop-1.4.6.bin__hadoop-2.0.4-alpha//../hcatalog does not exist! HCatal ;
Warning: /home/hadoop/deploy/sqoop-1.4.6.bin__hadoop-2.0.4-alpha//../accumulo does not exist! Accumulo imports will fail.
这主要是因为集群中没有安装HCatal和accumulo环境变量,但sqoop默认会检测这两个组件。若非要去掉这两个检测,可以修改bin/config-sqoop文件,很容易找到这两个组件的检测位置。
6.写在最后
本文叙述安装Sqoop,非常简单,也由于没有什么特殊的使用需求,连配置也没有。