[不看会报错]-Impala开启准备工作
# 一、问题背景
Impala 在不开启 Ranger、不开启 Kerberos 的情况下通常可以直接运行。但当你在 已经部署 Ranger 的环境里启用 Kerberos 后,如果没有提前把 Impala 需要的用户加入 Hive Plugin 的策略拉取清单,就会出现下面这种错误现象。
以下是常见的组合触发场景:
- 安装 Impala
- Ranger 已经开启 Hive Plugin
- 同时开启 Kerberos
- 使用 Impala-shell 访问数据
结果就是:数据访问失败。
# 二、现象与报错复现
# 1、已经完成 kinit
执行:
kinit -kt /etc/security/keytabs/impala.headless.keytab impala-aaa@TTBIGDATA.COM
1
# 2、尝试访问 Impala
./impala-shell -k
1

连接成功,但实际执行 SQL:
show tables;
1
返回如下错误:
[root@dev1 shell]# ./impala-shell -k
Starting Impala Shell with Kerberos authentication using Python 2.7.18
Using service name 'impala'
Opened TCP connection to dev1:21050
Connected to dev1:21050
Server version: impalad version 4.4.1-RELEASE RELEASE (build 6edbf57651aa84652e0121fe9055e53c4d350871)
***********************************************************************************
Welcome to the Impala shell.
(Impala Shell v4.4.1-RELEASE (6edbf57) built on Sat Oct 18 00:22:46 UTC 2025)
When you set a query option it lasts for the duration of the Impala shell session.
***********************************************************************************
[dev1:21050] default> show tables;
Query: show tables
ERROR: AuthorizationException: User 'impala-aaa@TTBIGDATA.COM' does not have privileges to access: default.*.*
[dev1:21050] default>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
这类错误不是 keytab 的问题
认证已经成功,是 授权被拒绝。Impala 能连上,但 Ranger 没有下发对应策略。
# 3、Ranger 侧也会记录拒绝日志

从日志可以看出 —— Impala 使用的其实是 Hive Plugin。
# 三、为什么 Impala 依赖 Hive Plugin?
关键点
Impala 自身并没有单独的 Ranger Plugin,而是 复用 Hive Plugin 的策略下发机制。
所以,当 Ranger 配置里允许拉取策略的用户没有包含:
- hive
- impala
两者中任意一个缺失都会导致 Impala 无法拉取 policy → 认证成功但授权失败。
# 四、解决方法:修改 Ranger Hive Plugin 配置
在 Ranger 管理界面中,找到 Hive 对应的 service。
进入 Config → Advanced 视图,将以下三个参数补全:
tag.download.auth.users = hive,impala
policy.download.auth.users = hive,impala
policy.grantrevoke.auth.users = hive,impala
1
2
3
2
3

这些参数的作用
| 配置项 | 用途说明 |
|---|---|
| tag.download.auth.users | 允许哪些用户下载标签策略(tag-based policy) |
| policy.download.auth.users | 允许哪些用户下载常规策略(resource-based policy) |
| policy.grantrevoke.auth.users | 允许哪些用户执行授予/回收权限操作 |
填写完成后保存并刷新策略。
# 五、重新测试 Impala 权限
再次执行:
./impala-shell -k
show tables;
1
2
2

现在已经可以正常访问 default 数据库。
再看 Ranger:

可以看到:
- Impala 成功拉取策略
- 权限也被正常匹配
- 查询不再被拒绝