[0001]>>>>>>Hadoop管理员配置优化
# 一、问题背景
在启用 Kerberos + Knox 的 Hadoop 集群中,通过 Knox 打开 HDFS Web UI 页面时,整体访问表现是正常的:
- NameNode Web UI 可访问
- Overview、DataNode 等页面正常
- 但点击 Logs 页面时无法进入
如下图所示:

# 二、问题现象复现
通过 Knox 网关访问 HDFS Web UI 后,进入 Logs 页面,页面无法正常加载:

此时页面并未提示文件不存在或路径错误,而是直接拒绝访问。
# 三、日志与文件权限排查
# 1、NameNode 日志目录检查
cd /var/log/hadoop/hdfs
ls -lh
1
2
2
drwxr-xr-x 4 hdfs hadoop 30 Jan 14 11:03 audit
-rw-r--r-- 1 hdfs hadoop 6308 Jan 15 00:47 gc.log-202601150045
-rw-r--r-- 1 hdfs hadoop 191490 Jan 15 00:48 hadoop-hdfs-namenode-dev1.log
-rw-r--r-- 1 hdfs hadoop 9863 Jan 15 00:47 hadoop-hdfs-namenode-dev1.out
-rw------- 1 hdfs hadoop 81576 Jan 15 00:48 hadoop-hdfs-root-datanode-dev1.log
-rw------- 1 root root 0 Jan 15 00:45 hadoop-hdfs-root-datanode-dev1.out
-rw-r--r-- 1 hdfs hadoop 9426 Jan 15 00:48 hdfs-audit.log
1
2
3
4
5
6
7
2
3
4
5
6
7
从文件系统层面看:
- 日志文件存在
- 权限正常
- 不存在 Linux 文件权限导致的拒绝访问
# 2、NameNode 运行日志定位
tail -f hadoop-hdfs-namenode-dev1.log
1

关键日志反复出现:
WARN AuthenticationFilter - AuthenticationToken ignored: Unauthorized access
WARN HttpServer2 - User admin is unauthorized to access the page /logs/.
1
2
2
关键点
这里的 admin 并不是 Linux 用户,
而是 Knox 透传到 HDFS HttpServer2 的访问身份。
# 四、问题根因分析
# 1、Logs 属于管理级接口
在 HDFS Web UI 中:
- 普通页面:无需管理员权限
/logs/:管理员权限接口
该权限判断由 HttpServer2.hasAdministratorAccess() 完成。
# 2、管理员身份判定规则
HDFS Web UI 并 不依赖 HDFS ACL, 而是通过配置项进行控制:
dfs.cluster.administrators
1
该配置用于决定:
- Web UI Logs 页面访问权限
- JMX 接口
- 部分运维级 Web 接口
# 3、原始配置的问题
之前的配置如下所示:

hdfs
1
该写法存在的问题是:
- 仅声明了用户
- 未包含任何用户组
- Knox 代理用户不在允许范围内
# 五、正确的配置方式
# 1、推荐配置写法
将 dfs.cluster.administrators 修改为:
hdfs hadoop
1
含义说明:
hdfs:HDFS 管理用户hadoop:统一的服务用户组
核心原因
Logs 页面是否可访问, 关键在于是否包含 用户组维度。 在 Knox 场景下,仅配置用户是不够的。
# 2、Ambari 页面中的最终效果

# 六、服务重启与访问验证
修改配置并重启 HDFS 服务后,通过 Knox 再次访问:
https://dev1:6543/gateway/default/hdfs/logs/?host=http%3A%2F%2Fdev1%3A50070
1
Logs 页面可正常打开:

版本说明
该配置已在 ttr-release 2.2.3 版本及之后 作为默认策略内置, 新部署环境无需再额外处理该问题。
- 01
- Ambari-Web-3.0.0本地启动与二开环境搭建01-28
- 02
- 左侧 Service 数量控制原理与实现01-28
- 03
- [22212]Ambari 3.0.0 左侧服务菜单滚动条缺失修复01-28