如何配置对 Hadoop YARN 资源管理器的安全访问

HadoopHadoopBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调器)是Hadoop生态系统的关键组件,负责在Hadoop集群中管理和分配资源。在本教程中,我们将指导你完成配置对YARN资源管理器的安全访问的过程,确保你的Hadoop部署的安全性和可靠性。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopYARNGroup(["Hadoop YARN"]) hadoop/HadoopYARNGroup -.-> hadoop/yarn_setup("Hadoop YARN Basic Setup") hadoop/HadoopYARNGroup -.-> hadoop/apply_scheduler("Applying Scheduler") hadoop/HadoopYARNGroup -.-> hadoop/yarn_app("Yarn Commands application") hadoop/HadoopYARNGroup -.-> hadoop/yarn_container("Yarn Commands container") hadoop/HadoopYARNGroup -.-> hadoop/yarn_log("Yarn Commands log") hadoop/HadoopYARNGroup -.-> hadoop/yarn_jar("Yarn Commands jar") hadoop/HadoopYARNGroup -.-> hadoop/resource_manager("Resource Manager") hadoop/HadoopYARNGroup -.-> hadoop/node_manager("Node Manager") subgraph Lab Skills hadoop/yarn_setup -.-> lab-417676{{"如何配置对 Hadoop YARN 资源管理器的安全访问"}} hadoop/apply_scheduler -.-> lab-417676{{"如何配置对 Hadoop YARN 资源管理器的安全访问"}} hadoop/yarn_app -.-> lab-417676{{"如何配置对 Hadoop YARN 资源管理器的安全访问"}} hadoop/yarn_container -.-> lab-417676{{"如何配置对 Hadoop YARN 资源管理器的安全访问"}} hadoop/yarn_log -.-> lab-417676{{"如何配置对 Hadoop YARN 资源管理器的安全访问"}} hadoop/yarn_jar -.-> lab-417676{{"如何配置对 Hadoop YARN 资源管理器的安全访问"}} hadoop/resource_manager -.-> lab-417676{{"如何配置对 Hadoop YARN 资源管理器的安全访问"}} hadoop/node_manager -.-> lab-417676{{"如何配置对 Hadoop YARN 资源管理器的安全访问"}} end

Hadoop YARN 简介

Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调器)是 Apache Hadoop 生态系统中的资源管理和作业调度组件。它负责管理 Hadoop 集群的计算资源,并将这些资源分配给在集群上运行的各种应用程序。

YARN 提供了一个中央资源管理器,用于在系统中的所有应用程序之间仲裁资源。它将上一代 Hadoop 框架(MapReduce 1)的资源管理和作业调度/监控功能解耦为单独的守护进程。

YARN 的关键组件包括:

资源管理器(ResourceManager,RM)

资源管理器是管理集群资源并调度在集群上运行的应用程序的主要守护进程。它是向各种应用程序分配资源的中央权威机构。

节点管理器(NodeManager,NM)

节点管理器是在集群的每个节点上运行的守护进程。它负责启动和监控应用程序的容器,并向资源管理器报告节点的资源使用情况和状态。

应用程序主节点(Application Master,AM)

应用程序主节点是每个应用程序的框架,它从资源管理器协商资源,并与节点管理器合作执行和监控应用程序的任务。

YARN 提供了一个灵活且可扩展的架构,允许执行各种类型的应用程序,包括批处理(MapReduce)、交互式查询(Spark、Hive)、实时流处理和机器学习。通过分离资源管理和作业调度,YARN 能够更好地利用集群资源并改善应用程序隔离。

graph LR Client --> ResourceManager ResourceManager --> NodeManager NodeManager --> Application

表 1:YARN 的关键组件

组件 描述
资源管理器 管理集群资源并调度应用程序
节点管理器 在每个节点上运行,启动并监控应用程序容器
应用程序主节点 每个应用程序的框架,协商资源并执行应用程序

