附录 B - Impala 故障排除
使用以下步骤诊断与调试 Impala 各个方面的问题:
通常来说,假如在 Impala 中查询执行失败,可以在 Hive 里再试着运行一下。
- 假如查询在 Impala 和 Hive 里都运行失败,这一般是因为你的查询有问题或者你的环境有问题:
- 检查 Language Reference 确认你的查询没问题
- 检查 Impala 所有日志的内容,可能有对确定问题来源有帮助
- 假如在 Impala 中失败而 Hive 中成功,通常是因为你 的 Impala 安装有问题
下表中列出了常见问题和可能的解决办法:
现象 | 解释 | 建议 |
---|---|---|
表连接失败(Joins fail to complete) | 可能是内存不足。当执行连接操作时,待连接的所有数据集合中的所有数据都被载入到内存中。数据集可能非常大,h | Add more memory to your system or join smaller data sets. |
查询返回结果不正确(Queries return incorrect results) | Impala 元数据可能是过期的 | 按照 语言手册里的 REFRESH 语法来刷新 Hive 元数据 |
查询返回结果慢(Queries are slow to return results) | 一些 impalad 实例可能没启动。使用浏览器登录到运行 Impala state store 的主机,访问地址是:http://hostname:port/metrics。 ![]() | 确认所有数据节点上都安装了 Impala。启动所有没运行的 impalad 实例 |
查询返回结果慢(Queries are slow to return results) | Impala 可能没有配置使用本地校验。本地校验使用机器特定的方法计算 HDFS 数据的校验和,非常快速(Native checksumming uses machine-specific instructions to compute checksums over HDFS data very quickly)。检查 Impala l日志,假如发现 "INFO util.NativeCodeLoader: Loaded the native-hadoop" 信息,则没有启用本地校验。 | 参照 Impala 安装后配置,确保 Impala 使用本地校验 |
查询返回结果慢(Queries are slow to return results) | Impala 可能没有配置使用数据位置跟踪(data locality tracking)。 | 参照 Impala 安装后配置,测试 Impala 是否启用数据位置跟踪,必要时启用 |
尝试完成 Impala 任务如执行 INSERT-SELECT 操作失败。Impala 日志中提示文件因为权限拒绝无法打开 | 这可能是权限问题造成的。例如,你可能以 hive 用户使用 Hive shell 创建了一个表。表创建之后,你可能尝试执行其他操作,例如向表中 INSERT-SELECT 数据。因为这个表使用 hive 用户创建的,而执行 INSERT-SELECT 操作的是另外一个用户,这一操作可能会因为权限问题而失败。 | 通常应确保 Impala 用户有足够的权限。在之前的例子里,确保 Impala 用户对 Hive 用户创建的表有足够的权限。 |