我们的组织拥有一个非常平均的活跃网站,每小时可获得约1000次点击。我们计划将这些日志流式传输到HDFS / Hive。
现在的问题是围绕使用较小文件的HDFS效率。我们怎么看,每小时可以估算的文件大小不会很大。 Hadoop对于较大的文件效率很高。是否建议将多个较小的文件加载到生产hadoop系统中?
如果hdfs与各种小文件混在一起会有什么影响?
答案 0 :(得分:0)
在将文件滚动到新文件之前,您可以使用添加到文件中的事件数量。如documentation中所述,这是通过HDFS接收器的滚动式参数完成的:
hdfs.rollInterval 30滚动当前文件前等待的秒数(0 =永不基于时间间隔滚动)
hdfs.rollSize 1024触发滚动的文件大小,以字节为单位(0:永不基于文件大小滚动)
hdfs.rollCount 10在滚动之前写入文件的事件数(0 =从不基于事件数滚动)
它们分别默认为30,1024和10,但你可以增加它们以获得更大的文件(或者你可以禁用其中一些文件)。