SQOOP 部署及导入数据到 Hive 的实际应用

目录

写在最前:

1、核心的功能有两个

2、sqoop 版本说明

一、部署

1、安装前准备

2、创建用户和组

3、解压到指定目录

4、添加系统环境变量

5、创建 sqoop-env.sh 文件

5.1 创建

5.2 编辑 sqoop-env.sh

6、验证安装是否成功

6.1 执行 configure-sqoop 命令,如果报如下错误处理

6.2 sqoop-version 或者 sqoop version 验证

7、列出MySQL数据有哪些数据库

二、绿色部署 SQOOP

1、解压 HIGO 配置好的 Sqoop 包

2、建立新的软连接

3、删除系统环境变量 sqoop.sh

三、SQOOP 从 MySQL 导入到 Hive 之 Python 脚本

四、SQOOP 通过 MyCat 从 MySQL 导入数据到 Hive


写在最前:

Sqoop 是 Hive、HDFS、Hbase 等与 RDMBS(mysql 等)之间的沟通桥梁,主要通过 JDBC 与 RDMBS 进行交互。有两个版本Sqoop1 和 Sqoop2,Sqoop1 架构简单,使用非常方便(由于我使用的是 Sqoop1,所以本文主要介绍 Sqoop1),Sqoop2 是 C/S 架构,需要一个 Tomcat 部署 Server 端,并且提供了更多的访问方式:REST API、WEBUI、CLI、JAVA API 等,并且提供了更安全的访问方式(主要是密码不会是明文)。但是 Sqoop 主要在内网是用所以这都无所谓了。

1、核心的功能有两个

  • 导入数据:MySQL,Oracle 导入数据到 Hadoop 的 HDFS、HIVE、HBASE 等数据存储系统
  • 导出数据:从 Hadoop 的文件系统中导出数据到关系数据库 mysql 等 Sqoop 的本质还是一个命令行工具,和 HDFS,Hive 相比,并没有什么高深的理论

2、sqoop 版本说明

  1. 绝大部分企业所使用的 sqoop 的版本都是 sqoop1
  2. sqoop-1.4.6 或者 sqoop-1.4.7 它是 sqoop1
  3. sqoop-1.99.4----都是 sqoop2
  4. 此处使用 sqoop-1.4.7 版本 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

一、部署

1、安装前准备

# 下载地址:http://mirrors.hust.edu.cn/apache/
# 确保已经提前安装好hadoop、hive
# 下载mysql的连接jar包,下载地址:http://central.maven.org/maven2/mysql/mysql-connector-java/8.0.9-rc/mysql-connector-java-8.0.9-rc.jar

2、创建用户和组

# groupadd sqoop
# useradd -g sqoop sqoop
# passwd sqoop
Changing password for user sqoop.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

3、解压到指定目录

# tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /hadoop/
# chown -R hadoop.hadoop /hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/
# 加入 mysql 驱动包到 lib 目录下
# 官网 https://dev.mysql.com/downloads/connector/j/5.1.html 下线支持高版本的jar文件
# cd /hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/
# mysql-connector-java-5.1.47.jar
# cd /hadoop
# mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop-1.4.7
# ln -s sqoop-1.4.7 sqoop
# chown hadoop.hadoop ./sqoop -R

4、添加系统环境变量

# vim /etc/profile.d/sqoop.sh

export SQOOP_HOME=/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0
export PATH=$SQOOP_HOME/bin:$PATH
  
# source /etc/profile

5、创建 sqoop-env.sh 文件

5.1 创建

# cd /hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/conf
# cp sqoop-env-template.sh sqoop-env.sh

5.2 编辑 sqoop-env.sh

23 export HADOOP_COMMON_HOME=/hadoop/hadoop-2.7.1
26 export HADOOP_MAPRED_HOME=/hadoop/hadoop-2.7.1/share/hadoop/mapreduce
37 export HADOOP_CLIENT_OPTS="-Xmx3000m" 
  
## 为什么在sqoop-env.sh 文件中会要求分别进行 common和mapreduce的配置呢???
 # 在apache的hadoop的安装中;四大组件都是安装在同一个hadoop_home中的
 # 但是在CDH, HDP中, 这些组件都是可选的。
 # 在安装hadoop的时候,可以选择性的只安装HDFS或者YARN,
 # CDH,HDP在安装hadoop的时候,会把HDFS和MapReduce有可能分别安装在不同的地方。

6、验证安装是否成功

6.1 执行 configure-sqoop 命令,如果报如下错误处理

# /hadoop/sqoop-1.4.7/bin/configure-sqoop
Warning: /hadoop/sqoop-1.4.7/../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /hadoop/sqoop-1.4.7/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /hadoop/sqoop-1.4.7/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /hadoop/sqoop-1.4.7/../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
  
