【Sqoop】Sqoop 1.4.7 安装

一、Sqoop 介绍

Sqoop 是一款用于 hadoop 和关系型数据库之间数据导入导出的工具。可以通过 Sqoop 把数据从数据库(比如 mysql,oracle)导入到 hdfs 中;也可以把数据从 hdfs 中导出到关系型数据库中。

通过将 Sqoop 的操作命令转化为 Hadoop 的 MapReduce 作业(通常只涉及到 Map 任务)进行导入导出,即 Sqoop 生成的 Job 主要是并发运行 MapTask 实现数据并行传输以提升数据传送速度和效率,如果使用 Shell 脚本来实现多线程数据传送则存在很大的难度。

Sqoop2(Sqoop1.99.7)需要在 Hadoop 安装目录下的配置文件中设置代理,属于重量级嵌入安装,文中使用 Sqoop1(Sqoop1.4.7)。

二、Sqoop 安装

安装前提:

已经具备了Java和hadoop的环境。

下载安装包:

http://mirror.bit.edu.cn/apache/sqoop/1.4.7/

解压:

sudo tar -zxv -f sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
sudo mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop

配置环境变量:

export SQOOP_HOME=/opt/sqoop
export PATH=SQOOP_HOME/bin

使配置生效:

source /etc/profile

上传 mysql 驱动至 Sqoop lib 下:

cp mysql-connector-java-5.1.46.jar /opt/sqoop/lib/

修改 Sqoop 配置:

cd /opt/sqoop/conf/
cp sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/opt/hadoop

Set path to where hadoop-*-core.jar is available

export HADOOP_MAPRED_HOME=/opt/hadoop

set the path to where bin/hbase is available

export HBASE_HOME=/opt/hbase

Set the path to where bin/hive is available

export HIVE_HOME=/opt/hive

Set the path for where zookeper config dir is

export ZOOCFGDIR=/opt/zookeeper/conf

注意:这里的 HADOOP_COMMON_HOME 和 HADOOP_MAPRED_HOME 配成一个就行了,因为现在安装的 hadoop 的开源的版本,但是在 hadoop 的商业版本中这两个配置是分别安装在不同的目录下的。

三、验证安装是否成功

执行 sqoop version,看到版本信息,即安装成功。

INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
Sqoop 1.4.7
git commit id 2328971411f57f0cb683dfb79d19d4d19d185dd8
Compiled by maugli on Thu Dec 21 15:59:58 STD 2017

四、测试

4.1、mysql 整个表导入 hdfs

运行下面的指令前确保 mysql 中存在 test db 和 mysql_input table。

sqoop import 
--connect jdbc:mysql://master:3306/test
--username root
--password xxx
--table mysql_input
--target-dir /user/sqoop/data_from_mysql

运行后有报错:

ERROR tool.ImportTool: Import failed: No primary key could be found for table mysql_input. Please specify one with --split-by or perform a sequential import with '-m 1'.

因为没有主键,又没有指定切分的列,Sqoop 不知道用多少个 map 进行数据同步,可以通过设置 split-by 和 -m 1来规避。

当-m 设置的值大于1时,split-by 必须设置字段。

4.2、mysql 表按查询条件导入 hdfs

sqoop import 
--connect jdbc:mysql://master:3306/test
--username root
--password xxx
--query 'select * from mysql_input where size>1 and $CONDITIONS'
--target-dir /user/sqoop/data_from_mysql
-m 1

你可能感兴趣的:(【Sqoop】Sqoop 1.4.7 安装)