Flume的概念和原理

一、Flume的概念

1、flume 作为 cloudera 开发的实时日志收集系统

2、flume一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。

3、flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink持久化该事件到日志或把事件推向另一个Source。

二、Flume 客户端

Client生产数据,运行在一个独立的线程,如:web服务器,应用系统

三、Flume Event

一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。)

四、Flume Flow

Event从源点到达目的点的迁移的抽象

五、Flume Agent

一个独立的Flume进程,包含组件Source、 Channel、 Sink。(Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。)

六、Flume Source插件

1、数据收集组件。(source从Client收集数据,传递给Channel)

2、source的exec配置

agent1.sources.exec-source1.channels = ch1

agent1.sources.exec-source1.type = exec

agent1.sources.exec-source1.command=tail -F /usr/local/hadoop/logs/hadoop-root-namenode-node10.log

3、source的spool配置

agent1.sources.spooldir-source1.channels = ch1 ch2

agent1.sources.spooldir-source1.type = spooldir

agent1.sources.spooldir-source1.spoolDir=/usr/local/flume/tmpData

agent1.sources.spooldir-source1.basenameHeader = true

4、source的avro配置

agent1.sources.avro-source1.channels = ch1

agent1.sources.avro-source1.type = avro

agent1.sources.avro-source1.bind = 0.0.0.0

agent1.sources.avro-source1.port = 41414

七、Flume channel插件

1、中转Event的一个临时存储,保存由Source组件传递过来的Event。(Channel连接 sources 和 sinks ,这个有点像一个队列。)

八、Flume 的sink插件

1、从Channel中读取并移除Event, 将Event持久化到外部存储或传递到FlowPipeline中的下一个Agent(如果有的话)(Sink从Channel收集数据,运行在一个独立线程。)

2、sink到log的配置

agent1.sinks.log-sink1.channel = ch1

agent1.sinks.log-sink1.type = logger

3、sink到kafka的配置

#设置Kafka接收器

agent1.sinks.k2.type= org.apache.flume.sink.kafka.KafkaSink

#设置Kafka的broker地址和端口号

agent1.sinks.k2.brokerList=node10:9092,node11:9092,node12:9092

agent1.sinks.k2.metadata.broker.list=node10:9092,node11:9092,node12:9092

agent1.sinks.k2.producer.type=sync

#设置Kafka的Topic

agent1.sinks.k2.kafka.topic=TestTopic2

#设置序列化方式

agent1.sinks.k2.serializer.class=kafka.serializer.StringEncoder

agent1.sinks.k2.channel=ch1

4、sink的avro配置

agent1.sinks.avro-sink1.channel = ch1

agent1.sinks.avro-sink1.type = avro

agent1.sinks.avro-sink1.hostname=node10

agent1.sinks.avro-sink1.port=41414

九、Flume拦截器

1、需要对数据进行过滤时,需要谁有Flume拦截器

2、拦截器的位置在Source和Channel之间,当我们为Source指定拦截器后,我们在拦截器中会得到event,根据需求我们可以对event进行保留还是抛弃,抛弃的数据不会进入Channel中

3、Flume数据流

十、一个source对应多个channel和多个sink的配置

channel的配置

agent1.channels.ch1.type = memory

agent1.channels.ch2.type = memory

source的配置

agent1.sources.spooldir-source1.channels = ch1 ch2

agent1.sources.spooldir-source1.type = spooldir

agent1.sources.spooldir-source1.spoolDir=/usr/local/flume/tmpData

agent1.sources.spooldir-source1.basenameHeader = true

sink的配置

激活各个组件,同类型的组件以空格分开

agent1.channels = ch1 ch2

agent1.sources = spooldir-source1

agent1.sinks = hdfs-sink1 k2

相关推荐
商业模式源码开发9 小时前
实体门店低获客成本增长案例:3 人转介绍模型 + 消费返还机制落地分析
大数据·商业模式·私域流量
元拓数智10 小时前
智能分析落地卡壳?先补好「数据关系+语义治理」这层技术基建
大数据·分布式·ai·spark·数据关系·语义治理
TDengine (老段)11 小时前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
sxgzzn12 小时前
新能源场站数智化转型:基于数字孪生与AI的智慧运维管理平台解析
大数据·运维·人工智能
清平乐的技术专栏13 小时前
【Flink学习】(二)Flink 本地环境搭建,运行第一个入门程序
大数据·flink
这是程序猿13 小时前
Spring Boot自动配置详解
java·大数据·前端
ws20190713 小时前
AUTO TECH China 2026广州汽车零部件展:从整机集成迈向核心部件的产业跃升
大数据·人工智能·科技·汽车
humors22113 小时前
从数据到决策:汽车使用成本的精细计算指南
大数据·程序人生
大大大大晴天13 小时前
Flink技术实践:RocksDB 状态后端技术解密
大数据·flink
1892280486114 小时前
NY382固态MT29F32T08GSLBHL8-24QM:B
大数据·服务器·人工智能·科技·缓存