Sqoop 组件安装与配置
下载和解压 Sqoop
- Sqoop相关发行版本可以通过官网 https://mirror-hk.koddos.net/apache/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 组件安装与配置的更多相关文章
- 大数据之路week07--day06 (Sqoop 的安装及配置)
Sqoop 的安装配置比较简单. 提供安装需要的安装包和连接mysql的驱动的百度云链接: 链接:https://pan.baidu.com/s/1pdFj0u2lZVFasgoSyhz-yQ 提取码 ...
- sqoop的安装与配置
最近需要将MySQL的数据导出到HDFS,所以搜到了sqoop2.跟sqoop1相比,sqoop2的好处是直接使用程序连接到集群上的sqoop,远程操作.流程是需要先创建link也可以理解成要操作的对 ...
- 【Hadoop】9、Sqoop组件
目录 Sqoop组件安装与配置 1.使用xftp将软件包上传到/opt/software 2.部署sqoop(在master上执行) 3.启动sqoop集群(在master上执行) 4.连接hive配 ...
- Hive 组件安装配置
下载和解压安装文件 基础环境和安装准备 Hive组件的部署规划和软件包路径如下: (1)当前环境中已安装 Hadoop全分布系统 (2)本地安装 MySQL数据库(账号 root,密码 Passwor ...
- 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. ...
- Sqoop环境安装
环境下载 首先将下载的 sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz放到 /usr/hadoop/目录下(该目录可以自定义,一般为Hadoop集群安装目录),然 ...
- Sqoop的安装配置及使用
一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...
- 6.安装和配置OpenStack图片服务组件
安装和配置图片服务组件 这里是安装在控制器上 安装和配置图片服务组件 yum install –y openstack-glance python-glanceclient 编辑/etc/glance ...
- Tomcat系列之服务器的安装与配置以及各组件详解
Tomcat系列之服务器的安装与配置以及各组件详解 大纲 一.前言 二.安装与配置Tomcat 三.Tomcat 目录的结构 四.Tomcat 配置文件 注,本文的测试的操作系统为CentOS 6.4 ...
随机推荐
- 记一次学习kibaba踩过的坑(Windows环境)
下载地址 ElasticSearch:https://www.elastic.co/cn/downloads/elasticsearchLogstash:https://www.elastic.co/ ...
- jvm造轮子
博客内容来源于 刘欣老师的课程,刘欣老师的公众号 码农翻身 博客内容来源于 Java虚拟机规范(JavaSE7) 博客内容的源码 https://gitee.com/zumengjie/litejvm ...
- Vue.js与ElementUI搭建无限级联层级表格组件
前言 今天,回老家了.第一件事就是回家把大屏安排上,写作的感觉太爽了,终于可以专心地写文章了.我们今天要做的项目是怎么样搭建一个无限级联层级表格组件,好了,多了不多说,赶快行动起来吧!项目一览 到底是 ...
- React中setState方法说明
setState跟新数据是同步还是异步? setState跟新数据是异步的. 如何用代码表现出来是异步的. 点击按钮更新数据,然后去打印这个值看一下 setState跟新数据是异步的 class Fa ...
- weiphp 插件"通用表单"BUG修改
修改文件目录 在类FormsValueController 中添加函数 // 匹配函数 //$value:字符串 //$validate_rule:正则规则 // return true:比配成功,f ...
- 使用vue实现排序算法演示动画
缘起 最近做的一个小需求涉及到排序,界面如下所示: 因为项目是使用vue的,所以实现方式很简单,视图部分不用管,本质上就是操作数组,代码如下: { // 上移 moveUp (i) { // 把位置i ...
- Nacos开机自启
1.添加nacos.service文件 vi /lib/systemd/system/nacos.service 2.将以下内容写到nacos.service文件中 ps:我的nacos路径是/usr ...
- Timer和ScheduledThreadPoolExecutor的区别
Timer 基于单线程.系统时间实现的延时.定期任务执行类.具体可以看下面红色标注的代码. public class Timer { /** * The timer task queue. This ...
- ArrayList分析2 :Itr、ListIterator以及SubList中的坑
ArrayList分析2 : Itr.ListIterator以及SubList中的坑 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/16409137.html ...
- arcgis中栅格矢量计算技巧收藏
编辑 一.计算面积 ( 可以帮我们计算小班面积 )添加 AREA 字段,然后右键点击字段列,然后点击 CALCULATE VALUES; ---> 选择 ADVANCED -->把下 ...