sqoop:
概念及功能:
数据迁移的,数据移动
原来数据管理是集中式管理
将原来的集中式管理的数据 移动到分布式平台下
sqoop就是将传统的关系型数据库的数据和大数据据平台之间的数据迁移
迁移有两个方向:
1)关系型数据库mysql/oracle----》大数据平台(hadoop,hive,hbase)
数据导入
2)大数据平台(hadoop hive hbase)----》关系型数据库(mysql)
数据导出
通常用于 分析结果数据从hive或hdfs导出到mysql中 便于前台展示
sqoop是关系型数据库和大数据平台的桥梁
注意:这里的大数据平台指的是hadoop的广义概念
hadoop:
1)狭义
专门指hadoop组件
2)广义:
hadoop生态圈的所有组件
hadoop hive hbase zookeeper ......
sqoop的数据导入和数据导出的本质:
数据导入:mysql----》hadoop
将mysql的数据复制到hadoop上
实质上是将sqoop的命令转换为MR任务进行执行
重新定义的数据输入 将原来的数据输入(hdfs)转为
从mysql数据库进行读数据的数据输入
数据导出:hadoop-----》mysql
实质上相当于重新定义了MR的输出
实质上是将sqoop的命令转换为MR任务进行执行
输出是mysql或oracle数据库
这里的sqoop的命令转换的MR任务 不需要reduce任务的 只需要Map任务
sqoop的安装:
sqoop1.4.6
版本介绍:
sqoop1.0版本 主流
1.99.3
sqoop2.0版本
只需要安装一个节点:
mysql
hdfs
hive
hbase
保证节点上有以上的大数据相关服务
hadoop02
安装步骤:
1)上传
2)解压
tar -xvzf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
3)配置环境变量
export SQOOP_HOME=/home/hadoop/apps/sqoop-1.4.6.bin__hadoop-2.0.4-alpha
export HIVE_HOME=/home/hadoop/apps/apache-hive-2.3.2-bin
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin:
H
A
D
O
O
P
H
O
M
E
/
b
i
n
:
HADOOP_HOME/bin:
HADOOPHOME/bin:HADOOP_HOME/sbin:
Z
O
O
K
E
E
P
E
R
H
O
M
E
/
b
i
n
:
ZOOKEEPER_HOME/bin:
ZOOKEEPERHOME/bin:HIVE_HOME/bin:$SQOOP_HOME/bin
4)生效环境变量 并验证
source /etc/profile
sqoop version
5)修改配置文件
cp sqoop-env-template.sh sqoop-env.sh
修改配置文件解析:
#Set path to where bin/hadoop is available
#export HADOOP_COMMON_HOME=
#Set path to where hadoop-*-core.jar is available
#export HADOOP_MAPRED_HOME=
#set the path to where bin/hbase is available
#export HBASE_HOME= hbase的目录
#Set the path to where bin/hive is available
#export HIVE_HOME=HIVe的安装目录
#Set the path for where zookeper config dir is
#export ZOOCFGDIR=zokeeper的conf文件的目录
hadoop的common mapreduce为什么需要分开配置:
开源:
hadoop来说 common mapreduce都在一个安装包中
对于开源的来说上面的两个都是hadoop的安装目录
商业版:
CDH
HDP
对于商业版本的hadoop来说 common和mapreduce分别、
安装在不同的目录下的
6)将mysql的驱动放在sqoop的lib包下
/home/hadoop/apps/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib
7)测试:
sqoop list-databases \
--connect jdbc:mysql://hdp1:3306/ \
--username root \
--password 123456
报错:
Access denied for user root@hdp01 (using password :YES)
原因:mysql的用户名密码不对
去mysql中查看root@hdp01用户名对的密码
root@hdp01:指的是hdp01主机 用户 root对应的密码
去mysql的mysql库中:
use mysql;
查询user表
select user,host,password from user;
集体修改一下密码:
update user set password=PASSWORD("123456") where host='hadoop02';
update user set password=PASSWORD("123456") where user='root';
select user,host,password from user;
刷新权限
flush privileges;
退出mysql并重启mysql服务
sudo service mysqld restart
sqoop的使用:
sqoop help 查看所有的sqoop的命令
import 数据导入
export 数据导出
sqoop help import
sqoop help export