Flume - [01] 概述

 

一、什么是Flume

Flume 是Cloudera提供的一个高可用,高可靠的,分布式的海量日志采集、聚合和传输的系统。

Flume最主要的作用就是:实时读取服务器本地磁盘的数据,将数据写入HDFS。

 

 

 

二、Flume 组成架构

 

Agent

  Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的地。(Flume是一个Java进程)

  Agent 主要由三个部分组成:Source,Channel,Sink

Source(★

Source 是负责接收数据到 Flume Agent 的组件。

Source 的组件可以处理各种类型、各种格式的日志数据。

包括:

  • avro
  • thrift
  • exec
  • jms
  • spooling directory
  • netcat
  • sequence generator
  • syslog
  • http
  • legacy
 
 

Channel(★

Channel 是位于 Source 和 Sink 之间的缓冲区。因此,Channel 允许 Source 和 Sink 运作在不同的速率上。

Channel 是线程安全的,可以同时处理几个 Source 的写入操作和几个 Sink 的读取操作。

Flume 自带两种 Channel:Memory ChannelFile Channel

  • Memory Channel 是内存中的队列。Memory Channel 在不需要关心数据丢失的情境下适用。如果需要关心数据丢失,那么 Memory Channel 就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
  • File Channel 将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。

 

 

 

Sink(★

Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个 Flume Agent。

Sink 组件目的地包括 hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义

 

 

Event

传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由 Header 和 Body 两部分组成,Header 用来存放该 event 的一些属性,为 K-V 结构,Body 用来存放该条数据,形式为字节数组。

 

 

 

 

 

三、Flume 安装部署

1、将flume的安装包上传到任一节点并解压

tar -zxvf apache-flume-1.9.0-bin.tar.gz

2、文件目录如下

总用量 256
drwxr-xr-x 2 root       root   4096 5月  19 16:24 bin
-rw-r--r-- 1 root       root  89032 10月 17 2022 CHANGELOG
drwxr-xr-x 2 root       root   4096 5月  19 16:25 conf
-rw-r--r-- 1 root       root   5681 1月  21 2022 DEVNOTES
-rw-r--r-- 1 root       root   2873 1月  21 2022 doap_Flume.rdf
drwxr-xr-x 5 root       root   4096 10月 17 2022 docs
drwxr-xr-x 2 root       root   12288 5月  19 16:24 lib
-rw-r--r-- 1 root       root 108909 10月 17 2022 LICENSE
-rw-r--r-- 1 root       root   8832 10月 17 2022 NOTICE
-rw-r--r-- 1 root       root   2483 1月  21 2022 README.md
-rw-r--r-- 1 root       root   1590 10月 10 2022 RELEASE-NOTES
drwxr-xr-x 2 root       root    4096 5月  19 16:24 tools

3、在flume-env.sh中配置JAVA_HOME

# conf目录下,默认是有这四个文件
总用量 16
-rw-r--r-- 1 root       root 1661 1月  21 2022 flume-conf.properties.template
-rw-r--r-- 1 root       root 1455 1月  21 2022 flume-env.ps1.template
-rw-r--r-- 1 root       root 1568 1月  21 2022 flume-env.sh.template
-rw-r--r-- 1 root       root 2399 10月  8 2022 log4j2.xml

# flume-env.sh需要复制flume-env.sh.template
cp -a flume-env.sh.template flume-env.sh
vim flume-env.sh

 

4、某个配置文件flume-xxx.properties的介绍

# flume配置的例子
# Name the components on this agent
# source:起一个别名
# properties文件它是java的配置文件,=左边就是键,=右边是值;键的开头都是以a1(就是flume的名字--agent的名字就是a1);a1随便起
a1.sources = r1
# sink:起一个别名
a1.sinks = k1
# channels;:起一个别名
a1.channels = c1
 
# Describe/configure the source
# a1(agent的名字).sources(来源).r1(来源的名字);配置多个来源
# type:不能随便写(文档上说明)
a1.sources.r1.type = netcat
# bind:netcat的一个属性(绑定)
a1.sources.r1.bind = localhost
# port:netcat的一个属性;(端口)
a1.sources.r1.port = 44444
 
# Describe the sink
# 描述一个sink: logger日志(打印到控制台上)
a1.sinks.k1.type = logger
 
# Use a channel which buffers events in memory
# 描述一下channel:内存
a1.channels.c1.type = memory
# capacity:容量
a1.channels.c1.capacity = 1000
# transactionCapacity:事务的容量
a1.channels.c1.transactionCapacity = 100
 
# Bind the source and sink to the channel
# 绑定;source和channel绑定
a1.sources.r1.channels = c1
# sink和channel绑定
a1.sinks.k1.channel = c1

 

附:默认properties文件

 

 

 

 

— 要养成终生学习的习惯 —

posted @   HOUHUILIN  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示