当前位置: 首页 > article >正文

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


http://www.kler.cn/a/459354.html

相关文章:

  • STLG_01_08_程序设计C语言 - 数组
  • Java SpringBoot使用Apache POI导入导出Excel文件
  • SMTP发送邮件的过程
  • PTA数据结构作业一
  • C++访问数据库
  • STM32 和 ESP32
  • 【大语言模型】DeepSeek与Kimi对论文内容理解的简单对比
  • 北京人形机器人产业发展与CES Asia 2025的科技展望
  • gozero项目接入elk的配置与实战
  • 如何绘制星巴克门店热力地图
  • 胡闹厨房练习(三)
  • UE5材质节点SimpleGrassWind
  • 《艺术的启示》最新答案2024
  • 前端(Ajax)
  • 日本东京阿里云200M不限流量轻量云主机测试报告
  • 如何利用云计算进行灾难恢复?
  • 发表文章去哪里投稿?软文推广常见的几种渠道类型
  • NAT 技术如何解决 IP 地址短缺问题?
  • 【项目日记(9)】项目整体测试,优化以及缺陷分析
  • 计算机网络 (15)宽带接入技术
  • 基于Python实现车辆检测、机动车检测、识别位置标记、计数
  • STM32-笔记22-sg90舵机
  • 雷军:科技传奇的逐梦之旅
  • ArrayList和LinkedList的区别是什么?
  • 支持最新 mysql9的workbench8.0.39 中文汉化教程来了
  • Selenium 浏览器驱动代理 - 无需下载本地浏览器驱动镜像!(Python 版本!)