下载和解压 Sqoop

安装 Sqoop组件需要与 Hadoop环境适配。使用 root用户在 Master节点上进行部署,将 /opt/software/sqoop-1.4.7.bin_hadoop-2.6.0.tar.gz 压 缩 包 解 压 到/usr/local/src目录下

[root@master ~]# tar -zxvf /opt/software/sqoop-1.4.7.bin_hadoop-2.6.0.tar.gz -C /usr/local/src
#将解压后生成的 sqoop-1.4.7.bin_hadoop-2.6.0文件夹更名为 sqoop
[root@master ~]# cd /usr/local/src/
[root@master src]#mv sqoop-1.4.7.bin_hadoop-2.6.0 sqoop

配置 Sqoop 环境

步骤一:创建 Sqoop 的配置文件 sqoop-env.sh

#复制 sqoop-env-template.sh模板,并将模板重命名为 sqoop-env.sh
[root@master ~]# cd /usr/local/src/sqoop/conf/
[root@master conf]# cp sqoop-env-template.sh sqoop-env.sh

步骤二:修改 sqoop-env.sh 文件,添加 Hdoop、Hbase、Hive 等组件的安装路径

#注意,下面各组件的安装路径需要与实际环境中的安装路径保持一致
[root@master conf]# vi sqoop-env.sh
export HADOOP_COMMON_HOME=/usr/local/src/hadoop
export HADOOP_MAPRED_HOME=/usr/local/src/hadoop
export HBASE_HOME=/usr/local/src/hbase
export HIVE_HOME=/usr/local/src/hive

步骤三:配置 Linux 系统环境变量,添加 Sqoop 组件的路径

[root@master conf]# vi /etc/profile
#在文件末尾添加
# set sqoop environment
export SQOOP_HOME=/usr/local/src/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
export CLASSPATH=$CLASSPATH:$SQOOP_HOME/lib

步骤四:连接数据库

为了使 Sqoop能够连接 MySQL数据库,需要将/opt/software/mysql-connector-java-5.1.46.jar文件放入 sqoop的 lib目录中。该 jar文件的版本需要与 MySQL数据库的版本相对应,否则 Sqoop导入数据时会报错。(mysql-connector-java-5.1.46.jar对应的是 MySQL 5.7版本)若该目录没有 jar包,则使用第 6章导入 home目录的 jar包

[root@master ~]# cp /opt/software/mysql-connector-java-5.1.46.jar
/usr/local/src/sqoop/lib/

启动 Sqoop

步骤一:执行 Sqoop 前需要先启动 Hadoop 集群

#在 master节点切换到 hadoop用户执行 start-all.sh命令启动 Hadoop集群
[root@master ~]# su - hadoop
[hadoop@master ~]$ source /etc/profile
[hadoop@master ~]$ start-all.sh

步骤二:检查 Hadoop 集群的运行状态

[hadoop@master ~]$ jps
1457 NameNode
1795 ResourceManager
2060 Jps
1646 SecondaryNameNode

步骤三:测试 Sqoop 是否能够正常连接 MySQL 数据库

# Sqoop连接 MySQL数据库 P大写 密码 Password123$
[hadoop@master ~]$sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root -P Warning: /home/hadoop/sqoop/../hcatalog does not exist! HCatalog
jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /home/hadoop/sqoop/../accumulo does not exist! Accumulo
imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo
installation.
Warning: /home/hadoop/sqoop/../zookeeper does not exist!
Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper
installation.
19/04/22 18:54:10 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
Enter password: # 此处需要输入 mysql数据库的密码
19/04/22 18:54:14 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
information_schema hive mysql performance_schema
sys #能 够 查 看 到 MySQL 数 据 库 中 的 information_schema 、 hive 、 mysql 、performance_schema、sys等数据库,说明 Sqoop可以正常连接 MySQL。

步骤四:连接 hive

#为了使 Sqoop能够连接 Hive,需要将 hive组件/usr/local/src/hive/lib目录下的hive-common-2.0.0.jar也放入 Sqoop安装路径的 lib目录中

[root@master ~] cp /usr/local/src/hive/lib/hive-common-2.0.0.jar
/usr/local/src/sqoop/lib/

Sqoop 模板命令

步骤一:创建 MySQL 数据库和数据表

创建 sample 数据库,在 sample 中创建 student 表,在 student 表中插入了 3 条数据

# 登录 MySQL数据库
[hadoop@master ~]$ mysql -uroot -p
Enter password: # 创建 sample库
mysql> create database sample;
Query OK, 1 row affected (0.00 sec) # 使用 sample库
mysql> use sample;
Database changed
mysql> create table student(number char(9) primary key, name varchar(10));
Query OK, 0 rows affected (0.01 sec) # 创建 student 表,该数据表有number学号和 name姓名两个字段 # 向 student表插入几条数据
mysql> insert into student values('01','zhangsan');
Query OK, 1 row affected (0.05 sec)
mysql> insert into student values('02','lisi');
Query OK, 1 row affected (0.01 sec)
mysql> insert into student values('03','wangwu');
Query OK, 1 row affected (0.00 sec) # 查询 student表的数据
mysql> select * from student;
+--------+----------+
| number | name |
+--------+----------+
| 01 | zhangsan |
| 02 | lisi |
| 03 | wangwu |
+--------+----------+
3 rows in set (0.00 sec)
mysql> exit

