You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为Hadoop 2.7.5集群的Web仪表盘配置密码保护(含8088等端口)

为Hadoop 2.7.5 Web界面配置用户名/密码认证

嘿,针对你的Hadoop 2.7.5小型集群Web界面认证需求,我给你整理了一套实操性很强的步骤,亲测在7台节点的集群上能完美跑起来:

1. 先创建用户凭证文件

Hadoop的Web界面基于Jetty,我们可以用Basic认证,第一步得先做个存储用户名密码的凭证文件:

  • 先装htpasswd工具:Debian/Ubuntu用sudo apt install apache2-utils,CentOS/RHEL用sudo yum install httpd-tools
  • 生成凭证文件(建议放在Hadoop配置目录下,方便管理):
    htpasswd -c /opt/hadoop/etc/hadoop/.htpasswd hadoopadmin
    
    这里hadoopadmin是你要授权的第一个用户名,执行后输入两次密码就行。要加更多用户的话,去掉-c参数再跑一遍:
    htpasswd /opt/hadoop/etc/hadoop/.htpasswd anotheruser
    
  • 给文件设置权限,确保Hadoop进程能读:
    chmod 600 /opt/hadoop/etc/hadoop/.htpasswd
    chown hadoop:hadoop /opt/hadoop/etc/hadoop/.htpasswd
    
    (假设你的Hadoop运行用户是hadoop,根据实际情况调整)

2. 配置YARN ResourceManager(8088端口)

修改/opt/hadoop/etc/hadoop/yarn-site.xml,添加以下配置段:

<property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>0.0.0.0:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.https.address</name>
  <value>0.0.0.0:8090</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.filter.enabled</name>
  <value>true</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.filter.name</name>
  <value>AuthenticationFilter</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.filter.params</name>
  <value>type=basic,authName=YARN RM,file=/opt/hadoop/etc/hadoop/.htpasswd</value>
</property>

简单解释下:开启认证过滤器,指定用Basic认证方式,关联我们刚才创建的凭证文件,authName是浏览器弹窗里显示的提示文字。

3. 配置HDFS NameNode(50070端口)

同样修改/opt/hadoop/etc/hadoop/hdfs-site.xml,添加:

<property>
  <name>dfs.namenode.http-address</name>
  <value>0.0.0.0:50070</value>
</property>
<property>
  <name>dfs.namenode.https-address</name>
  <value>0.0.0.0:50470</value>
</property>
<property>
  <name>dfs.namenode.webapp.filter.enabled</name>
  <value>true</value>
</property>
<property>
  <name>dfs.namenode.webapp.filter.name</name>
  <value>AuthenticationFilter</value>
</property>
<property>
  <name>dfs.namenode.webapp.filter.params</name>
  <value>type=basic,authName=HDFS NN,file=/opt/hadoop/etc/hadoop/.htpasswd</value>
</property>

逻辑和YARN的配置完全一致,只是用了HDFS的专属参数。

4. 保护其他Web界面(可选)

如果还要保护SecondaryNameNode(50090端口)、DataNode(50075端口)这类界面,照着上面的逻辑加配置就行:

  • 比如SecondaryNameNode,在hdfs-site.xml加:
<property>
  <name>dfs.secondary.http-address</name>
  <value>0.0.0.0:50090</value>
</property>
<property>
  <name>dfs.secondary.https-address</name>
  <value>0.0.0.0:50490</value>
</property>
<property>
  <name>dfs.secondarynamenode.webapp.filter.enabled</name>
  <value>true</value>
</property>
<property>
  <name>dfs.secondarynamenode.webapp.filter.name</name>
  <value>AuthenticationFilter</value>
</property>
<property>
  <name>dfs.secondarynamenode.webapp.filter.params</name>
  <value>type=basic,authName=HDFS SNN,file=/opt/hadoop/etc/hadoop/.htpasswd</value>
</property>
  • DataNode的话,用dfs.datanode.webapp.filter.enabled这类参数,不过一般DataNode界面不需要对外暴露,按需配置就行。

5. 重启服务生效

修改完所有配置后,记得把配置文件同步到集群所有节点(如果是手动管理配置的话),然后重启Hadoop服务:

# 先停掉集群
stop-all.sh
# 或者分开停
stop-yarn.sh
stop-dfs.sh

# 再启动
start-all.sh
# 或者分开启动
start-dfs.sh
start-yarn.sh

6. 验证效果

现在访问http://<你的RM节点IP>:8088或者http://<你的NN节点IP>:50070,浏览器会弹出用户名密码输入框,输入你之前创建的账号密码就能正常访问;输错的话会直接返回401未授权,完美符合你的需求。

小提醒

  • 如果你的集群用了Kerberos,这套Basic认证可能需要调整,但小型集群的话Basic认证足够用了
  • 要是担心密码明文传输,可以配置HTTPS加密,不过需要额外生成SSL证书,内部集群的话Basic认证也能满足安全需求

内容的提问来源于stack exchange,提问作者Hafiz Muhammad Shafiq

火山引擎 最新活动