FAQ系列之Impala

语言: CN / TW / HK


我下载了一个配置文件,里面有一堆没有单位的数字。那些是什么?

那是纳秒。 查询计划 GUI 的格式适合您,但下载的配置文件只有基本数据。

当我使用 Hue 时,为什么我的查询长时间处于活动状态?

Hue 保持查询线程处于活动状态,直到您关闭它。 有一种方法可以在 Hue 上设置超时。

Impala的查询计划是什么样子?

1. Exec Summary - 查询片段执行时间的概述。 例如 这是一些处理偏差,因为片段 27 的平均时间为 17 分钟,但最大时间为 4 小时。 由于某种原因,一个节点有太多的工作要做。


2. 查询时间线 - 查询时间线概览。当 Rows 可用时,查询结束。

有时,如果 Hue 保持打开状态,则在获取完成后查询会持续很长时间,然后它会保持线程处于活动状态。

3. 查询计划 - 这会更详细地介绍每个片段,告诉您发生了什么以及处理或交换了多少数据。

如何获取Impala的查询计划:

1. Impala Daemon WebUI - 我最喜欢这个

优点 - 给出了一个图形化的计划并有一个漂亮的网络界面

易于剪切和粘贴格式良好的查询配置文件和计划

缺点 - 很难知道哪个守护进程运行了查询。

不让你轻松下载文本查询计划——必须剪切和粘贴

2. Cloudera Manager - Impala 进程

转到查询选项卡并选择最右侧的查询详细信息。

优点 - 有一个下载文本配置文件按钮

有一个很好的格式布局。

缺点 - 文本配置文件下载始终更改为难以阅读的纳秒。

我宁愿剪切和粘贴格式化的时间。

以下是格式化查询时间线与下载时间线的比较:

3. 在 Hue 中运行解释

您可以在查询前键入 Explain 以查看查询计划。

优点- 容易做到。

缺点 - 你没有得到查询时间线或 exec 配置文件。

如何获取Impala的cookbook指南?

查看 Impala Cookbook 以获取端到端部署指南。地址:https://blog.cloudera.com/latest-impala-cookbook/

Impala的Schema设计建议是什么?

  • 使用数字类型。尽可能避免字符串类型,以避免每次读取列值时的字符串转换成本、存储字符串的内存开销以及不同的比较语义。对于内存利用率、并发性、性能和 CPU 效率,这个“琐碎”点的重要性怎么强调都不为过。您应该使用字符串类型的情况:HBase 行键(为了性能)、Parquet 日期(为了 Hive 兼容性)和显然是真实的文本字符串。

  • 尽可能避免 CHAR 和 VARCHAR。CHAR 和 VARCHAR 的效率明显低于字符串,只有在应用程序无法处理可变长度字符串(例如 SAS)时才应使用。数字类型优先于字符串以上。如果您必须使用其中之一,请使用 VARCHAR 而不要使用 CHAR。

  • 明智地选择分区。一个好的分区计划既可以从常见的查询过滤器中消除数据,又可以为长顺序读取提供足够的分区大小,从而提高 IO 吞吐量。遵循 Impala 分区策略工作表。

Impala推荐的文件格式是什么?

  • 总是喜欢 Parquet。Parquet 是一种列式格式,可提供其他列式数据存储所证明的快速分析性能和最大存储密度。使用 Parquet 可以最大限度地提高并发性、性能和 IO 效率。在转换为 Parquet 之前,如果需要的话,可以使用 Avro 或可能的文本来摄取暂存。“在 Impala 表中使用 Parquet 文件格式”

  • 避免除 Parquet、Avro 和 Text 之外的文件格式。最佳模式是将数据摄取到 Avro 或文本中,因为它们的面向行的格式允许逐行写入。然后将数据批量转换为 Parquet,以利用列式性能和数据密度效率进行读取。这些格式应涵盖所有用例,并且是我们的工程工作最集中的地方(如果没有,请联系 justin@)。Impala 将继续为遗留数据开发其他文件格式。注意上一点总是更喜欢 Parquet。

  • 遵循文件和块大小的最佳实践。最佳做法是 256 MB Parquet 文件,以提供足够的大小以提高 IO 扫描效率(建议使用 Impala 创建 Parquet 文件以避免当前 Parquet-MR/Hive 设置的复杂性)。如果在极少数情况下寻找 SLA < 5s,您可能会考虑根据 Advanced Block Sizing 自定义块大小。

Impala查询计划的建议是什么?

  • 始终在连接、聚合或创建/插入中涉及的所有表上计算统计信息。这是在不耗尽内存的情况下处理更大的表连接所必需的。添加新的大型数据元素时刷新统计信息以避免过时的统计信息。有关统计数据为何至关重要的更多详细信息。

  • 不要在列数非常多的表上使用增量统计。每个节点上每个分区的每列增量统计数据占用 400 字节。我们建议在可能的情况下将它用于具有较少列的较大表,并注意增量统计数据并不适合所有客户。请参阅“增量统计概述”

  • 使用 EXPLAIN 按照查询计划验证来验证计划是否合理。设置explain_level=2 以显示扫描节点中统计信息的可用性。“了解 Impala 查询性能 - 解释计划和查询配置文件”

Impala的并发性和多租户建议是什么?

  • 使用 NLB(网络负载平衡器)来实现容错和可扩展性。这是必要的,因此您可以在 ImpalaD 之间分散连接以避免单点故障并分散任何最终步骤和客户端连接的负载。

  • 为 MR/YARN 设置 cgroup 资源限制并为 Impala 使用内存限制。如果您在同一集群上同时运行批处理作业(例如 MR、Spark、Pig、Hive)和 Impala,您应该为 MR/YARN 设置 cgroup 限制,并使用 Impala 的内存限制来控制这些工作负载之间的资源分配。

  • 对并发使用准入控制和查询队列。如果您同时运行多个用户,您可以使用准入控制来避免集群过度饱和并支持多租户。

Impala监控的方法有哪些?

  • 使用 CM 来监控查询。

  • 使用 Impala Charts 下的 CM Best Practices 来确认上面的一些最佳实践。




本文分享自微信公众号 - 大数据杂货铺(bigdataGrocery)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。