tencent cloud

弹性 MapReduce

动态与公告
产品动态
产品公告
安全公告
产品简介
产品概述
产品优势
产品架构
产品功能
应用场景
约束与限制
技术支持范围
产品发行版
购买指南
EMR on CVM 计费说明
EMR on TKE 计费说明
EMR Serverless HBase 计费说明
快速入门
EMR on CVM 快速入门
EMR on TKE 快速入门
EMR on CVM 操作指南
规划集群
管理权限
配置集群
管理集群
管理服务
监控告警
智能管家
EMR on TKE 操作指南
EMR on TKE 简介
配置集群
管理集群
管理服务
监控运维
应用分析
EMR Serverless HBase 操作指南
EMR Serverless HBase 产品简介
配额与限制
规划实例
管理实例
监控告警
开发指南
EMR 开发指南
Hadoop开发指南
Spark 开发指南
HBASE开发指南
Phoenix on Hbase 开发指南
Hive 开发指南
Presto开发指南
Sqoop 开发指南
Hue 开发指南
Oozie 开发指南
Flume 开发指南
Kerberos 开发指南
Knox 开发指南
Alluxio 开发指南
Kylin 开发指南
Livy 开发指南
Kyuubi 开发指南
Zeppelin 开发指南
Hudi 开发指南
Superset 开发指南
Impala 开发指南
Druid 开发指南
Tensorflow 开发指南
Kudu 开发指南
Ranger 开发指南
Kafka 开发指南
Iceberg 开发指南
StarRocks 开发指南
Flink 开发指南
JupyterLab 开发指南
MLflow 开发指南
实践教程
EMR on CVM 运维实践
数据迁移实践
自定义伸缩实践教程
API 文档
History
Introduction
API Category
Cluster Resource Management APIs
Cluster Services APIs
User Management APIs
Data Inquiry APIs
Scaling APIs
Configuration APIs
Other APIs
Serverless HBase APIs
YARN Resource Scheduling APIs
Making API Requests
Data Types
Error Codes
常见问题
EMR on CVM常见问题
服务等级协议
联系我们

跨可用区服务高可用

PDF
聚焦模式
字号
最后更新时间: 2024-10-30 10:35:16

机架感知概述

Hadoop 集群机架感知是指 Hadoop 分布式计算框架中的节点会根据网络拓扑结构进行组织,并且在任务调度和数据存储时将优先发生在同一机架内的节点之间,以提高集群性能和可靠性的技术。 它是由 HDFS 和 YARN 两个组件来支持的。HDFS 通过将数据块的副本分布在不同的机架上,实现数据的高可靠性和高可用性。YARN 则通过将任务分配到距离更近的节点或容器上,提高任务执行的效率和性能。 而 Hadoop 无法自动发现节点的网络拓扑结构,所以提供了以下方式帮助其感知:
自定义 Java 类实现 DNSToSwitchMapping 的接口方法,并在 core-site.xml 配置文件中由 net.topology.node.switch.mapping.impl 参数指定类名。
基于脚本进行拓扑映射,并在 core-site.xml 配置文件中使用 net.topology.script.file.name 参数指定。
下面提供了基于脚本配置机架感知策略的示例,基本方法是映射可用区子网到机架信息。
说明
机架感知搭建需基于集群为跨可用区部署架构(集群创建请参见 跨可用区集群部署),单可用区集群不适用。

基于脚本配置机架感知策略

1. 准备一个跨可用区的 EMR 集群,登录 EMR 控制台,单击集群 ID/名称进入集群详情页,在实例信息 > 部署信息中确认集群所在的 VPC 网络信息和不同可用区对应的子网。 然后在私有网络 > 子网中获取子网的 CIDR 与可用区的映射信息。
注意
VPC 名称和子网名称均可能存在重复情况,此时需进入集群资源下的实例信息进一步确认。
2. 根据子网 CIDR 与可用区的映射信息,准备机架感知脚本 RackAware.py。
说明:
本为使用 /usr/bin/python 路径下的 python2 版本为示例,其中 #CIDR# 需替换为子网 CIDR。
#!/usr/bin/python

import sys
import IPy
import re

DEFAULT_RACK="/default-rack"
cidrToRack = {
' #CIDR#' : 'rack-1',
' #CIDR#' : 'rack-2',
' #CIDR#' : 'rack-3'
}

for name in sys.argv[1:]:
rack = DEFAULT_RACK
ips = re.findall(r'[0-9]+(?:\\.[0-9]+){3}', name)
if len(name) > 0 and len(ips) > 0:
ip = ips[0]
for cidr in cidrToRack.keys():
if ip in IPy.IP(cidr):
rack = cidrToRack[cidr]
break
print "/{0}".format(rack)
3. 集群服务> HDFS > 配置管理中,新增 RackAware.py 文件,并在 NameNode 节 点core-site.xml 文件增加配置项net.topology.script.file.name=/usr/local/service/hadoop/etc/hadoop/RackAware.py
4. 控制台重启 NameNode和ResourceManager。

查看集群的机架信息

HDFS 服务:登录 NameNode 节点,hadoop 用户执行 hdfs dfsadmin -printTopology,如下:

YARN 服务:可登录 WebUI 查看:




帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