sqoop的安装

概览

1.sqoop简介
2.sqoop的安装和配置
3.测试
4. 异常处理

1.sqoop简介

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

sqoop 是 apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具。

核心的功能有两个:导入和导出!

导入数据:MySQL,Oracle 导入数据到 Hadoop 的 HDFS、HIVE、HBASE 等数据存储系统

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

sqoop:

工具:本质就是迁移数据, 迁移的方式:就是把sqoop的迁移命令转换成MR程序

hive

工具,本质就是执行计算,依赖于HDFS存储数据,把SQL转换成MR程序

工作原理是将导入或导出命令翻译成 MapReduce 程序来实现 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制

2.sqoop的安装和配置

软件:sqoop-1.4.7.bin__hadoop-2.6.0.tar
2.1.安装
在/usr下创建个sqoop文件夹,作为压缩包的存放路径和解压路径

#进入/usr下
[root@master ~]# cd /usr/
#创建sqoop文件夹
[root@master usr]# mkdir sqoop
[root@master usr]# ls
bin  etc  games  hadoop  include  java  lib  lib64  libexec  local  sbin  share  sqoop  src  tmp  zookeeper
#进入sqoop下
[root@master usr]# cd sqoop
[root@master sqoop]# 

利用Xshell连接虚拟机,并利用Xftp将sqoop压缩包上传到sqoop文件夹下
在这里插入图片描述
解压sqoop

[root@master sqoop]# tar -zxf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 

2.2.配置profile环境变量
进入到根目录的etc文件夹下,更改profile文件

[root@master sqoop]# vim /etc/profile

在profile最后添加

export SQOOP_HOME=/usr/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0
export PATH=$PATH:$SQOOP_HOME/bin

保存退出,刷新profile

[root@master sqoop]# source /etc/profile

2.3拷贝驱动

将数据库连接驱动拷贝到$SQOOP_HOME(sqoop安装目录)/lib里
进入到你的sqoop安装目录的lib下,利用Xftp将驱动传输进去
我的mysql数据库连接驱动的百度云链接:https://pan.baidu.com/s/1wCBuZQaCP_nKT5t504SeoA
提取码:fakd

2.4.使用前准备,mysql允许远程连接
如果你在安装mysql的时候已经允许过了,就可以跳过这个步骤

#进入mysql
[root@master sqoop]# mysql
#允许远程连接
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
#刷新权限
mysql>FLUSH PRIVILEGES;

2.5.集群配置
如果是集群可以将sqoop发送到其他主机上,伪集群版可以跳过
发送sqoop

[root@master sqoop]# scp -r /usr/sqoop root@slave1:/usr/

[root@master sqoop]# scp -r /usr/sqoop root@slave2:/usr/

发送配置好的profile文件

[root@master sqoop]# scp -r /etc/profile root@slave1:/etc/

[root@master sqoop]# scp -r /etc/profile root@slave2:/etc/

分别刷新profile

[root@slave1 ~]# source /etc/profile

[root@slave2 ~]# source /etc/profile

3.测试

关闭防火墙

systemctl stop firewalld

分别在集群的Zookeeper安装目录下的bin下启动Zookeeper

[root@master sqoop]# cd /usr/zookeeper/zookeeper-3.4.12/bin/
#启动Zookeeper
[root@master bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

确保的你的集群正常启动,请参考Hadoop HA高可用集群搭建

[root@master bin]# start-all.sh

然后随便在哪个目录下(已经设置完成环境变量)输入

#mysql后是我安装mysql主机的ip地址
[root@master bin]#  sqoop list-databases --connect jdbc:mysql://192.168.134.154:3306/ --username root --password root

在这里插入图片描述

在分别在别的虚拟机使用sqoop看结果是否相同
如上图则说明sqoop安装成功了

4. 异常处理

如果你出了类似的异常

18/10/23 21:07:17 ERROR manager.CatalogQueryManager: Failed to list databases
java.sql.SQLException: Access denied for user 'root'@'master' (using password: YES)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4208)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4140)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925)

利用SQLyog或者Navicat连接虚拟机数据库
在这里插入图片描述

在这里插入图片描述
将%这行的password复制给上面所以没有password的保存
在这里插入图片描述
然后重启数据库服务

[root@master bin]# systemctl restart mysqld

再次尝试,应该就能成功了

[root@master bin]#  sqoop list-databases --connect jdbc:mysql://192.168.134.154:3306/ --username root --password root

分别在别的虚拟机上查看是否成功

[root@slave1 sbin]#  sqoop list-databases --connect jdbc:mysql://192.168.134.154:3306/ --username root --password root

[root@slave2 sbin]#  sqoop list-databases --connect jdbc:mysql://192.168.134.154:3306/ --username root --password root

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值