块和条纹之间有什么区别?

时间:2020-01-19 17:03:41

标签: hadoop hive filesystems hdfs orc

来自Hive的文档:

如果表或分区包含许多小的RCFiles或ORC文件, 然后上述命令会将它们合并为更大的文件。的情况下 RCFile合并发生在块级别,而对于ORC文件, 合并发生在条带级别,从而避免了开销 对数据进行解压缩和解码。

我的问题是:块和条纹之间有什么区别?

1 个答案:

答案 0 :(得分:2)

HDFS块是最低级别,ORC条带是较高级别,这些级别是完全独立的,ORC中的条带并不关心较低的存储层。

HDFS块:

  • HDFS块是最低级别,与文件格式无关。 HDFS将文件分成块,以优化存储。
  • 一个条带可以存储在多个块中,一个块可以包含多个条带或部分条带。 HDFS将分割文件,而不考虑条带格式或文件格式。
  • HDFS存储每个文件块的元数据,对于高级ORC读取器级别而言,读写文件是透明的,HDFS将处理所有块。

ORC条纹:

  • 上层存储。 Stripe对块一无所知。

  • ORC可在条带级别拆分。 HDFS对ORC结构以及如何对其进行拆分以进行处理一无所知。 HDFS将文件拆分为多个块以优化存储。单个容器中至少可以处理一条带。您可以配置条带大小以适合块大小。

一些有用的链接。请阅读以获得更好的理解:

HDFS blocks

HDFS block vs Stripe

ORC optimizing

Big ORC stripes and block padding in S3-非常有用的博客