配置对 YARN 资源管理器的安全访问

为确保对 YARN 资源管理器的安全访问,我们需要配置 Kerberos 认证和授权。Kerberos 是一种广泛使用的网络认证协议,用于在客户端和服务器之间提供安全通信。

启用 Kerberos 认证

  1. 在 Hadoop 集群上安装必要的 Kerberos 软件包:
sudo apt-get update
sudo apt-get install -y krb5-kdc krb5-admin-server krb5-user
  1. 通过编辑 /etc/krb5.conf 文件来配置 Kerberos 服务器:
[realms]
  EXAMPLE.COM = {
    kdc = kerberos.example.com
    admin_server = kerberos.example.com
  }
  1. 为 YARN 资源管理器创建 Kerberos 主体:
sudo kadmin.local -q "addprinc -randkey yarn/rm.example.com"
sudo kadmin.local -q "ktadd -k /etc/security/yarn.keytab yarn/rm.example.com"

为 Kerberos 认证配置 YARN

  1. 编辑 yarn-site.xml 文件并添加以下属性:
<property>
  <name>yarn.resourcemanager.principal</name>
  <value>yarn/[email protected]</value>
</property>
<property>
  <name>yarn.resourcemanager.keytab</name>
  <value>/etc/security/yarn.keytab</value>
</property>
<property>
  <name>yarn.nodemanager.principal</name>
  <value>yarn/[email protected]</value>
</property>
<property>
  <name>yarn.nodemanager.keytab</name>
  <value>/etc/security/yarn.keytab</value>
</property>
  1. 重启 YARN 资源管理器和节点管理器,使更改生效。

为 Kerberos 授权配置 YARN

  1. 编辑 yarn-site.xml 文件并添加以下属性:
<property>
  <name>yarn.acl.enable</name>
  <value>true</value>
</property>
<property>
  <name>yarn.admin.acl</name>
  <value>yarn_admin_user</value>
</property>
  1. 重启 YARN 资源管理器和节点管理器,使更改生效。

通过配置 Kerberos 认证和授权,你可以确保只有授权的用户和应用程序能够访问 YARN 资源管理器,为你的 Hadoop 集群提供一个安全的环境。

验证和排查安全访问问题

为确保对 YARN 资源管理器的安全访问正常工作,你可以执行以下验证和故障排查步骤。

验证安全访问

  1. 为 YARN 用户获取 Kerberos 票据:
kinit yarn/rm.example.com
  1. 使用 yarn rmadmin 命令检查资源管理器的状态:
yarn rmadmin -getServiceState

如果命令返回预期的 “RUNNING” 状态,则对资源管理器的安全访问配置正确。

排查安全访问故障

如果你在对 YARN 资源管理器的安全访问中遇到问题,可以按照以下故障排查步骤操作:

  1. 检查 YARN 日志中与 Kerberos 认证或授权相关的任何错误消息或警告:
cat /var/log/hadoop-yarn/yarn-*.log
  1. 通过运行 kinit 命令并检查输出来验证 Kerberos 配置:
kinit -V yarn/rm.example.com
  1. 检查 Kerberos 服务器日志中主体或密钥表是否存在问题:
cat /var/log/krb5kdc.log
  1. 确保在 yarn-site.xml 文件中正确配置了 Kerberos 主体和密钥表文件。

  2. 通过检查 yarn-site.xml 文件中的 yarn.acl.enableyarn.admin.acl 属性来验证 YARN 授权设置。

  3. 进行任何配置更改后,重启 YARN 资源管理器和节点管理器。

通过遵循这些验证和故障排查步骤,你可以确保对 YARN 资源管理器的安全访问配置正确并按预期运行。

总结

在本教程结束时,你将学会如何正确配置对 Hadoop YARN 资源管理器的安全访问,从而能够保护你的 Hadoop 集群,并确保数据处理工作流程的完整性。这些知识对于维护安全高效的 Hadoop 环境至关重要。