HDFS的一个主要问题是压缩:如果压缩文件,则必须处理可拆分压缩。为什么HDFS要求您压缩整个文件,而不是在HDFS块级别实现压缩?
这样可以解决问题:在一个块中读取或写入64 MB块,它足以压缩,并且不会干扰操作或需要可拆分压缩。
这有什么实现吗?
答案 0 :(得分:1)
我在这里猜测,但我可以看到几个问题。
HDFS包含一个名为local short-circuit reads的功能。这允许datanode打开块文件,验证安全性,然后将 filedescriptor 传递给在同一节点上运行的应用程序。这完全绕过了通过HTTP或其他方式从HDFS到M / R应用程序(或任何HDFS应用程序正在读取文件)的任何文件传输。在高性能集群上,短路读取是常态,而不是例外,因为处理发生在分裂所在的位置。您所描述的内容将要求读者理解块压缩以便读取块。
其他注意事项涉及跨越块的拆分。压缩格式通常缺乏随机访问并需要顺序访问。从块中读取最后几个字节,以构成跨越下一个块的分割,由于压缩,可能与读取整个块一样昂贵。
我不是说块压缩是不可能的,但我觉得你的期望更复杂。
此外,块压缩可以是transparently delegated to filesystem。