欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Sqoop 的基本使用

程序员文章站 2022-03-21 21:37:19
一、Sqoop 简介 Sqoop 是一个常用的数据迁移工具,主要用于在不同存储系统之间实现数据的导入与导出: + 导入数据:从 MySQL,Oracle 等关系型数据库中导入数据到 HDFS、Hive、HBase 等分布式文件存储系统中; + 导出数据:从 分布式文件系统中导出数据到关系数据库中。 ......

一、sqoop 简介

sqoop 是一个常用的数据迁移工具,主要用于在不同存储系统之间实现数据的导入与导出:

  • 导入数据:从 mysql,oracle 等关系型数据库中导入数据到 hdfs、hive、hbase 等分布式文件存储系统中;

  • 导出数据:从 分布式文件系统中导出数据到关系数据库中。

其原理是将执行命令转化成 mapreduce 作业来实现数据的迁移,如下图:

Sqoop 的基本使用

二、安装

版本选择:目前 sqoop 有 sqoop 1 和 sqoop 2 两个版本,但是截至到目前,官方并不推荐使用 sqoop 2,因为其与 sqoop 1 并不兼容,且功能还没有完善,所以这里优先推荐使用 sqoop 1。

Sqoop 的基本使用

2.1 下载并解压

下载所需版本的 sqoop ,这里我下载的是 cdh 版本的 sqoop 。下载地址为:

# 下载后进行解压
tar -zxvf  sqoop-1.4.6-cdh5.15.2.tar.gz

2.2 配置环境变量

# vim /etc/profile

添加环境变量:

export sqoop_home=/usr/app/sqoop-1.4.6-cdh5.15.2
export path=$sqoop_home/bin:$path

使得配置的环境变量立即生效:

# source /etc/profile

2.3 修改配置

进入安装目录下的 conf/ 目录,拷贝 sqoop 的环境配置模板 sqoop-env.sh.template

# cp sqoop-env-template.sh sqoop-env.sh

修改 sqoop-env.sh,内容如下 (以下配置中 hadoop_common_homehadoop_mapred_home 是必选的,其他的是可选的):

# set hadoop-specific environment variables here.
#set path to where bin/hadoop is available
export hadoop_common_home=/usr/app/hadoop-2.6.0-cdh5.15.2

#set path to where hadoop-*-core.jar is available
export hadoop_mapred_home=/usr/app/hadoop-2.6.0-cdh5.15.2

#set the path to where bin/hbase is available
export hbase_home=/usr/app/hbase-1.2.0-cdh5.15.2

#set the path to where bin/hive is available
export hive_home=/usr/app/hive-1.1.0-cdh5.15.2

#set the path for where zookeper config dir is
export zoocfgdir=/usr/app/zookeeper-3.4.13/conf

2.4 拷贝数据库驱动

将 mysql 驱动包拷贝到 sqoop 安装目录的 lib 目录下, 驱动包的下载地址为 。在本仓库的resources 目录下我也上传了一份,有需要的话可以自行下载。

Sqoop 的基本使用

2.5 验证

由于已经将 sqoop 的 bin 目录配置到环境变量,直接使用以下命令验证是否配置成功:

# sqoop version

出现对应的版本信息则代表配置成功:

Sqoop 的基本使用

这里出现的两个 warning 警告是因为我们本身就没有用到 hcatalogaccumulo,忽略即可。sqoop 在启动时会去检查环境变量中是否有配置这些软件,如果想去除这些警告,可以修改 bin/configure-sqoop,注释掉不必要的检查。

# check: if we can't find our dependencies, give up here.
if [ ! -d "${hadoop_common_home}" ]; then
  echo "error: $hadoop_common_home does not exist!"
  echo 'please set $hadoop_common_home to the root of your hadoop installation.'
  exit 1
fi
if [ ! -d "${hadoop_mapred_home}" ]; then
  echo "error: $hadoop_mapred_home does not exist!"
  echo 'please set $hadoop_mapred_home to the root of your hadoop mapreduce installation.'
  exit 1
fi

## moved to be a runtime check in sqoop.
if [ ! -d "${hbase_home}" ]; then
  echo "warning: $hbase_home does not exist! hbase imports will fail."
  echo 'please set $hbase_home to the root of your hbase installation.'
fi

## 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
if [ ! -d "${zookeeper_home}" ]; then
  echo "warning: $zookeeper_home does not exist! accumulo imports will fail."
  echo 'please set $zookeeper_home to the root of your zookeeper installation.'
fi

更多大数据系列文章可以参见 github 开源项目大数据入门指南