网络拓扑与机架感知

网络拓扑:
在海量数据处理中,其主要限制因素是节点之间数据的传输速率—带宽很稀缺。这里的想法是将两个节点间的带宽作为距离的衡量标准

节点距离:
两个节点到达最近的共同祖先的距离总和

机架感知
官方ip地址:
http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/RackAwareness.html

在低版本Hadoop副本节点的选择
第一个副本在client所处的节点上,如果客户端在集群外,随机选择一个
第二个副本和第一个副本位于不相同机架的随机节点上
第三个副本和第二个副本位于相同的机架,节点随机
如图所示:
在这里插入图片描述
Hadoop2.7.2(本人hadoop版本)副本节点选择:
第一个副本在client所处的节点上,入股哦客户端在集群外,随机选择一个
第二个副本和第一个副本位于相同机架,随机节点
第三个副本位于不同机架,随机节点
如图所示:
在这里插入图片描述

### HDFS 的机架感知配置及工作原理 #### 一、HDFS 机架感知的工作原理 HDFS 的机架感知是为了优化数据存储读取效率而设计的一种机制。它通过识别节点在网络中的位置来决定数据块的分布方式,从而减少跨机架的数据传输开销并提升系统的可靠性。 具体来说,在默认情况下,HDFS 使用三副本策略保存文件数据块。第一个副本通常存放在写入请求所在的节点上;第二个副本会被放置到另一个不同的机架上的某个 DataNode 中;第三个副本则被放到第二个副本相同的机架但不同节点的位置[^3]。这种布局能够有效降低单个机架故障带来的风险,同时也提高了数据访问速度。 #### 二、HDFS 机架感知的配置方法 要启用 HDFS 的机架感知功能,管理员需要完成以下几个方面的设置: 1. **定义网络拓扑结构** 需要在 `core-site.xml` 文件中指定脚本路径用于解析 IP 地址对应的物理位置关系(即所谓的“反向 DNS 查询”)。此脚本应返回类似于 `/rackX/datacenterY` 这样的字符串表示形式。 ```xml <property> <name>topology.script.file.name</name> <value>/path/to/rack-awareness-script.sh</value> </property> ``` 2. **编写 Rack-Aware 脚本** 创建一个可执行 Shell 或其他语言编写的程序用来接收传入参数——DataNodes 的主机名/IP地址列表,并输出相应的机架信息。例如: ```bash #!/bin/bash case $1 in node1|node2) echo "/rack1" ;; node3|node4) echo "/rack2" ;; *) echo "/default-rack" ;; esac ``` 上述例子简单演示了一个小型集群内的两层架构划分逻辑。 #### 三、HDFS 主节点故障切换机制概述 对于 NameNode 的高可用性保障方面,现代版本的 Apache Hadoop 提供了两种主要解决方案:ZooKeeper Failover Controller Quorum Journal Manager (QJM)[^4]。前者依赖外部协调服务 Zookeeper 实现自动化的 Master Election 流程;后者则是基于共享日志存储实现同步更新元数据变更记录的目的。 当 Active NN 出现异常停止运行时,Standby NN 将接管其职责成为新的活动实例继续提供对外的服务接口。整个过程涉及到了一系列复杂的内部通信协议以及状态迁移操作,确保整个转换期间不会丢失任何未提交事务或者破坏已有的一致性约束条件。 ```python from kazoo.client import KazooClient zk = KazooClient(hosts='localhost:2181') zk.start() @zk.ChildrenWatch("/hadoop-ha/ha-cluster") def watch_children(children): print("Current active namenode:", children[0]) # Ensure proper cleanup on exit. try: pass # Your application logic here... finally: zk.stop() ``` 以上 Python 示例展示了如何利用 Kazoo 库监听 HA 模式下 NameNodes 的选举事件变化情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值