自用华为ICT云赛道Big Data第五章知识点-Flume海量日志聚合

Flume是什么

  • Flume是流式日志采集工具,Flume提供对数据进行简单处理并且写到各种数据接受方的能力,Flume提供从本地文件(spooling directory source)、实时日志(taildir、exec)、REST消息、Thrift、Avro、Syslog、Kafka等数据源上收集数据的能力。

Flume能干什么

  • 提供从固定目录下采集日志信息到目的地(HDFS、HBase、Kafka)能力。
  • 提供实时采集日志信息(taildir)到目的地的能力。
  • Flume支持级联(多个Flume对接起来),合并数据的能力。
  • Flume支持按照用户定制采集数据的能力。

Flume架构

  • Flume基础架构:Flume可以单节点直接采集数据,主要应用于集群内数据。
  • Flume多Agent架构:Flume可以将多个节点连接起来,将最初的数据源经过收集,存储到最终的存储系统中。主要应用于集群外的数据导入到集群内。

Flume多Agent合并

Flume架构图

基本概念-Source

  • Source负责接收events或通过特殊机制产生events,并将events批量放到一个或多个Channels。
    • 有驱动和轮询2种类型的Source。
    • 驱动型Source:是外部主动发送数据给Flume,驱动Flume接受数据。
  • 轮询Source:是Flume周期性主动去获取数据。
  • Source必须至少和一个Channel关联。

基本概念-Channel

  • Channel位于Source和Sink之间,Channel的作用类似队列,用于临时缓存进来的events,当Sink成功地将events发送到下一跳的Channel或最终目的,events从Channel移除。
  • Channels支持事务,提供较弱的顺序保证,可以连接任何数量的Source和Sink。
  • 不同的Channel提供的持久化水平也是不一样的:
    • Memory Channel:不会持久化。
    • File Channel:基于WAL(预写式日志Write-Ahead Log)实现。
    • JDBC Channel:基于嵌入式Database实现。
  • MemoryChannel:消息存放在内存中,提供高吞吐,但不提供可靠性;可能丢失数据。
  • FileChannel:对数据持久化;但是配置较为麻烦,需要配置数据目录和checkpoint目录;不同的FileChannel均需要配置一个checkpoint目录。
  • JDBCChannel:内置的derby数据库,对event进行了持久化,提供高可靠性;可以取代同样具有持久特性的FileChannel。

基本概念-Sink

  • Sink负责将events传输到下一跳或最终目的,成功完成后将events从Channel移除。
  • Sink必须作用于一个确切的Channel。

Flume支持采集日志文件

  • Flume支持将集群内的日志文件采集并归档到HDFS、HBase、Kafka上,供上层应用对数据分析、清洗数据使用

Flume支持多级级联和多路复制

  • Flume支持将多个Flume级联起来,同时级联节点内部支持数据复制。

Flume级联消息压缩、加密

  • Flume级联节点之间的数据传输支持压缩和加密,提升数据传输效率和安全性。

Flume数据监控

Flume传输可靠性

  • Flume在传输数据过程中,采用事务管理方式,保证传输过程中数据不会丢失,增强了数据传输的可靠性,同时缓存在Channel中的数据如果采用FileChannel,进程或者节点重启数据不会丢失。

Flume传输可靠性(failover)

  • Flume在传输数据过程中,如果下一跳的Flume节点故障或者数据接受异常时,可以自动切换到另外一路上继续传输。

Flume传输过程中数据过滤

  • Flume在传输数据过程中,可以简单的对数据简单过滤、清洗,可以去掉不关心的数据,同时如果需要对复杂的数据过滤,需要用户根据自己的数据特殊性,开发过滤插件,Flume支持第三方过滤插件调用。

Flume操作示例1

  • 说明
    • 本例子演示Flume通过采集集群内应用(比如网银系统)产生的日志到HDFS上。
  • 数据准备
    • 在集群某一个节点上创建日志目录/tmp/log_test。
    • 该目录作为监控目录mkdir/tmp/log_test。
  • 安装Flume客户端
    • 登录MRSManager集群管理界面,下载Flume客户端。
    • 解压客户端。
    • 安装客户端。
  • 配置Flume Source
  • 配置Flume Channel
  • 配置FlumeSink
  • 将FlumeAgent的配置文件命名为properties.properties,并上传该配置文件。
  • 向监控目录/tmp/log_test生产数据: mv /var/log/log.11 /tmp/log_test
  • 查看数据是否sink到HDFS: hdfs dfs -ls /tmp/flume_avro
  • 此时,log.11已被flume重命名为log.11.COMPLETED,表示已采集成功。

Flume操作示例2

  • 说明
    • 本例子演示Flume实时采集点击流日志到Kafka,用于后续的实时分析处理。
  • 数据准备
    • 在集群某一个节点上创建日志目录/tmp/log_click。
    • 数据采集到Kafka topic_1028中。
  • 配置Flume Source:
  • 配置Flume Channel:
  • 配置Flume Sink:
  • 上传配置文件到Flume。
  • 使用Kafka命令查看采集到Kafkatopic_1028的数据。
相关推荐
鸭鸭鸭进京赶烤2 小时前
大学专业科普 | 云计算、大数据
大数据·云计算
G皮T6 小时前
【Elasticsearch】自定义评分检索
大数据·elasticsearch·搜索引擎·查询·检索·自定义评分·_score
搞笑的秀儿9 小时前
信息新技术
大数据·人工智能·物联网·云计算·区块链
SelectDB9 小时前
SelectDB 在 AWS Graviton ARM 架构下相比 x86 实现 36% 性价比提升
大数据·架构·aws
前端世界10 小时前
HarmonyOS开发实战:鸿蒙分布式生态构建与多设备协同发布全流程详解
分布式·华为·harmonyos
二二孚日12 小时前
自用华为ICT云赛道Big Data第四章知识点-Flink流批一体分布式实时处理引擎
大数据·华为
xufwind12 小时前
spark standlone 集群离线安装
大数据·分布式·spark
AI数据皮皮侠13 小时前
中国区域10m空间分辨率楼高数据集(全国/分省/分市/免费数据)
大数据·人工智能·机器学习·分类·业界资讯
昱禹14 小时前
Flutter 3.29+使用isar构建失败
大数据·flutter