# 解决方法:
# vim /hadoop/sqoop-1.4.7/bin/configure-sqoop    ## 注释掉以下内容:
128 ### Moved to be a runtime check in sqoop.
129 #if [ ! -d "${HBASE_HOME}" ]; then
130 #  echo "Warning: $HBASE_HOME does not exist! HBase imports will fail."
131 #  echo 'Please set $HBASE_HOME to the root of your HBase installation.'
132 #fi
133
134 ### Moved to be a runtime check in sqoop.
135 #if [ ! -d "${HCAT_HOME}" ]; then
136 #  echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."
137 #  echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
138 #fi
139
140 #if [ ! -d "${ACCUMULO_HOME}" ]; then
141 #  echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail."
142 #  echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.'
143 #fi
144 #if [ ! -d "${ZOOKEEPER_HOME}" ]; then
145 #  echo "Warning: $ZOOKEEPER_HOME does not exist! Accumulo imports will fail."
146 #  echo 'Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.'
147 #fi
  
# /hadoop/sqoop-1.4.7/bin/configure-sqoop

6.2 sqoop-version 或者 sqoop version 验证

# /hadoop/sqoop-1.4.7/bin/sqoop-version
19/06/24 16:54:29 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
 
# /hadoop/sqoop-1.4.7/bin/sqoop version
19/06/24 16:54:35 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 

7、列出MySQL数据有哪些数据库

# /hadoop/sqoop-1.4.7/bin/sqoop list-tables --connect "jdbc:mysql://10.20.0.65:3220/higo_bim?useSSL=false" --username mycat_reader --password "w3FsIAQ7"
19/06/24 17:17:40 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
19/06/24 17:17:40 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
19/06/24 17:17:40 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
t_bim_follow_target
t_bim_like_target
t_bim_notify_msg
t_bim_notify_subscribe
t_bim_user_follow
t_bim_user_like
t_bim_user_motivate_log
t_bim_user_notify_list
t_bim_user_system_announcement_list

二、绿色部署 SQOOP

前提是必须统一配置好所谓的‘绿色包’,这样就可以一键解压使用了。

1、解压 HIGO 配置好的 Sqoop 包

# tar -jxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.bz2 -C /hadoop/

2、建立新的软连接

# cd /hadoop/
# ll
total 16
lrwxrwxrwx  1 hadoop hadoop   20 Feb 28  2016 hadoop -> /hadoop/hadoop-2.7.1
drwxr-xr-x 12 hadoop hadoop 4096 Feb 28  2016 hadoop-2.7.1
lrwxrwxrwx  1 hadoop hadoop   10 Sep  5  2016 hive -> hive-2.1.0
drwxr-xr-x  9 hadoop hadoop 4096 Jun 20 15:08 hive-2.1.0
lrwxrwxrwx  1 root   root     11 Jun 25 11:50 sqoop -> sqoop-1.4.7
drwxr-xr-x  9 hadoop hadoop 4096 Jun 25 10:58 sqoop-1.4.6.bin__hadoop-2.0.4-alpha
drwxr-xr-x  9 hadoop hadoop 4096 Jun 25 11:01 sqoop-1.4.7
  
# rm -rf sqoop
# ln -s ssqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop
# chown hadoop.hadoop ./sqoop -R
# ll
total 16
lrwxrwxrwx  1 hadoop hadoop   20 Feb 28  2016 hadoop -> /hadoop/hadoop-2.7.1
drwxr-xr-x 12 hadoop hadoop 4096 Feb 28  2016 hadoop-2.7.1
lrwxrwxrwx  1 hadoop hadoop   10 Sep  5  2016 hive -> hive-2.1.0
drwxr-xr-x  9 hadoop hadoop 4096 Jun 20 15:08 hive-2.1.0
lrwxrwxrwx  1 hadoop hadoop   35 Feb 28  2016 sqoop -> sqoop-1.4.6.bin__hadoop-2.0.4-alpha
drwxr-xr-x  9 hadoop hadoop 4096 Jun 25 10:58 sqoop-1.4.6.bin__hadoop-2.0.4-alpha
drwxr-xr-x  9 hadoop hadoop 4096 Jun 25 11:01 sqoop-1.4.7

3、删除系统环境变量 sqoop.sh

# 因为存在多版本,所以不配置系统环境变量,上面已经添加了软连接,项目中直接绝对路径指定
# rm -rf /etc/profile.d/sqoop.sh
# source /etc/profile

三、SQOOP 从 MySQL 导入到 Hive 之 Python 脚本

四、SQOOP 通过 MyCat 从 MySQL 导入数据到 Hive

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值