我正在运行一个使用内存通道的flume代理。
agent.channels.c1.type = memory
agent.channels.c1.capacity = 1000000
源的类型为 syslogtcp
如果是这种类型的话 hdfs
. 这个特工每分钟收集大约一百万张唱片。
我担心的是,即使我使用内存通道,我的flume代理也会占用磁盘空间。因此,如果我的代理运行了大约一个月,它会占用我大约300gb的磁盘空间,这就是问题的根源。所以问题是
问题1:为什么运行这个使用内存通道的代理时会占用磁盘空间?
问题2:这个空间什么时候释放?是否有任何条件或应该手动完成。?你知道这些文件将存储在哪里吗?
1条答案
按热度按时间qcuzuvrc1#
文件有多大?hdfs中的典型块大小是64mb,有时设置为128mb。。。所以,如果你有一个2k文件,它仍然需要64mb的磁盘!!!
您应该将“batchsize”参数设置为一个较大的数字,以便将这些事件批处理到hdfs上的较大文件中。当然,这也会改变事件在hdfs和作业上的转储速度,因此如果您追求实时性,这并不理想。您可能不想下沉到hdfs,而是要下沉到hbase,它将较小的事件聚合到一个大表中。