在Hadoop中,每小时分区会导致哪些问题?

时间:2015-08-13 19:54:08

标签: hadoop hive

我们被告知最佳做法是按日而不是小时对Hive表进行分区,因为namenode上的每小时分区的内存成本。但是,将我们最大的表格(每年约40 TB)转移到每小时分区会有问题吗?

我理解它的方式,Hadoop上的每个文件都要求将6个对象的元数据存储在namenode的内存中(1个文件+ 1个块)* 3个重复。分区只是一个目录,因此我认为每小时分区会将每天的对象数从1增加到24,或者大约4个文件的成本(考虑到每小时的速度优势,这似乎很小)。

我的理解是否正确?我有什么重大缺点吗?我正在寻找将目录结构从/path/to/file/2015/08/13/datafrom20150813T*.txt更改为/path/to/file/2015/08/13/15/datafrom20150813T15.

1 个答案:

答案 0 :(得分:1)

从一天到一小时意味着,与这些表相比,namenode跟踪的对象数量增加了24个。如果现在有100万个块,则更改后将有2400万个块。 NM必须保留内存中所有块的列表,每个块大约150个字节,因此您可以在NM RAM的物理限制内运行。

话虽如此:RAM很便宜。 如果你可以证明每小时分区可以提高性能,那就去吧,确保你的NM可以处理它。

相关问题