Sqoop集群环境搭建 | MySQL数据导出HDFS测试

2022-05-31 10:05:08 浏览数 (1)

1.Sqoop简介

Apache Sqoop是在Hadoop生态体系和*RDBMS体系之间传送数据的一种工具。来自于Apache软件基金会提供。,主要用于在Hadoop(Hive)与传统的数据库间进行数据的传递,可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop工作机制是将导入或导出命令翻译成mapreduce程序来实现。在翻译出的mapreduce中主要是对inputformat和outputformat进行定制。

Hadoop生态系统包括:HDFS、Hive、Hbase等

RDBMS体系包括:Mysql、Oracle等关系型数据库

Sqoop可以理解为:“SQL 到 Hadoop 和 Hadoop 到SQL”

2.Sqoop安装

1.sqoop安装包解压

对应安装包可以私聊获取,在主节点node1上进行安装。

代码语言:javascript复制
#解压
tar -xf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /app
#修改安装包名字
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop-1.4.6

2.修改配置文件

Sqoop的运行依赖于Hadoop,导入Hive的环境变量是因为MySQL导入到Hive需要用到Hive依赖。具体搭建流程可以再环境搭建专栏进行查看。

ZK的环境变量可以用于将数据导入到HBase。这个根据个人情况进行配置。

代码语言:javascript复制
 vim /app/sqoop-1.4.6/sqoop-env.sh 
 
 #增加如下内容
export HADOOP_COMMON_HOME=/app/hadoop-3.1.3
export HADOOP_MAPRED_HOME=/app/hadoop-3.1.3
export HIVE_HOME=/app/hive
export ZOOKEEPER_HOME=/app/zookeeper-3.5.7
export ZOOCFGDIR=/app/zookeeper-3.5.7/conf

3.添加JDBC驱动

代码语言:javascript复制
#将mysql-connector-java-5.1.48.jar上传到sqoop的lib的目录
cp mysql-connector-java-5.1.48.jar /app/sqoop-1.4.6/lib

3.Sqoop运行测试

代码语言:javascript复制
#使用bin/sqoop help 可以看到一些提示命令
#测试Sqoop是否可以连接到数据库运行如下命令,注意你机器的数据库密码与端口根据情况修改。可以看到如下的数据库信息输出
bin/sqoop list-databases --connect jdbc:mysql://node1:3306/ --username root --password 123456

4.MySQL数据导出到HDFS

在mysql建立个表,两个字段id 与name 用于测试

代码语言:javascript复制
mysql> insert into mysql_hdfs values(1,"test");
Query OK, 1 row affected (0.00 sec)

mysql> insert into mysql_hdfs values(2,"tes2");
Query OK, 1 row affected (0.00 sec)

mysql> insert into mysql_hdfs values(3,"te3s");
Query OK, 1 row affected (0.00 sec)
代码语言:javascript复制
#运行如下的命令导出数据到HDFS
#前三个字段用于配置基本的连接信息     

参数解释:
--table:mysql的表   
--columns:导出的列
--target-dir:到HDFS的目标路径
--split-by:指的是map端的切片操作,按照id进行切片
--fields-terminated-by 't':mysql中的是结构化数据,导入HDFS指定分隔符

bin/sqoop import 
--connect jdbc:mysql://node1:3306/test 
--username root 
--password 123456 
--table mysql_hdfs 
--columns id,name 
--target-dir /sql_hdfs 
--delete-target-dir 
--fields-terminated-by 't' 
--num-mappers 2 
--split-by id

这里解释一下 --split-by的分片规则

切片规则:假如说id的最大值为20,最小值是1,那么切片的时候就会分成两份1-10,10-20,之后每个部分一个map。

运行上面的命令后可以在HDFS对应的路径查看生成的内容。

到这里sqoop的正常使用测试完成

0 人点赞