块级HDFS压缩

时间:2016-07-04 14:07:59

标签: hadoop hdfs

HDFS的一个主要问题是压缩:如果压缩文件,则必须处理可拆分压缩。为什么HDFS要求您压缩整个文件,而不是在HDFS块级别实现压缩?

这样可以解决问题:在一个块中读取或写入64 MB块,它足以压缩,并且不会干扰操作或需要可拆分压缩。

这有什么实现吗?

1 个答案:

答案 0 :(得分:1)

我在这里猜测,但我可以看到几个问题。

HDFS包含一个名为local short-circuit reads的功能。这允许datanode打开块文件,验证安全性,然后将 filedescriptor 传递给在同一节点上运行的应用程序。这完全绕过了通过HTTP或其他方式从HDFS到M / R应用程序(或任何HDFS应用程序正在读取文件)的任何文件传输。在高性能集群上,短路读取是常态,而不是例外,因为处理发生在分裂所在的位置。您所描述的内容将要求读者理解块压缩以便读取块。

其他注意事项涉及跨越块的拆分。压缩格式通常缺乏随机访问并需要顺序访问。从块中读取最后几个字节,以构成跨越下一个块的分割,由于压缩,可能与读取整个块一样昂贵。

我不是说块压缩是不可能的,但我觉得你的期望更复杂。

此外,块压缩可以是transparently delegated to filesystem

最后但并非最不重要的是,HDFS上方的数据层存在更好的压缩格式:ORCParquet