技术博客 技术博客
  • JAVA
  • 仓颉
  • 设计模式
  • 人工智能
  • Spring
  • Mybatis
  • Maven
  • Git
  • Kafka
  • RabbitMQ
  • RocketMQ
  • Redis
  • Zookeeper
  • Nginx
  • 数据库套件
  • MySQL
  • Elasticsearch
  • MongoDB
  • Hadoop
  • ClickHouse
  • Hbase
  • Hive
  • Flink
  • Flume
  • SQLite
  • linux
  • Docker
  • Jenkins
  • Kubernetes
  • 工具
  • 前端
  • AI
GitHub (opens new window)
  • JAVA
  • 仓颉
  • 设计模式
  • 人工智能
  • Spring
  • Mybatis
  • Maven
  • Git
  • Kafka
  • RabbitMQ
  • RocketMQ
  • Redis
  • Zookeeper
  • Nginx
  • 数据库套件
  • MySQL
  • Elasticsearch
  • MongoDB
  • Hadoop
  • ClickHouse
  • Hbase
  • Hive
  • Flink
  • Flume
  • SQLite
  • linux
  • Docker
  • Jenkins
  • Kubernetes
  • 工具
  • 前端
  • AI
GitHub (opens new window)
  • mysql

    • MySQL 问题汇总
    • MySQL 索引介绍
    • MySQL 锁介绍
    • MySQL 索引优化工具 explain
    • MySQL 主从复制(GTID)
    • MySQL 8安装
    • MySQL 8.x新特性总结
    • MySQL UDF以及新类型JSON
    • MySQL 高可用MGR(一) 理论
    • MySQL 高可用MGR(二) 搭建
    • MySQL 高可用MGR(三) 测试
  • Elasticsearch

    • ES 7.8.0(一) 入门介绍
    • ES 7.8.0(二) 读、写和写索引流程以及文档分析过程
    • ES 7.8.0(三) 文档冲突
  • mongodb

    • mongodb
  • hadoop

    • Hadoop 伪分布式及集群
    • Hadoop 指令
    • Hadoop 读写流程详解
    • Hadoop SpringBoot集成
    • Hadoop MapReduce机制
    • Hadoop YARN
    • Hadoop MapReduce配置和编写job及数据倾斜的解决
    • Hadoop MapReduce自定义格式输入输出
  • clickhouse

    • ClickHouse 介绍及安装
    • ClickHouse 数据类型
    • ClickHouse 表引擎
    • ClickHouse SQL操作
    • ClickHouse 副本配置
    • ClickHouse 分片与集群部署
    • ClickHouse Explain及建表优化
    • ClickHouse 语法优化规则
    • ClickHouse 查询优化
    • ClickHouse 数据一致性
    • ClickHouse 物化视图
    • ClickHouse MaterializeMySQL引擎
    • ClickHouse 监控及备份
  • hbase

    • Hbase 介绍及安装
    • Hbase 优化
    • Hbase phoenix安装及使用
    • Hbase LSM-TREE
  • hive

    • Hive 介绍及安装
    • Hive 内外部表、分区表、分桶表概念及hiveSQL命令
    • Hive 数据类型
    • Hive 函数 MySQL联合
    • Hive 数据倾斜和优化
    • Hive Sqoop安装及指令
  • flink

    • Flink 介绍及安装
    • Flink 配置介绍及Demo
    • Flink API讲解
    • Flink 运行架构
    • Flink 时间语义及Watermark
    • Flink 状态管理
    • Flink 容错,检查点,保存点
    • Flink 状态一致性
    • Flink Table API 和 Flink SQL
    • Flink CEP编程
    • Flink Joining编程
    • Flink CDC
  • flume

    • Flume 日志收集系统介绍及安装
      • 什么是 Flume
      • Flume特点
      • 基本概念
        • Event
        • source
        • channel
        • Sink
      • 安装
        • 部署视图
        • 文件修改
        • 把flume添加到环境变量
        • 启动
        • 测试
    • Flume Source支持的类型
    • Flume Sink支持的类型
    • Flume Channel支持的类型
    • Flume Selector
    • Flume Interceptor拦截器类型
    • Flume Process
  • sqlite

    • SQLite介绍
目录

Flume 日志收集系统介绍及安装

本文及后续所有文章都以 1.8.0 做为版本讲解和入门学习

# 什么是 Flume

Flume 是由 Cloudera 软件公司提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,后与 2009 年被捐赠了 apache 软件基金会,为 hadoop 相关组件之一。尤其近几年随着 flume 的不断被完善以及升级版本的逐一推出,特别是 flume-ng; 同时 flume 内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为 apache top 项目之一。

apache Flume 是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来存储的工具 / 服务。flume 具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到 HDFS,HBase 等集中存储器中。

# Flume 特点

1、可靠性:当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume 提供了三种级别的可靠性保障,所有的数据以 event 为单位传输,从强到弱依次分别为:end-to-end(收到数据 agent 首先将 event 写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是 scribe 采用的策略,当数据接收方 crash 时,将数据写到本地,待恢复后,继续发送),Best effort(数据发送到接收方后,不会进行确认)。

