sqoop安装及使用

介绍

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。

软件获取

1
wget http://apache.01link.hk/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

安装前准备

  • 安装hadoop
  • 安装hive
  • 安装hbase

安装

1
2
3
tar xvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/

ln -s sqoop sqoop-1.4.7.bin__hadoop-2.6.0

环境变量配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# JAVA环境变量
export JAVA_HOME=/opt/jdk1.8.0_121
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

# hadoop环境变量
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

# hive环境变量
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin

# sqoop环境变量
export HADOOP_COMMON_HOME=/opt/hadoop
export HADOOP_MAPRED_HOME=/opt/hadoop
export SQOOP_HOME=/opt/sqoop
export PATH=$PATH:$SQOOP_HOME/bin

测试

1
2
3
4
5
6
sqoop version          

18/07/02 15:22:02 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

下载mysql-connector

1
2
# 将下载解压后的jar包拷贝到/opt/sqoop/lib目录下
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

FAQ

  • HADOOP_CLASSPATH引发的异常
1
ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.

解决方案:

1
2
3
4
5
6
# 根据具体使用的bash进行相应设置
vi ~/.zshrc

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/hive/lib/*

source ~/.zshrc
  • JDK权限引发的异常
1
ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

解决方案:

1
2
3
4
5
6
vi /opt/jdk/jre/lib/security/java.policy

grant {
...
permission javax.management.MBeanTrustPermission "register";
}