无法访问 AWS EMR Ganglia 仪表板 - 403 禁止访问
AWS EMR Ganglia dashboard not accessible - 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"}
]
)
当我想查看 dashboards 时,它对 jupyterhub/Yarn 资源管理器/...(即
http://master-public-dns-name:8088/
https://master-public-dns-name:9433/
但是当我尝试访问 Ganglia http://master-public-dns-name/ganglia
时,我得到 403 Forbidden
。
是否需要任何额外的设置?
E: Know issue but still not fixed 在 EMR 6.3.0
ssh
连接到主节点并且运行
sudo service httpd reload
修复了问题(感谢@Aleksey!)。 E: 最初我认为 this answer) 中描述的步骤是必要的,但事实并非如此。
这里的陷阱是你不能把它放到一个 bootstrap 脚本中,因为它们是在集群上安装软件之前执行的。绘图自
你可以创建一个 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']
}
}]
这应该有效。
我有一个 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"}
]
)
当我想查看 dashboards 时,它对 jupyterhub/Yarn 资源管理器/...(即
http://master-public-dns-name:8088/
https://master-public-dns-name:9433/
但是当我尝试访问 Ganglia http://master-public-dns-name/ganglia
时,我得到 403 Forbidden
。
是否需要任何额外的设置?
E: Know issue but still not fixed 在 EMR 6.3.0
ssh
连接到主节点并且运行
sudo service httpd reload
修复了问题(感谢@Aleksey!)。 E: 最初我认为 this answer) 中描述的步骤是必要的,但事实并非如此。
这里的陷阱是你不能把它放到一个 bootstrap 脚本中,因为它们是在集群上安装软件之前执行的。绘图自 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']
}
}]
这应该有效。