Hadoop Flume内存通道占用磁盘空间

Hadoop Flume内存通道占用磁盘空间,hadoop,hdfs,syslog,flume,Hadoop,Hdfs,Syslog,Flume,我正在运行一个使用内存通道的flume代理 agent.channels.c1.type = memory agent.channels.c1.capacity = 1000000 源类型为syslogtcp,而接收器类型为hdfs。该代理每分钟收集约100万条记录 我担心的是,即使我使用内存通道,flume代理也会占用磁盘空间。因此,如果我的代理运行大约一个月,它会占用我大约300gb的磁盘空间,这就是问题的根源。所以问题是 Q1:为什么运行此使用内存通道的代理时会占用磁盘空间 Q2:此空间

我正在运行一个使用内存通道的flume代理

agent.channels.c1.type = memory
agent.channels.c1.capacity = 1000000
源类型为
syslogtcp
,而接收器类型为
hdfs
。该代理每分钟收集约100万条记录

我担心的是,即使我使用内存通道,flume代理也会占用磁盘空间。因此,如果我的代理运行大约一个月,它会占用我大约300gb的磁盘空间,这就是问题的根源。所以问题是

Q1:为什么运行此使用内存通道的代理时会占用磁盘空间


Q2:此空间何时发布?是否存在任何条件或是否应手动执行。?知道这些文件将存储在哪个位置吗?

这些文件有多大?HDFS中的典型块大小为64MB,有时设置为128MB。。。所以,如果你有一个2k文档,它仍然需要64MB的磁盘空间

您应该将“batchsize”参数设置为一个较大的数字,以便将这些事件批处理到HDFS上的较大文件中。
当然,这也会改变事件在HDF上的转储速度,以及之后的作业,因此如果您追求实时,这并不理想。与其沉入HDFS,不如沉入HBase,后者将较小的事件聚合到一个大表中。

感谢您的回答,我的文件将以350mb的大小创建,即一旦达到卷数。但这将如何在一段时间内占用300gb的数据?如果我们假设flume将其存储在磁盘中用于临时目的,那么它应该只占用350mb,而不是gbs。