分配 Data Node 与创建毗连:上传每个 block 时,客户端向 Name Node 哀求分配 Data Node。Name Node 依副天职配计谋(第一个副本找迩来节点,无则找最空闲节点;第二个副本找其他机架最空闲节点;第三个副本找与第二个副本雷同机架最空闲节点)确定三个 Data Node 并返回。客户端与这三个 Data Node 以 pipeline 情势创建毗连。
数据发送与确认:客户端通过 pipeline 通道以数据包情势发送数据。数据先到第一个 Data Node,内存吸收后写入磁盘,同时转发至第二个 Data Node,第二个 Data Node 重复此操纵至第三个 Data Node。第三个 Data Node 写入磁盘乐成后,依次向上返回乐成信息,终极第一个 Data Node 向客户端陈诉写入乐成且副本备份好。后续 block 按雷同规则上传,全部上传完成后客户端向 Name Node 陈诉,Name Node 记载原数据(文件拆分的 block 信息及存储节点等)。
原理:针对单节点内存受限标题,接纳多台 name node 共同管理集群的方式。比方,可根据集群目次数目分配管理任务,如有 30 个目次,可安排 3 台节点各管理 10 个数据目次,实现管理负载平衡。
上风:通过多节点协作,低沉了单个 name node 内存占满的概率,提拔了体系稳固性和扩展性,有用办理了内存受限困难。
管理节点热备
节点设置:管理节点分为 active 节点(正在管理集群的节点)和 standby 节点(备用节点),在实际生产环境中可设置多个 standby 节点,以增强备用本事。
数据同步:active name node 将原数据文件(如 edits 文件)托管到 journal 集群(JNLOAD 集群)。standby 节点及时与 journal 集群同步数据,并将同步后的元数据存储在本地内存中,确保其与 active 节点的元数据保持同等,以便在 active 节点故障时能敏捷接替工作。
高可用架构组件
Journal 集群:紧张负责元数据同步功能。它吸收 active 节点托管的原数据文件,并为 standby 节点提供数据同步服务,包管集群元数据的同等性和完备性。
Zookeeper 集群:作为分布式和谐服务组件,在高可用架构中发挥关键作用。它通过启动多个历程(如 fover controller)监控 active 和 standby 节点状态。这些历程利用心跳机订定期向 Zookeeper 陈诉节点状态。当 active 节点出现故障时,Zookeeper 能及时发现通讯克制环境,将故障节点的状态从 active 切换为 standby,并从 standby 节点中推选出一个新的 active 节点,确保集群连续稳固运行。