项目经验之 Flume 组件选型

本文探讨了在项目中选择Flume的FileChannel和MemoryChannel的权衡,强调金融类公司通常选择FileChannel以保障数据安全。同时,介绍了FileChannel的优化策略,如使用多个数据目录和配置检查点目录。此外,讨论了HDFS存储大量小文件的影响,包括元数据负担和计算性能下降,并提出了默认参数如何导致小文件生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. FileChannel 和 MemoryChannel 区别

MemoryChannel 传输数据速度更快,但因为数据保存在 JVM 的堆内存中,Agent 进程挂掉会导致数据丢失,适用于对数据质量要求不高的需求。

FileChannel 传输速度相对于 Memory 慢,但数据安全保障高,Agent 进程挂掉也可以从

失败中恢复数据。选型:

金融类公司、对钱要求非常准确的公司通常会选择 FileChannel 传输的是普通日志信息(京东内部一天丢 100 万-200 万条,这是非常正常的),通常

选择 MemoryChannel。

  1. FileChannel 优化

通过配置 dataDirs 指向多个路径,每个路径对应不同的硬盘,增大 Flume 吞吐量。

官方说明如下:

Comma separated list of directories for storing log files. Using multiple directories on separate disks can improve file channel peformance

checkpointDir backupCheckpointDir 也尽量配置在不同硬盘对应的目录中,保证 checkpoint 坏掉后,可以快速使用 backupCheckpointDir 恢复数据

  1. Sink:HDFS Sink
    1. HDFS 存入大量小文件,有什么影响?元数据层面:每个小文件都有一份元数据,其中包括文件路径,文件名,所有者,所属组,权限,创建时间等,这些信息都保存在 Namenode 内存中。所以小文件过多,会占用

Namenode 服务器大量内存,影响 Namenode 性能和使用寿命计算层面:默认情况下 MR 会对每个小文件启用一个 Map 任务计算,非常影响计算性能。同时也影响磁盘寻址时间。

    1. HDFS 小文件处理

官方默认的这三个参数配置写入 HDFS 后会产生小文件,hdfs.rollIntervalhdfs.rollSize

hdfs.rollCount 基于以上 hdfs.rollInterval=3600hdfs.rollSize=134217728hdfs.rollCount =0 几个参数综合作用,效果如下:

    1. 文件在达到 128M 时会滚动生成新文件
    2. 文件创建超 3600 秒时会滚动生成新文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值