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

相关推荐
极创信息23 分钟前
Linux挖矿病毒深度清理实战教程,从进程隐藏、Rootkit驻留到彻底根除
java·大数据·linux·运维·安全·tomcat·健康医疗
SEO_juper1 小时前
Semrush 蓝海关键词筛选,AI 一键拓展完整词库
大数据·谷歌·seo·geo·gemini·询盘·b2b
阿 才3 小时前
跟文件系统(busybox)的构建
大数据·hadoop·分布式
宁波鹿语心理3 小时前
过度卷入的三角化:养育者情感投射对青少年自我边界形成的结构性影响及干预路径
大数据
逐米时代3 小时前
制造型企业AI智能体实施步骤详解:提升协同效率的实战指南
大数据·人工智能
大嘴皮猴儿3 小时前
跨境电商运营笔记:我是如何用工具解决多语言素材问题的
大数据·人工智能·新媒体运营·自动翻译·教育电商
赤龙ERP3 小时前
赤龙一周观察 · 6月第2周
大数据·人工智能·ai·erp
JGDT_3 小时前
ERP重塑与未来趋势:SAP的实践及大一统格局(上)
大数据·人工智能·安全·架构·开源
ACP广源盛139246256734 小时前
IX7008 PCIe 交换芯片@ACP#RTX Spark 经济型 8 口扩展芯片(对比 ASM1806)
大数据·人工智能·分布式·嵌入式硬件·gpt·spark·电脑
lauo4 小时前
碳基心脏最后的堡垒——ibbot青春版:你的随身Token生产厂
大数据·人工智能·chatgpt·智能手机·ai-native