步骤二:在 Hive 中创建 sample 数据库和 student 数据表

[hadoop@master ~]$ hive # 启动 hive命令行

hive> create database sample; # 创建 sample库
OK
Time taken: 0.679 seconds hive> show databases; # 查询所有数据库
OK default
Time taken: 0.178 seconds, Fetched: 2 row(s) hive> use sample; # 使用 sample库
OK hive> create table student(number STRING, name STRING)
row format delimited
fields terminated by "|"
stored as textfile; # 创建 student表
OK hive> exit; # 退出 hive命令行

步骤三:从 MySQL 导出数据,导入 Hive

需要说明该命令的以下几个参数:

1)--connect:MySQL数据库连接 URL。

2)--username和--password:MySQL数据库的用户名和密码。

3)--table:导出的数据表名。

4)--fields-terminated-by:Hive中字段分隔符。

5)--delete-target-dir:删除导出目的目录。

6)--num-mappers:Hadoop执行 Sqoop导入导出启动的 map任务数。

7)--hive-import --hive-database:导出到 Hive的数据库名。

8)--hive-table:导出到 Hive的表名。

[hadoop@master ~]$ sqoop
import --connect jdbc:mysql://master:3306/sample --username root --password Password123$ --table student --fields-terminated-by '|' --delete-target-dir --num-mappers 1 --hive-import --hive-database sample --hive-table student #删除 MySQL数据, student表中 number为主键,添加信息导致主键重复,报错,所以删除表数据
[hadoop@master ~]$mysql -u root -p #密码 Password123$
mysql>use sample;
mysql>delete from student;
mysql>exit;

步骤四:从 Hive 导出数据,导入到 MySQL

需要说明该命令的以下几个参数:

1)--connect:MySQL数据库连接 URL。

2)--username和--password:MySQL数据库的用户名和密码。

3)--table:导出的数据表名。

4)--fields-terminated-by:Hive中字段分隔符。

6)--export-dir:Hive数据表在 HDFS中的存储路径。

