1.flume

1.1.功能:

  • 实时采集分布式数据流

1.2.应用

  • 采集实时文件和网络数据流

1.3. flume的基本组成

  • Agent(source->channel->sink)

启动flume采集脚本 flume实时采集_启动flume采集脚本

  • 一个Agent就是一个Flume程序

1.3.1 source(采集):

数据监听,新数据一产生就立即采集,并且将每一行数据封装成一个Event对象发给channel
注:Event:数据流传输时最小的封装单元,每行数据封装成一个Event

  • 常用source分类:
    1.exec source
    作用:运行一条Linux命令实现单个文件的动态监听采集,固定搭配tail -f 使用
    缺点:如果日志是多个文件的动态变化,则无法采集
    2.taildir source
    作用:实施多个文件的动态监听,将上次采集数据结束的位置保存在JSON文件中,方便下次进行增量采集
    缺点:flume1.7才开始支持此功能,如果用的是1.5或者1.6,遇到这个问题,需要自己手动编译这个功能
    3.Kafka Source:
    作用:监听读取Kafka数据
    4.Spooldir Source:、
    作用:监控一个目录,只要这个目录中产生一个文件,就会全量采集一个文件
    缺点:不能动态监控文件,被采集的文件不能发生变化

1.3.2 channel(缓存):

负责接收source采集的数据,供sink读取(临时缓存数据)

  • 常用channel:
    1.mem
    作用:将数据缓存在内存
    特点:性能相对较高,但空间小,安全系数低
    2.file
    作用:将数据缓存在磁盘
    特点:空间大,安全性高,但性能较差(读写慢)

1.3.3 sink(发送):

从channel读取采集的数据并写入目的地

  • HDFS sink
    作用:将数据写入HDFS中,可指定分区和文件大小
    使用场景:离线文件归档,代替Hive Sink

2.sqoop

  • 作用:离线数据库采集数据的工具,用于实现MySQL等RDBMS数据库(关系型数据库)与HDFS之间的数据导入导出
    注:这里的导入导出是相对于HDFS来说的
  • 本质:底层就是MapReduce(Input、Map、Output),将Sqoop的程序转换成MR程序提交给YARN,实现分布式采集
  • 特点:
    1.必须依赖Hadoop:MR+YARN
    2.离线数据采集,只适用于离线业务平台
  • 使用场景:
    1.数据迁移:将历史数据存储到HDFS中
    特点:全量采集,每次采集所有数据
    2.数据同步:定期将更新的数据采集到数仓中
    特点:只同步采集新数据(新增or更新)

2.1. 导入HDFS的常用选项有哪些?

  • 2.1.1 连接数据库
    –connect 连接JDBC地址
    –username 用户名
    –password 密码
    –table 连接表名
    –columns 指定列
    –where 指定行
    -e/–query 执行SQL语句
  • 2.1.2 连接HDFS
    –target-dir指定连接目录
  • 2.1.3 其他
    –fields-terminated-by 指定分隔符
    –delete-target-dir 提前删除已存在输出目录
    -m 指定map的个数

2.2. 导入Hive的方式有几种?

  • 方式一:直接导入
    –hive-import 申明导入Hive表
    –hive-database 指定Hive的数据库
    –hive-table 指定导入哪张表
  • 方式二:hcatalog方式
    –hcatalog-database
    –hcatalog-table

2.3. 增量导入的方式有几种?

  • 2.3.1 自带的方式
  • append
    要求:必须有自增的列
    特点:只能采集新增的数据
  • lastmodifield
  • 要求:必须时间列
  • 特点:既能采集新增的,也能采集更新的数据
  • 2.3.2 特殊方式
  • 通过字段主动过滤来实现
    create_time,update_time,每次输出的目录不能一样

2.4. 导出的选项有哪些?

  • 2.4.1 HDFS
    –export-dir 指定导出目录
  • 2.4.2 Hive
    –hcatalog-database 指定Hive的数据库
    –hcatalog-table 指定Hive的表

2.5. 增量导出的方式有几种,各自的特点是什么?

  • upateonly:只能增量导出更新的数据
  • allowerinsert:既可以导出更新的,也可以导出新增的数据