一、Sqoop 简介

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

  • 导入数据:从 MySQL,Oracle 等关系型数据库中导入数据到 HDFS、Hive、HBase 等分布式文件存储系统中;

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

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

二、安装

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

2.1 下载并解压

下载所需版本的 Sqoop ,这里我下载的是 CDH 版本的 Sqoop 。下载地址为:http://archive.cloudera.com/cdh5/cdh/5/

# 下载后进行解压
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 目录下, 驱动包的下载地址为 https://dev.mysql.com/downloads/connector/j/ 。在本仓库的resources 目录下我也上传了一份,有需要的话可以自行下载。

2.5 验证

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

# sqoop version

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

这里出现的两个 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

系列传送门

最新文章

  1. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)
  2. 【分布式】Zookeeper序列化及通信协议
  3. HT for Web基础动画介绍
  4. 百度Site App的uaredirect.js实现手机访问,自动跳转网站手机版
  5. 从BlackHat2013中我们收获了什么
  6. 什么是系统平均负载(Load average)
  7. [方法] Windows 下SSH远程连接Linux
  8. CSS揭秘(四)视觉效果
  9. FORM开发技术之动态控制某些item的属性
  10. 自定义UICollectionViewLayout 布局实现瀑布流
  11. 使用 shell / python 进行sql的excel报表导出
  12. 【POJ 1740】A New Stone Game
  13. SSM框架中如何简便上传文件表单
  14. 翻译:delete语句(已提交到MariaDB官方手册)
  15. python学习笔记(10)--组合数据类型(集合类型)
  16. [开源中国]Windows 10 全球市场份额正式超越 Windows 7
  17. Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem C. Cargo Transportation 暴力
  18. ros python 重置位置
  19. Redis的介绍
  20. interrupt()方法的简单理解

热门文章

  1. sqlmap中文手册
  2. Alpha冲刺 —— 5.8
  3. Rocket - diplomacy - enumerateMask
  4. 折腾自己的js闭包(一)
  5. Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
  6. (Java实现) 拦截导弹
  7. Java实现 蓝桥杯 算法训练 排序
  8. Java实现 蓝桥杯VIP 算法训练 判断字符位置
  9. 程序员实用JDK小工具归纳,工作用得到
  10. 实验五 shell脚本编程