首页 > 解决方案 > AWS EMR Ganglia 控制面板无法访问 - 403 Forbidden

问题描述

我有一个 EMR 集群

response = emr_client.run_job_flow(
    Name="Test dashboards",
    ReleaseLabel='emr-6.2.0',
    LogUri=f"s3://my-bucket/emr_logs/",
    Instances={
        'MasterInstanceType': 'm6g.2xlarge',
        'SlaveInstanceType': 'm6g.2xlarge',
        'InstanceCount': 2,
        'KeepJobFlowAliveWhenNoSteps': True,
        'TerminationProtected': False,
        'Ec2SubnetId': emr_config['Instances']['Ec2SubnetId'],
        'AdditionalMasterSecurityGroups': emr_config['Instances']['AdditionalMasterSecurityGroups']
    },
    VisibleToAllUsers=True,
    JobFlowRole=emr_config['JobFlowRole'],
    ServiceRole=emr_config['ServiceRole'],
    StepConcurrencyLevel=1,
    Applications=[
        {"Name":"Spark"},
        {"Name": "JupyterHub"},
        {"Name": "Ganglia"}
    ]
)

当我想查看仪表板时,它适用于 jupyterhub/Yarn 资源管理器/...(即

但是当我尝试访问 Gangliahttp://master-public-dns-name/ganglia时,我得到了403 Forbidden.

是否需要任何额外的设置?

标签: amazon-emr

解决方案


E:知道问题但在 EMR 6.3.0 中仍未修复

ssh连接到主节点并运行

sudo service httpd reload

解决了这个问题(感谢@Aleksey!)。E:最初我认为这个答案中描述的步骤)是必要的,这是不正确的。

这里的问题是你不能把它放到一个引导脚本中,因为它们是在软件安装到集群上之前执行的。从此答案中汲取灵感, 您可以创建一个 shell 脚本s3://my-bucket/fix_ganglia.sh

if [ -f "/etc/httpd/conf.d/ganglia.conf" ]; then
    echo "Setting up ganglia on master node"
    sudo sed -i 's/Order deny,allow/#Order deny,allow/g' /etc/httpd/conf.d/ganglia.conf
    sudo service httpd reload
fi

并将其配置为一个步骤script-runner.jar

Steps = [{
    'Name': 'Fix Ganglia access',
    'ActionOnFailure': 'CONTINUE',
    'HadoopJarStep': {
        'Jar': 's3://ap-southeast-1.elasticmapreduce/libs/script-runner/script-runner.jar',
        'Args': ['s3://my-bucket/fix_ganglia.sh']
    }
}]

这应该有效。


推荐阅读