下载和解压 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. 10.Linux防火墙iptables之SNAT与DNAT

    Linux防火墙iptables之SNAT与DNAT 目录 Linux防火墙iptables之SNAT与DNAT SNAT策略及应用 SNAT策略概述 SNAT策略典型应用环境 SNAT策略原理 SN ...

  2. Vue.js与ElementUI搭建无限级联层级表格组件

    前言 今天,回老家了.第一件事就是回家把大屏安排上,写作的感觉太爽了,终于可以专心地写文章了.我们今天要做的项目是怎么样搭建一个无限级联层级表格组件,好了,多了不多说,赶快行动起来吧!项目一览 到底是 ...

  3. SAP IDOC

    物料主数据 供应商主数据 价格档案 采购订单 采购计划协议 srm发货单 物料凭证 发票校验 发票校验过账或删除信息返回 CALL FUNCTION 'BAPI_INCOMINGINVOICE_PAR ...

  4. 解开XAML的邪恶面纱

    什么是XAML,首先我们看下它的外观 <Window x:Class="Blend_WPF.WindowStyle"        xmlns="http://sc ...

  5. Python制作手游《和平精英》游戏资料查询助手

    写在前面的一些P话: <和平精英>这个游戏想必大家都玩过了,今天来教大家制作一个<和平精英>游戏的资料查询助手 受害者地址: https://gp.qq.com/main.sh ...

  6. SpringBoot项目集成Swagger启动报错: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is

    使用的Swagger版本是2.9.2.knife4j版本是2.0.4. SpringBoot 版本是2.6.2将SpringBoot版本回退到2.5.6就可以正常启动

  7. Java双重校验单例模式详解

    单例模式双重检测java实现: public class Singleton { private volatile static Singleton instance = null; //#1 pub ...

  8. 揭开服务网格~Istio Service Mesh神秘的面纱

    目录 一.写在前面 二.微服务与K8S 三.服务网格与K8S 四.常见的产品 五.Istio架构 六.Istio的核心资源介绍 6.1.VirtualService 6.2.Destination R ...

  9. MATLAB复习资料——浙商大管工学院适用

    包含12套复习卷,课堂PPT 下载链接:MATLAB练习模拟题库(12套).pdf - 蓝奏云 (lanzoub.com)

  10. Operating System_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/F 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...