Flume 组成架构
Agent
Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的地。 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 Channel 和 File Channel。 Memory Channel 是内存中的队列。Memory Channel 在不需要关心数据丢失的情境下适用。如果需要关心数据丢失,那么 Memory Channel 就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。 File Channel 将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。
Sink
Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个 Flume Agent。 Sink 组件目的地包括 hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义
Flume 安装部署
1、将flume的安装包上传到任一节点并解压
tar -zxvf apache-flume-1.9.0-bin.tar.gz
2、文件目录如下
总用量 256
drwxr-xr-x 2 tmrisimple games 4096 5月 19 16:24 bin
-rw-r--r-- 1 tmrisimple games 89032 10月 17 2022 CHANGELOG
drwxr-xr-x 2 tmrisimple games 4096 5月 19 16:25 conf
-rw-r--r-- 1 tmrisimple games 5681 1月 21 2022 DEVNOTES
-rw-r--r-- 1 tmrisimple games 2873 1月 21 2022 doap_Flume.rdf
drwxr-xr-x 5 tmrisimple games 4096 10月 17 2022 docs
drwxr-xr-x 2 root root 12288 5月 19 16:24 lib
-rw-r--r-- 1 tmrisimple games 108909 10月 17 2022 LICENSE
-rw-r--r-- 1 tmrisimple games 8832 10月 17 2022 NOTICE
-rw-r--r-- 1 tmrisimple games 2483 1月 21 2022 README.md
-rw-r--r-- 1 tmrisimple games 1590 10月 10 2022 RELEASE-NOTES
drwxr-xr-x 2 root root 4096 5月 19 16:24 tools
2、在flume-env.sh中配置JAVA_HOME
# conf目录下,默认是有这四个文件
总用量 16
-rw-r--r-- 1 tmrisimple games 1661 1月 21 2022 flume-conf.properties.template
-rw-r--r-- 1 tmrisimple games 1455 1月 21 2022 flume-env.ps1.template
-rw-r--r-- 1 tmrisimple games 1568 1月 21 2022 flume-env.sh.template
-rw-r--r-- 1 tmrisimple games 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
3、某个配置文件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文件
标签:Flume,flume,tmrisimple,--,介绍,a1,games,Channel From: https://www.cnblogs.com/harleyblogs/p/17415495.html