Sqoop

目录

1、数据集成工具(采集,同步)

2、sqoop

3、架构

4、sql脚本文件怎么执行

注意事项:

6、增量到数据


1、数据集成工具(采集,同步)

离线采集(批量采集)

1、Sqoop

2、DataX

3、Kettle

实时采集(增量采集)

1、Flume

2、Canal

3、OGG

查看mapreduce的运行日志

yarn logs -applicationId application_xxxxxxxx

2、sqoop

Apache的开源软件,主要用在HADOOP与传统的数据库(mysql)进行数据的传递。

1、数据吞吐量大:依赖hadoop集群可进行大批量的数据集成

2、没有可视化设计器

3、多种交互方式:命令行

4、部署不方便,依赖hadoop集群,使用sqoop要求数据传输的源要与大数据集群的所有节点进行通信。

5、适用场景:适用于能与大数据集群直接通信的关系数据库间的大批量数据传输

import和export导入导出在hadoop框架下看

RDBMS->Hadoop

3、架构

sqoop架构是hadoop生态系统的架构最简单的框架

sqoop由client端直接接入hadoop,任务通过解析生成对应的maprecue执行

4、sql脚本文件怎么执行

1、通过Navicat Premium,表的运行sql语句执行

2、mysql端,执行source /脚本地址

3、mysql -u root -p123456 student

导出sql语句

1、mysqldump -u root -p123456 student>/脚本地址

5、sqoop的使用

查看帮助:

sqoop import --help

编写脚本,文件以conf结尾

sqoop --options-file MySQLToHDFS.conf

注意事项:

1、--m 表示指定生成多少个Map任务,不是越多越好,因为MySQL Server的承载能力有限

2、当指定的Map任务数>1,那么需要结合--split-by参数,指定分割键,以确定每个map任务到底读取哪一部分数据,最好指定数值型的列,最好指定主键(或者分布均匀的列=>避免每个map任务处理的数据量差别过大)

3、如果指定的分割键数据分布不均,可能导致数据倾斜问题

4、分割的键最好指定数值型的,而且字段的类型为int、bigint这样的数值型

5、编写脚本的时候,注意:例如:--username参数,参数值不能和参数名同一行

6、运行的时候会报错InterruptedException,hadoop2.7.6自带的问题,忽略即可

7、实际上sqoop在读取mysql数据的时候,用的是JDBC的方式,所以当数据量大的时候,效率不是很高

8、sqoop底层通过MapReduce完成数据导入导出,只需要Map任务,不需要Reduce任务

9、每个Map任务会生成一个文件

6、增量到数据

–check-column

用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系型数据库中的自增字段及时间戳类似.

注意:这些被指定的列的类型不能使任意字符类型,如char、varchar等类型都是不可以的,同时–check-column可以去指定多个列

–incremental

用来指定增量导入的模式,两种模式分别为Append和Lastmodified

–last-value

指定上一次导入中检查列指定字段最大值

上一篇:【大数据面试】sqoop:空值、数据一致性、列式存储导出、数据量、数据倾斜


下一篇:apache 大数据平台搭建(sqoop)