flume 可以sink到本地文件目录么

flume 可以sink到本地文件目录么,第1张

方法/步骤

应该应该可以的。

这样配置试下

a1.channels = c1

a1.sinks = k1

a1.sinks.k1.type = file_roll

a1.sinks.k1.channel = c1

a1.sinks.k1.sink.directory = /var/log/flume

############################################

File Roll Sink

Stores events on the local filesystem. Required properties are in bold.

Property NameDefaultDescription

channel

type

The component type name, needs to be file_roll.

sink.directory

The directory where files will be stored

sink.rollInterval

30

Roll the file every 30 seconds. Specifying 0 will disable rolling and cause all events to be written to a single file.

sink.serializer

TEXT

Other possible options include avro_event or the FQCN of an implementation of EventSerializer.Builder interface.

batchSize

100

1.基本属性

2.MemoryChannel有一个内部类 MemoryTransaction ,也是整个事务保证最重要的类,后面第三部分专门讨论。

3.创建一个Object当做队列锁, *** 作队列的时候保证数据的一致性

4.使用LinkedBlockingDeque queue维持一个队列,队列的两端分别是source和sink。

用queueStored来保存queue中当前的保存的event的数目,后面tryAcquire方法可以判断是否可以take到一个event,用queueRemaining来保存queue中当前可用的容量,可以用来判断当前是否有可以提交一定数量的event到queue中。

5.有一个属性是 private ChannelCounter channelCounter,就是把channel的一些属性封装了一下

6.提供了估计Event大小(即所占的字节数)的方法

1. capacity , transCapacity , byteCapacityBufferPercentage , keepAlive 都是用默认的或者传入的参数,注意 byteCapacity ,这里将其抽象化为 slot 的概念,比如你的 -Xmx 参数设置的是2048m,其他参数都选择默认,则 byteCapacity=((2048*0.8)*1024*1024*0.8)/100,结果取整数

2.创建队列及其相关信号量

1.基本属性

2.构造器

3.核心方法解读

MemoryChannel的逻辑相对简单,主要是通过MemoryTransaction中的putList、takeList与MemoryChannel中的queue打交道,这里的queue相当于持久化层,只不过放到了内存中,如果是FileChannel的话,会把这个queue放到本地文件中。下面表示了Event在一个使用了MemoryChannel的agent中数据流向:

source --->putList --->queue --->takeList --->sink


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11739321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存