2、可扩展性:Flume 采用了三层架构,分别为 agent,collector 和 storage,每一层均可以水平扩展。其中,所有 agent 和 collector 由 master 统一管理,这使得系统容易监控和维护,且 master 允许有多个(使用 ZooKeeper 进行管理和负载均衡),这就避免了单点故障问题。

3、可管理性:所有 agent 和 colletor 由 master 统一管理,这使得系统便于维护。多 master 情况,Flume 利用 ZooKeeper 和 gossip,保证动态配置数据的一致性。用户可以在 master 上查看各个数据源或者数据流执行情况,且可以对各个数据源配置和动态加载。Flume 提供了 web 和 shell script command 两种形式对数据流进行管理。

4、功能可扩展性:用户可以根据需要添加自己的 agent,collector 或者 storage。此外,Flume 自带了很多组件,包括各种 agent(file, syslog 等),collector 和 storage(file,HDFS 等)。

5、文档丰富,社区活跃:Flume 已经成为 Hadoop 生态系统的标配,它的文档比较丰富,社区比较活跃,方便我们学习。

# 基本概念

# Event

  • Event 是 Flume 数据传输的基本单元,是数据,如果输入的是文本文件,event 是一行记录。
  • Flume 以事件 (Event) 的形式将数据从源头传输到最终的目的。
  • Event 由可选的 header 和载有数据的一个 byte array 构成。
    载有的数据对 Flume 是不透明的。
    Header 是容纳了 key-value 字符串对的无序集合,key 在集合内是唯一的。
    Header 可以在上下文路由中使用扩展。

# source

  • Source 负责接收 event 或通过特殊机制产生 event,并将 events 批量的放到一个或多个 Channel。
  • Source 包含 event 驱动和轮询两种类型。
  • Source 有不同的类型。
    与系统集成的 Source:Syslog,NetCat。
    自动生成事件的 Source:Exec 用于 Agent 和 Agent 之间的通信的 IPC Source:Avro、Thrift。
  • Source 必须至少和一个 Channel 关联。

# channel

  • Channel 位于 Source 和 Sink 之间,用于缓存进来的 event。
  • 当 Sink 成功的将 event 发送到下一跳的 Channel 或最终目的地,event 才 Channel 中移除。
  • 不同的 Channel 提供的持久化水平也是不一样的:
    Memory Channel:volatile。
    File Channel:基于 WAL 实现。
    JDBC Channel:基于嵌入 Database 实现。
  • Channel 支持事物,提供较弱的顺序保证。
  • Channel 可以和任何数量的 Source 和 Sink 工作。

# Sink

  • Sink 负责将 event 传输到下一跳或最终目的,成功完成后将 event 从 Channel 移除。
  • 有不同类型的 Sink:
    存储 event 到最终目的的终端 Sink。比如 HDFS,HBase。
    自动消耗的 Sink。比如:Null Sink。
    用于 Agent 间通信的 IPC sink:Avro。

# 安装

wget http://archive.apache.org/dist/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz
1

# 部署视图

# 文件修改

在 /opt/software/flume-1.8.0/conf/source-netcat.conf 添加该文件,并添加如下内容

# a1 代表一个flume 给每个组件匿名
a1.sources=r1
a1.channels=c1
a1.sinks=s1

# 指定source 的数据来源以及堆外开放的端口
a1.sources.r1.type=netcat
a1.sources.r1.bind=node113
a1.sources.r1.port=8888

# 指定a1的channels基于内存
a1.channels.c1.type=memory
# 指定a1的sinks 输出到控制台
a1.sinks.s1.type=logger

# 绑定a1 sources和channle 的关系
a1.sources.r1.channels=c1
# 绑定a1 sinks 和 channel 的关系
a1.sinks.s1.channel=c1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 把 flume 添加到环境变量

export FLUME_HOME=/opt/software/flume-1.8.0
export PATH=$PATH:$FLUME_HOME/bin
export FLUME_HOME
1
2
3

# 启动

flume-ng agent -n a1 -c /opt/software/flume-1.8.0/conf -f /opt/software/flume-1.8.0/conf/source-netcat.conf -Dflume.root.logger=INFO,console
1
  • agent 运行一个 flume
  • - n a1 的名称,要和配置文件里面的一样
  • -c 代表配置文件在那个目录
  • - f 代表具体的配置文件路径
  • -Dflume.root.logger 设置一个 JAVA 系统属性值,常见的 -Dflume.root.logger=INFO,console

# 测试

node103 发送消息

[root@node103 ~]# nc node113 8888
hello world
OK
1
2
3

node113 收到

2021-05-17 16:40:18,381 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 68 65 6C 6C 6F 20 77 6F 72 6C 64                hello world }
1
上次更新: 6/11/2025, 4:10:30 PM
Flink CDC
Flume Source支持的类型

← Flink CDC Flume Source支持的类型→

Theme by Vdoing | Copyright © 2023-2025
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式