2016-09-14 44 views
0

许多最佳实践都表明数据应该以HDFS压缩格式存储。配置单元中的压缩如何提高查询性能?

有明确的性能差异,同时运行一个蜂巢的查询在包含压缩的文本文件的表(分块的每个大约250 MB的gzip文件)对未压缩的文本文件。

有人能请解释一下什么是发生在幕后?

按我的理解,而查询输入被分配到映射器的任务,还有一个减压阶段,然后有一个查询。如果是这样的话,它如何提供比未压缩的文本文件更好的性能,因为它将会产生解压缩的开销?

回答

1

有两个方面这里涉及到:

  1. 网络开销:地图降低范式严厉的批评开销洗牌和排序。如果你以非常自私的方式看待处理步骤,那么这些步骤在你想要的处理中没有任何贡献。此外,即使您使用千兆位频率切换,当更大的数据流过物理层的网络时(如果它不涉及非常复杂的操作),那么随机排序就会成为瓶颈。因此,更容易将数据压缩成可通过混洗类瓶颈的数据。
  2. 稀疏数据:较大的数据集大多稀疏(存在例外,但将其作为经验法则)。所以压缩带来了数据的大小,然后再次洗牌排序步骤非常小。在蜂巢表
+0

嗨!感谢你的回答,它确实解释了一些事情。我们有一个连接到集群的SAN存储。性能瓶颈是否仍然起作用? –

+0

我不是100%知道SAN的人,但是如果SAN在多个映射器和多个缩减器之间的海量数据流中无法改进,那么它将成为瓶颈。 – abhiieor

-1

数据compressesion已是众所周知给比未存储更好的性能,无论是在磁盘使用和查询性能方面。

您可以导入用gzip压缩直接放入存储为文本文件表中的文本文件。压缩将被自动检测并且在查询执行期间文件将被实时解压缩。

记录单独压缩每一值,而BLOCK做压缩前缓存1MB起来(默认)。