下载和解压 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. ShardingSphere-proxy-5.0.0分布式雪花ID生成(三)

    一.目的 保证在分库分表中每条数据具有唯一性 二.修改配置文件config-sharding.yaml,并重启服务 # # Licensed to the Apache Software Founda ...

  2. 『忘了再学』Shell流程控制 — 39、特殊流程控制语句

    目录 1.特殊流程控制语句介绍 2.exit语句 3.break语句 4.continue语句 1.特殊流程控制语句介绍 Shell程序或者说其他的程序,都是顺序执行的,也就是第一行执行完再执行第二行 ...

  3. DDos、CC攻击与防御

    DDoS介绍 DDoS是英文Distributed Denial of Service的缩写,意即"分布式拒绝服务",那么什么又是拒绝服务(Denial of Service)呢? ...

  4. MySQL--数据过滤(AND、OR、IN、NOT操作符)

    MySQL允许给出多个WHERE子句.这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用. 1.组合WHERE子句 1.1 AND操作符 SELECT prod_id,prod_pric ...

  5. 浮点数(UVa11809)题解

    浮点数(UVa11809)题解 如题 计算机常用阶码-尾数的形式保存浮点数.如下所示,若阶码有6位,尾数有8位,可以表达的最大的浮点数为0.1111111112 * 2 ^ 1111112.注意小数点 ...

  6. python 线程理解

    简介 一个应用程序由多个进程组成,一个进程有多个线程,一个线程则是操作系统调度的最小单位,当应用程序运行时,操作系统根据优先级和时间片调度线程(决定此时此刻执行哪个线程). python的线程 pyt ...

  7. 中高级Java程序员,挑战20k+,知识点汇总(一),Java修饰符

    1 前言 工作久了就会发现,基础知识忘得差不多了.为了复习下基础的知识,同时为以后找工作做准备,这里简单总结一些常见的可能会被问到的问题. 2 自我介绍 自己根据实际情况发挥就行 3 Java SE ...

  8. 一文搞懂│php 中的 DI 依赖注入

    目录 什么是 DI / 依赖注入 依赖注入出现的原因 简单的依赖注入 高阶的依赖注入 依赖注入的应用 依赖注入高阶优化 什么是 DI / 依赖注入 依赖注入DI 其实本质上是指对类的依赖通过构造器完成 ...

  9. Java学习 (七)基础篇 变量

    变量 变量顾名思义,就是可以变化的量 Java是一种强类型语言,每个变量都必须声明其类型 Java变量是程序中最基本的存储单位,其要素包括变量名.变量类型和作用域 type varName [=val ...

  10. lamp平台构建

    目录 lamp平台构建 安装httpd 安装mysql 安装php 配置apache 启用代理模块 配置虚拟主机 启用代理模块 验证 lamp平台构建 环境说明: 系统平台 IP 需要安装的服务 ce ...