Apache Sqoop 安装

1.Sqoop简介

主要是解决关系型数据库与大数据平台的数据迁移。

例如:

MySQL|Oracle ======> Hadoop生态

Hadoop生态 ======> MySQL|Oracle

sqoop进行数据迁移的本质

sqoop就是将sqoop的命令转换为mapreduce任务进行数据迁移的。sqoop是hadoop的另一种形式的客户端

1)数据导入

sqoop 使用了DBInputFormat,即默认使用了从数据库输入

map端

​ DBInputFormat 数据库输入

​ 获取一条一条的数据

​ context.write();

​ FileOutputFormat() 指定输出路径 dfs

2)数据导出

map端

​ FileInputFormat

​ 一行一行读取

​ context.write();

​ 写出数据到mysql数据库中

​ DBOutputFormat将数据写出到MySQL中

​ 定制了输出

2.Sqoop 的安装
1)Sqoop版本

版本: 1.4.x系列 即 sqoop 1

​ 1.99.系列 即 sqoop 2

我们这里选择 Sqoop-1.4.7 版本

2)安装准备

保证hive,hadoop,MySQL,HBASE,jdk可用

安装节点:

​ 1个节点,该节点必须可以访问到大数据平台客户端(hdfs,hive)

​ 即如果需要用到hive的话,需要装到安装有hive的节点

3)解压安装包并配置环境变量

下载地址:

① 官网:wget http://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

② 华科镜像源:wget http://mirrors.hust.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

将sqoop安装包上传到hive客户端所在节点,开始解压

[hadoop@mycat01 ~]$ sudo chown hadoop:hadoop sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

[hadoop@mycat01 ~]$ chmod u+x sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

[hadoop@mycat01 ~]$ tar-zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

[hadoop@mycat01 ~]$ ln -s sqoop-1.4.7.bin__hadoop-2.6.0 sqoop

开始配置环境变量

sudo vim /etc/profile

配置环境变量:(没有回车----zookeeper集群已经在前面谈到,Hadoop的HA也说到)

export JAVA_HOME=/opt/jdk1.8.0_73
export HADOOP_HOME=/home/hadoop/hadoop-2.7.6
export HIVE_HOME=/opt/hive
export ZOO_HOME=/home/hadoop/zk
export SQOOP_HOME=/home/hadoop/sqoopPATH=$PATH:$REDIS_HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOO_HOME/bin:$SQOOP_HOME/bin

使配置文件生效

source /etc/profile
4)修改sqoop的配置文件
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.7.6

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.7.6

#set the path to where bin/hbase is available
# export HBASE_HOME=

#Set the path to where bin/hive is available
export HIVE_HOME=/opt/hive
export HIVE_CONF_DIR=/opt/hive/conf

#Set the path for where zookeper config dir is
export ZOOCFGDIR=/home/hadoop/zk/conf
# set zookeeper_home
export ZOOKEEPER_HOME=/home/hadoop/zk

注意:上面我多添加了两项(因为自己在装1.4.7版本时报错说这两个没有设置,然后改的)

export HIVE_CONF_DIR=/opt/hive/conf

export ZOOKEEPER_HOME=/home/hadoop/zk

HADOOP_COMMON_HOMEHADOOP_MAPRED_HOME分别是Hadoop 的 common模块和mapreduce模块的核心jar包所在目录,直接配置成hadoop更目录就好了。

5)将MySQL或者Oracle等的驱动包上传到sqoop的lib目录下

建议使用5.x的驱动包,8.x系列的驱动包可能连接的时候一堆问题,设置一些参数虽然可以搞定,此处为了方便,便采用了5.x系列

6)拷贝hive的jar包到sqoop的lib目录
cp /opt/hive/lib/hive-exec-2.3.4.jar /home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/lib/
7)测试

测试前请保证hadoop集群所有DataNode节点能够访问到MySQL

也就说要配置MySQL远程访问。

mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *3C9208F77DE51912A81F33B800626A3C097BBC1F |
| root | mycat01   | *3C9208F77DE51912A81F33B800626A3C097BBC1F |
| root | %         | *3C9208F77DE51912A81F33B800626A3C097BBC1F |
+------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

为了方便,此处直接配置 %,即所有主机都可以访问(用户名和密码对应)

开始测试:

[hadoop@mycat01 conf]$ sqoop  list-databases \
> --connect  jdbc:mysql://mycat01:3306/ \
> --username root \
> --password  miku;
Warning: /home/hadoop/sqoop/../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
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.
19/03/28 22:05:07 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
19/03/28 22:05:07 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
19/03/28 22:05:07 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
information_schema
azkabandb
hivedb
mysql
test

查询当前客户端(mycat01)的MySQL中有哪些数据库。

至此sqoop安装成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值