简短描述
以下是可能无法访问 EMR 集群的常见原因:
- 安全组规则中存在权限问题。
- 对于在私有子网中配置的集群,网络设置不正确。
- 集群身份验证设置存在问题。
- 集群节点存在资源限制。
- Amazon EMR 服务进程守护程序已停止。
解决方法
Amazon EMR 安全组规则
1. 验证安全组规则是否正确。有关更多信息,请参阅使用 Amazon EMR 管理的安全组。
2. 验证是否允许在端口 8443 上使用 TCP。端口 8443 允许集群管理器与集群主节点进行通信。
3. 如果您尝试通过 SSH 连接到集群,请验证是否允许在端口 22 上使用 SSH。
4. 如果外部用户或应用程序无法访问 EMR 集群,请验证在托管安全组中设置的相关规则。此外,还要验证其他安全组中的规则。
私有子网中的 EMR 集群
除了上一节中提到的项目外,还需要对私有子网中的 EMR 集群进行以下验证:
1. 验证是否添加了其他托管的服务访问安全组。验证规则是否允许集群管理器与集群节点进行通信。有关更多信息,请参阅 Amazon EMR 管理的服务访问安全组(私有子网)。
2. 如果您使用的是堡垒主机并且无法通过该堡垒主机访问 Amazon EMR,请执行以下操作:
- 验证堡垒主机安全组是否允许来自客户端系统的入站流量。
- 验证 EMR 集群安全组是否允许来自堡垒主机的入站流量。
由于网络配置设置的不同,请确保端到端连接设置正确,且没有任何黑洞。
身份验证方法
要确保正确设置身份验证,请执行以下操作:
1. 如果身份验证使用 Amazon Elastic Compute Cloud(Amazon EC2)密钥对,请验证其创建和配置是否正确。有关更多信息,请参阅为 SSH 凭证使用 Amazon EC2 密钥对。
2. 如果身份验证使用 Kerberos,请验证其配置是否正确。有关更多信息,请参阅使用 Kerberos 身份验证。
集群节点中的资源限制
1. 确认底层主节点处于运行状态并且未终止。
2. 检查主节点的实例状态日志,以确定资源的使用情况。
运行以下命令以检查排名靠前的 CPU 用户:
ps auxwww --sort -%cpu | head -10
运行以下命令以检查内核的性能:
dmesg | tail -n 25
运行以下命令以检查内存使用情况:
free -m
运行以下命令以检查磁盘使用情况:
df -h
EMR 集群进程守护程序
主节点的实例控制器(I/C)是在集群节点上运行的进程守护程序。该实例控制器与 Amazon EMR 控制面板和其余集群进行通信。运行以下命令以确保它处于运行状态:
运行以下命令以检查实例控制器的状态:
sudo systemctl status instance-controller
运行以下命令启动实例控制器:
sudo systemctl start instance-controller