HDFS中使用的不同日志文件大小背后的原理是什么



我目前正在为我安装的一个新Hadoop集群实现一个日志记录系统。我过去一直看到这些设置的方式是按天进行日志分割,单个文件以大约10倍HDFS块大小进行分割。当我需要使用这种方法时,我对它没有任何问题,但在与一位想将日志存储在一个长文件中的同事讨论后,我意识到我真的不确定为什么要使用我提到的10倍方法。我能想到的原因是:

  1. 当我们只对几天感兴趣时,mapreduce作业将运行得更快
  2. 文件可以压缩/tar'd/lzo'd以节省空间

还有其他人吗?我真的不明白为什么人们会以10倍HDFS块大小的级别在一天内分割文件。我想,就我的理论知识而言,如果能更多地了解为什么日志存储在不同大小的哲学,那将是非常酷的。

你的文件越大,JobTracker就越能安排你的工作。超小的文件将意味着大量的任务,这将造成糟糕的性能。然而,拥有巨大的文件并不能让你只查询数据集的一部分。你需要在每天产生的数据量和文件的大小之间找到平衡。如果你每天能产生10倍的块大小,那么每天就有一个文件——这样你就很容易只查询5天的数据。否则,请考虑创建一个ETL作业来将文件连接在一起。

最新更新