我们在安装完hadoop 2.x 版本之后,默认情况下,可以通过 http://ip:50070/dfshealth.html访问hdfs页面,查看namenode和datanode状态,以及hdfs的相关文件等。但是这存在安全隐患,可能导致我们的文件信息的泄露,如果我们在页面里面添加个认证机制,只有验证之后的用户才可以进入页面里操作。
下面介绍一个既安全又好用的配置方案。
既然这是一个web界面,那就可以从为web项目添加用户校验入手,而不是为hadoop提供用户校验入手。
1、具体的配置如下
在namenode节点配置即可,不用在datanode中配置
web.xml (web项目的配置文件)
jetty.xml (jetty运行配置文件)
realm.properties (账号密码)
2、web.xml
路径: /usr/hdp/2.5.3.0-37/hadoop-hdfs/webapps/hdfs/WEB-INF
编辑web.xml,填入以下内容(这是我的配置, role-name 要根据自己的实际情况配置,我的hadoop用户是在hadoop group下的,所以填hadoop):
Protected
/*
hadoop
BASIC
jobtrackerRealm
3、jetty-web.xml
和web.xml在同一个文件夹下,如果没有,则新增一个,填入以下内容(/etc/hadoop/realm.properties是配置用户名密码的文件,
在同一行配置中已经加上hadoop.home.dir前缀了,这里补充实际路径就可以了):
jobtrackerRealm
/etc/hadoop/realm.properties
4、 realm.properties
在 jetty-web.xml 配置的路径下,/etc/hadoop/realm.properties ,这个文件是没有 的,要先创 建。
cp /etc/hadoop/realm.properties /etc/hadoop/2.5.3.0-37/0/
chmod 755 /etc/hadoop/2.5.3.0-37/0/realm.properties
此时做完文件会放到 /etc/hadoop/2.5.3.0-37/0/ realm.properties下面
vi /etc/hadoop/realm.properties
hadoop:4rfvbhu_2IU,hadoop
用户名:密码,用户所在的组 #比如: hadoop:hadoop123,root 一个用户密码一行,要配置多个,就多行
5、重启namenode,使认证生效
重启namenode
这里建议先重启standby nn,然后主从切换,重启切下来的standby nn,不要直接重启active的namenode
此法在yarn中,亦可使用。