[hadoop@master ~]$ sqoop export --connect "jdbc:mysql://master:3306/sample?useUnicode=true&characterEncoding=utf-8" --username root --password Password123$ --table student --input-fields-terminated-by '|' --export-dir /user/hive/warehouse/sample.db/student/*

Sqoop 组件应用

Sqoop常用设置命令如下:

(1)列出 MySQL数据库中的所有数据库

[hadoop@master ~]$ sqoop list-databases -connect jdbc:mysql://localhost:3306/ -username root -password Password123$

(2)连接 MySQL并列出 sample数据库中的表

[hadoop@master ~]$ sqoop list-tables -connect jdbc:mysql://localhost:3306/sample -username root -password Password123$

(3)将关系型数据的表结构复制到 hive中,只是复制表的结构,表中的内容没有复制过去

[hadoop@master ~]$ sqoop create-hive-table -connect jdbc:mysql://localhost:3306/sample -table student -username root -password Password123$ -hive-table test
#其中–table student为 MySQL中的数据库 sample中的表–hive-table test为 hive中新建的表名称

(4)从关系数据库导入文件到 Hive中

[hadoop@master ~]$sqoop import --connect jdbc:mysql://master:3306/sample --username root --password Password123$ --table student --delete-target-dir --num-mappers 1 --hive-import --hive-database default --hive-table test

(5)将 Hive中的表数据导入到 MySQL中,在进行导入之前,MySQL中的表hive_test表必须已经提前创建好

#删除 MySQL数据, student表中 number为主键,添加信息导致主键重复,报错,所以删除表数据
[hadoop@master ~]$ mysql -u root -p #密码 Password123$
mysql>use sample;
mysql>delete from student;
mysql>exit; [hadoop@master ~]$ sqoop export -connect jdbc:mysql://master:3306/sample -username root -password Password123$ -table student --input-fields-terminated-by '\001' -export-dir /user/hive/warehouse/test

(6)从数据库导出表的数据到 HDFS上文件

[hadoop@master ~]$ sqoop import -connect jdbc:mysql://master:3306/sample -username root -password Password123$ -table student --num-mappers 1 -target-dir /user/test

(7)从数据库增量导入表数据到 HDFS中

#密码 Password123$
[hadoop@master ~]$mysql -u root -p
mysql>use sample;
mysql> insert into student values('04','sss');
mysql> insert into student values('05','ss2');
mysql> insert into student values('06','ss3');
#非数值型的值不能当做增量
mysql> alter table student modify column number int;
mysql> exit; [hadoop@master ~]$sqoop import -connect jdbc:mysql://master:3306/sample -username root -password Password123$ -table student --num-mappers 1 -target-dir /user/test -check-column number -incremental append -last-value 0 #查看导入数据
[hadoop@master ~]$hdfs dfs -cat /user/test/part-m-00000



至此已做完了!

Sqoop 组件安装与配置的更多相关文章

  1. 大数据之路week07--day06 (Sqoop 的安装及配置)

    Sqoop 的安装配置比较简单. 提供安装需要的安装包和连接mysql的驱动的百度云链接: 链接:https://pan.baidu.com/s/1pdFj0u2lZVFasgoSyhz-yQ 提取码 ...

  2. sqoop的安装与配置

    最近需要将MySQL的数据导出到HDFS,所以搜到了sqoop2.跟sqoop1相比,sqoop2的好处是直接使用程序连接到集群上的sqoop,远程操作.流程是需要先创建link也可以理解成要操作的对 ...

  3. 【Hadoop】9、Sqoop组件

    目录 Sqoop组件安装与配置 1.使用xftp将软件包上传到/opt/software 2.部署sqoop(在master上执行) 3.启动sqoop集群(在master上执行) 4.连接hive配 ...

  4. Hive 组件安装配置

    下载和解压安装文件 基础环境和安装准备 Hive组件的部署规划和软件包路径如下: (1)当前环境中已安装 Hadoop全分布系统 (2)本地安装 MySQL数据库(账号 root,密码 Passwor ...

  5. hadoop伪分布式组件安装

    一.版本建议 Centos V7.5 Java V1.8 Hadoop V2.7.6 Hive V2.3.3 Mysql V5.7 Spark V2.3 Scala V2.12.6 Flume V1. ...

  6. Sqoop环境安装

    环境下载 首先将下载的 sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz放到 /usr/hadoop/目录下(该目录可以自定义,一般为Hadoop集群安装目录),然 ...

  7. Sqoop的安装配置及使用

    一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...

  8. 6.安装和配置OpenStack图片服务组件

    安装和配置图片服务组件 这里是安装在控制器上 安装和配置图片服务组件 yum install –y openstack-glance python-glanceclient 编辑/etc/glance ...

  9. Tomcat系列之服务器的安装与配置以及各组件详解

    Tomcat系列之服务器的安装与配置以及各组件详解 大纲 一.前言 二.安装与配置Tomcat 三.Tomcat 目录的结构 四.Tomcat 配置文件 注,本文的测试的操作系统为CentOS 6.4 ...

随机推荐

  1. 循环码、卷积码及其python实现

    摘要:本文介绍了循环码和卷积码两种编码方式,并且,作者给出了两种编码方式的编码译码的python实现 关键字:循环码,系统编码,卷积码,python,Viterbi算法 循环码的编码译码 设 \(C\ ...

  2. RPA-UiPath视频教程1

    UiPath下载.安装.激活.第一个案例Helloworld!.参数类型.变量的介绍和使用 https://www.bilibili.com/video/av92816532 RPA直播公开课2020 ...

  3. 自定义监控lvs

    1. 修改zabbix_agent配置文件添加以下内容,重启agent Include=/etc/zabbix/zabbix_agentd.d/ 2. 在zabbix安装目录下的scripts目录下添 ...

  4. 【题解】Educational Codeforces Round 82

    比较菜只有 A ~ E A.Erasing Zeroes 题目描述: 原题面 题目分析: 使得所有的 \(1\) 连续也就是所有的 \(1\) 中间的 \(0\) 全部去掉,也就是可以理解为第一个 \ ...

  5. .NET Core 实现后台任务(定时任务)IHostedService(一)

    原文链接:https://www.cnblogs.com/ysmc/p/16456787.html 最近有小伙伴问道,在 .Net Core 中,如何定时执行任务,而因为需要执行的任务比较简单,并不想 ...

  6. Collection集合概述和集合框架介绍avi

    集合概述 在前面基础班我们已经学习过并使用过集合ArrayList<E> ,那么集合到底是什么呢?· ~集合︰集合是java中提供的一种容器,可以用来存储多个数据集合和数组既然都是容器,它 ...

  7. 总结几个简单好用的Python人脸识别算法

    原文连接:https://mp.weixin.qq.com/s/3BgDld9hILPLCIlyysZs6Q 哈喽,大家好. 今天给大家总结几个简单.好用的人脸识别算法. 人脸识别是计算机视觉中比较常 ...

  8. Go语言基础四:数组和指针

    GO语言中数组和指针 数组 Go语言提供了数组类型的数据结构. 数组是同一数据类型元素的集合.这里的数据类型可以是整型.字符串等任意原始的数据类型.数组中不允许混合不同类型的元素.(当然,如果是int ...

  9. 递归概念&分类&注意事项和使用递归计算1-n之间的和

    递归 概述 递归:指在当前方法内调用自己的这种现象. 递归的分类: 递归分为两种,直接递归和间接递归 直接递归称为方法自身调用自己 简介递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法 注 ...

  10. go-zero单体服务使用泛型简化注册Handler路由

    一.Golang环境安装及配置Go Module https://go-zero.dev/cn/docs/prepare/golang-install mac OS安装Go# 下载并安装Go for ...