Flume - FileChannel源码详解

FileChannel在Flume是一个非常重要的Channel,FileChannel可以很好的保证数据的完整性和一致性,提供了类似mysql binlog的机制,保证机器down机,JVM异常退出时数据不丢失,在采集数据量很大的情况下,建议FileChannel设置的目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率。

FileChannel的简易类结构:

 

 

 

FileChannel的内部事务类,FileBackedTransaction:

 

文件操作类:LogFile(LogFileV2在1.7已经被舍弃):

还有其他几个比较重要的类:

FlumeEventQueue,LogFile,Log,LogUtils。

 

一,初始化过程:public void configure(Context context)

1,useDualCheckpoints(是否需要备份检查点)

2,compressBackupCheckpoint(是否压缩备份节点)

3,checkpointDir(检查点目录,默认在${user.home}目录下)

4,dataDirs(数据节点目录)

5,capacity(获取配置的容量)

6,keepAlive(超时时间,就是如果channel中没有数据最长等待时间)

7,transactionCapacity(事务的最大容量)

注意:capacity的值一定要大于transactionCapacity,不然会报错,看源码:

Preconditions.checkState(transactionCapacity <= capacity,
      "File Channel transaction capacity cannot be greater than the " +
        "capacity of the channel.");

8,checkpointInterval(log的检查间隔)

9,maxFileSize(最大文件的大小,默认是1.5G)

10,minimumRequiredSpace(最少需要多少空间,默认是500M)

11,useLogReplayV1(使用旧重放逻辑)

12,useFastReplay(不使用队列重放)

13,keyProvider(KEY供应商的类型,支持的类型:JCEKSFILE)

14,activeKey(用于加密新数据的密钥名称)

15,cipherProvider(加密提供程序类型,支持的类型:AESCTRNOPADDING)

 

二,start()方法:

@Override
  public synchronized void start() {
    LOG.info("Starting {}...", this);
    try {
      Builder builder = new Log.Builder();
      builder.setCheckpointInterval(checkpointInterval);
      builder.setMaxFileSize(maxFileSize);
      builder.setMinimumRequiredSpace(minimumRequiredSpace);
      builder.setQueueSize(capacity);
      builder.setCheckpointDir(checkpointDir);
      builder.setLogDirs(dataDirs);
      builder.setChannelName(getName());
      builder.setUseLogReplayV1(useLogReplayV1);
      builder.setUseFastReplay(useFastReplay);
      builder.setEncryptionKeyProvider(encryptionKeyProvider);
      builder.setEncryptionKeyAlias(encryptionActiveKey);
      builder.setEncryptionCipherProvider(encryptionCipherProvider);
      builder.setUseDualCheckpoints(useDualCheckpoints);
      builder.setCompressBackupCheckpoint(compressBackupCheckpoint);
      builder.se
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值