视讯游戏提供最新游戏下载和手游攻略!

浅谈可配置的 Ozone 网络拓扑拓扑结构图用什么画

发布时间:2024-07-13浏览:3

前言

网络拓扑对于熟悉 Hadoop HDFS 的人来说再熟悉不过了,它代表了集群中节点的物理位置和分布信息。HDFS 中的数据存放在集群中成百上千个 datanode 上,上层在调度计算任务的时候,调度器会想尽一切办法把任务调度到距离数据最近的节点上,这被称为“数据本地性”,因为移动计算的成本比移动数据的成本要低。

随着计算与存储分离趋势的流行,“数据本地性”已经不能再被考虑。分布式存储集群是否有必要保留和了解节点的网络拓扑?答案是肯定的,因为了解网络拓扑关系到集群的写入性能、容错和高可用性。

网络拓扑结构

下图是一个典型的物理网络拓扑图。

从上到下,每层网络总带宽依次递减,同时网络数据包经过的层数越多,端到端延迟就越大。在Hadoop中,为了模拟真实的网络关系,采用树状结构来表示网络拓扑结构,下图是一个四层的网络结构。

从虚拟的ROOT节点开始,中间的节点都是逻辑节点,可以代表机架、核心路由器、房间,甚至是数据中心。最下面的叶节点代表一个数据节点。两个数据节点之间的距离等于它们到最近共同祖先的距离之和。

Ozone 中每条数据都需要写入三个数据节点,每个节点一份,数据节点之间的距离不同,延迟也不同。从写入性能的角度看,以下安排会增加延迟,降低性能。

从集群容错和高可用角度来看,上述容错性和可靠性的排列顺序是依次增加的,因此实际应用中通常会兼顾这两项要求,以达到性能和可靠性的平衡。

HDFS 默认的选择策略是将 3 个副本中的 2 个写入同一个机架的不同节点,第 3 个副本写入不同机架的节点。目前 Ozone 也默认采用这种方式。

结构图和拓扑图_拓扑结构图用什么画_网络拓扑结构图

但随着多数据中心的普及,用户对于数据不再满足于机架级故障的容错能力,希望保证数据中心级故障的容错能力,一些存储系统开始将3份中的2份写入同一个数据中心同一个机架的不同物理节点,第3份写入不同数据中心的节点,以满足数据中心级的容错要求。

有些存储系统部署在虚拟机或者 Kubernetes 集群中,数据节点不再一一对应物理节点,而是多个数据节点对应一个物理节点,这种情况下需要考虑更多的因素来保证数据的安全性和可靠性。

定制网络拓扑

HDFS支持三层、四层网络拓扑,副本选择策略可通过Properties配置。Ozone的网络拓扑和副本选择策略均可通过Properties配置,默认支持三层拓扑,兼容HDFS,同时通过可配置的网络拓扑满足不同用户不同的实际需求。

Ozone 通过 XML 配置文件定义新的网络拓扑。在安装好的 Ozone 集群中,etc/hadoop/ 目录下有两个相关的配置文件,network-topology-default.xml 和 network-topology-nodegroup.xml,分别定义了兼容 HDFS 的三层和四层网络架构。下图是 network-topology-default.xml。

<configuration>
    
    <layoutversion>1layoutversion>
    <layers>
        <layer id="datacenter">
            <prefix>prefix>
            <cost>1cost>
            <type>Roottype>
        layer>
        
        <layer id="rack">
            
            <prefix>rackprefix>
            
            <cost>1cost>
            
            <type>InnerNodetype>
            
            <default>/default-rackdefault>
        layer>
        <layer id="node">
            <prefix>prefix>
            <cost>0cost>
            <type>Leaftype>
        layer>
             layer>
    layers>
    <topology>
        <path>/datacenter/rack/nodepath>
        
        <enforceprefix>falseenforceprefix>
    topology>
configuration>

这个XML配置文件定义了网络拓扑中总共有多少层,以及每一层的信息,包括类型、网络默认代价、默认名称、是否有强制前缀等。

如果用户想启用新的网络拓扑,则需要准备一个对应的 XML 配置文件,放置在 etc/hadoop 目录下,然后修改“ology.schema.file”配置项指向该 XML 文件。当然,新的网络拓扑必须搭配新的备份选择策略,这个策略由“ozone.scm.container.placement.impl”配置项控制。

结论

虽然在计算与存储分离的架构下人们不再强调网络拓扑带来的“数据本地性”读取优势,但实际上网络拓扑最重要的作用是保证数据的可靠性,使得数据能够承受不同程度的硬件故障而依然保持完整可靠。同时通过网络拓扑信息,优化数据写入性能。因此,网络拓扑信息依然是分布式存储系统中不可或缺的重要组成部分。

欢迎阅读其他Ozone系列文章

热点资讯