flume 总结

flume 属性

mv .XXX.txt XXX.txt

正在进行写操作处理的文件,文件名会加一个后缀.tmp.以表明尚未完成

hdfs.inUsePrefix 属性 设置为 _ ,此举将正在写操作的文件名上加一个_,这样做是因为mapReduce会忽略以下划线为前缀的文件,_events.139213123.log.tmp,数字为sink生成的时间戳

超过给定打开时间,达到给定的文件大小,写满了给定数量的事件,三个条件中有任意一条得到满足,则关闭文件。前缀后缀都被移除

 

分区

agent1.sinks.sink1.hdfs.path = /tmp/flume/year=%Y/month=%m/day=%d (hdfs默认当前时间,在不设置的情况下)

一个flume将被写入哪个分区是由时间的header中的temestamp 时间戳 觉得定,默认情况下没有,可以通过拦截器添加

拦截器

能够对事件流中的事件进行修改或删除的组件

agent1.source.source1.interceptors = interceptor1

agent1.source.source1.interceptors.type = timestamp

文件格式

hdfs sink 由 hdfs.fileType 决定 默认格式为 SequenceFile,把事件写入顺序文件,顺序文件中键类型默认LongWritable

hdfs.writeFormat指定 如 Text DataStream(纯文本)

此外 agent1.sinks.sink1.serializer = avro_event ,启用压缩设置 serializer.compressionCodec = snappy

扇处

交付保证

如果有事务失败(如channel满溢),这些事件都不会从source中删除,而是等待稍后重试

如果不介意有事件未交付,可指定agent1.source.source1.selector.optional = channel1b(可多个空格分隔)

负载均衡Web服务器

Sink组

sinkgroups。processor.type = load_balance 使用循环选择机制在组中两个sink成员之间分发事件流

如果单个节点失败,不会记住sink的不可用性,每一批事件都会重试故障sink,通过设置 processor.back

off来改变这种行为

sinkgroups。processor.type = failover 选优sink可用的情况下一直使用选优sink,需要维护sink成员的优先顺序

flume代理在多个机器上时, 使用

agent1....hdfs.filePrefix = events-%{host}

 

flume 与应用系统集成

Flume SDK 提供 Java RpcClient 发送Event对象到一个Avro端点

Flume 嵌入式代理 :运行在Java应用程序中的精简版Flume代理,特殊Source。通过调用EmbeddedAgent对象中的方法将Flume事件对象发送到

该Source

 

 

 

 

 

当设计Flume数据流程图时,决定使用什么类型的channel将是至关重要的。在写这篇文章是,当前有几个channel可供选择,分别是Memory Channel, JDBC Channel , File Channel,Psuedo Transaction Channel。比较常见的是前三种channel。具体使用那种channel,需要根据具体的使用场景。这里我详细讲解File Channel 和Memory Channel,而JDBC Channel当前支持它本身嵌入的Derby 数据库。

      File Channel是一个持久化的隧道(channel),他持久化所有的事件,并将其存储到磁盘中。因此,即使Java 虚拟机当掉,或者操作系统崩溃或重启,再或者事件没有在管道中成功地传递到下一个代理(agent),这一切都不会造成数据丢失。Memory Channel是一个不稳定的隧道,其原因是由于它在内存中存储所有事件。如果java进程死掉,任何存储在内存的事件将会丢失。另外,内存的空间收到RAM大小的限制,而File Channel这方面是它的优势,只要磁盘空间足够,它就可以将所有事件数据存储到磁盘上。

       下面,我列举这两个Channel的有关参数配置。

 

文件Channel设置

参数名称

默认值

描述

type

-

类型名称

checkpointDir

~/.flume/file-channel/checkpoint

检测点文件所存储的目录

useDualCheckpoints

false

备份检测点如果设置为true,backupChec kpointDir必须设置

backupCheckpointDir

备份检测点的备份到所在的目录,不要与数据检测点或者目录重复

dataDirs

~/.flume/file-channel/data

数据存储所在的目录设置

transactionCapacity

1000

事务容量的最大值设置

checkpointInterval

30000

检测点之间的时间值设置(单位微秒)

maxFileSize

2146435071

一个单一日志的最大值设置(以字节为单位)

minimumRequiredSpace

524288000

最小的请求闲置空间(以字节为单位)

capacity

1000000

隧道的最大容量

keep-alive

3

一个存放操作的等待时间值(秒)设置

write-timeout

3

一个写操作的等待时间值(秒)设置

checkpoint-timeout

600

Expert:一个检测点操作的等待时间值(秒)设置

use-log-replay-v1

false

Expert: 使用老的回复逻辑

use-fast-replay

false

Expert: 回复不需要队列

encryption.activeKey

使用关键字名称去加密新数据

encryption.cipherProvider

密码提供者类型,支持的类型有: AESCTRNOPADDING

encryption.keyProvider

关键字提供者类型,支持的类型有: JCEKSFILE

encryption.keyProvider.keyStoreFile

存储关键字文件的路径

encrpytion.keyProvider.keyStorePasswordFile

存储关键字密钥文件的路径

encryption.keyProvider.keys

列出所有的关键字(比如,激活关键字设置历史)

encyption.keyProvider.keys.*.passwordFile

可选关键字密钥文件的路径

更多信息,请参考下列资源。

http://flume.apache.org/FlumeUserGuide.html#file-channel

 

内存 Channel参数设置

参数名称

默认值

描述

type

隧道名称类型memory

capacity

100

存储在channel中的最大容量

transactionCapacity

100

从一个source中去或者给一个sink,每个事务中最大的事件数

keep-alive

3

对于添加或者删除一个事件的超时的秒钟

byteCapacityBufferPercentage

20

定义缓存百分比。

byteCapacity

see description

最大内存所有事件允许总字节数

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值