HDFS之联邦

文章探讨了HDFS在大规模集群中的JVM瓶颈问题,介绍了Hadoop通过引入联邦架构来解决这一问题。联邦允许使用多个独立的Namenodes和Namespaces,每个Namenode管理自己的Blockpool,实现存储共享,提高了系统的可扩展性和性能。此外,还讨论了联邦配置、Balancer的使用以及Decommissioning过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jvm瓶颈

HDFS 是 Hadoop 自带的原生存储系统,随着这些年的发展,HDFS 已经成为大数据生态的存储标准,但是同样也可以看到 HDFS 虽然不断优化,然而对于一个超大规模的集群来说,jvm的瓶颈始终无法突破。对于这种情况,hadoop官方使用联邦的解决方案解决了该限制。

常规HDFS

在这里插入图片描述

介绍联邦之前,首先先看下官方给出的HDFS的组成图,由两层组成:

  • Namespace:包含集群所有的目录、文件和块元数据,以及对他们的增删改查操作

  • Block Storage Service(也由两部分组成):

Block Management(运行在namenode),作用如下:

1.负责集群所有datanode的注册及接收周期性心跳

2.处理块报告并维护所有block的位置

3.负责所有块的增删改查操作

4.管理副本,如对副本不足的blocks执行复制、删除超过副本数的blocks

Storage:

由所有datanodes提供的在本地系统存储块及读写访问

联邦

在这里插入图片描述

Multiple Namenodes/Namespaces:

联邦的实现是使用多个独立的 Namenodes/namespaces来实现横向扩展name service。也就是使用多个Namenode(与HA无关,生产HA+联邦基本是4个namenode)。

独立的block pool

对于联邦HDFS,可以看到有多个nn(即namenode),每个nn都各自对应着一个block pool(两者在一起称为一个Namespace Volume),他们是独立的且整体的。每个Namespace Volume都可以接受新请求并为新块生成block IDs。所以其中一个nn失败也并不会影响到其他nn。

共用存储

同时,也能看到这些namenode共用集群中所有的datanode的存储、接收所有datanode的周期心跳及块报告。这样也代表每个datanode要注册到所有的namenode。

联邦的优势

  • namespace的可扩展性:可以横向扩展,这样在大规模部署及大量小文件的集群可以通过扩展来增加命名空间。

  • 高性能:文件系统的吞吐不再被单个nn所限制,横向扩展可以增加读写的吞吐量

  • 隔离:在多用户环境中单个nn无法形成隔离。例如,一个application可能会导致nn过载并减慢生产关键application的速度。通过横向扩展,不同种类的application可以在不同的namespace间进行隔离。

Federation Configuration

Configuration

关于如何配置 核心的几项就这几个了

  1. 对于配置HA集群基本只配置一个nameservices及两个namenode 同理这里增加nameservices及namenode配置即可。两个为一组挂到不同的nameservices下
    在这里插入图片描述
    然后再增加rpc、http的address配置

  2. 格式化namenode
    ClusterID:用于识别集群所有节点的标识符。格式化一个namenode时,可以手动指定也可以自动生成。其他nn格式化也需用相同的id。

  • 格式化第一组的namenode
[hdfs]$ $HADOOP_HOME/bin/hdfs namenode -format [-clusterId <cluster_id>]

格式化完成之后 在这组的另一个nn上执行hdfs namenode -bootstrapStandby 同步信息

  • 相同的格式化第二组的namenode 并同步第二组另一个nn的信息

格式化成功完成之后 启动进程即可

Balancer

balancer也已经可以在多个nn中间使用

[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start balancer [-policy <policy>]

policy参数有两个选择:

  • datanode:默认的选择。只会在datanode层面进行balancer,与之前版本的使用一样

  • blockpool:此选择会在block pool及datanode 两个层面进行balancer

Decommissoning

deconmmissoning操作与之前版本是基本一致的。将需要退役的节点加入到所有nn的exculde文件中,每个nn都会退役它所属的block pool。当datanode在所有nn的状态中都退役完成之后,它才真正被退役。

  1. 可以使用如下命令分发exclude文件到所有nn:
[hdfs]$ $HADOOP_HOME/sbin/distribute-exclude.sh <exclude_file>
  1. 然后刷新所有的nn即可
[hdfs]$ $HADOOP_HOME/sbin/refresh-namenodes.sh

Cluster Web console

使用联邦时,集群web控制台可以在http://<any_nn_host:port>/dfsclusterhealth.jsp

查看联邦集群。(任何Namenode都可以访问此页面)。

主要有以下信息:

  • 集群摘要,包括文件、块数量,所有的存储容量、已使用及剩余容量均可查看

  • 所有nn的列表,包括文件、块数量、丢失的块、存活与死亡的节点数。以及每个nn web ui的链接

  • datanode的退役状态

HDFS联邦技术是Hadoop分布式文件系统(HDFS)的一种扩展方式,旨在解决传统单NameNode架构的扩展性和高可用性限制。HDFS联邦通过引入多个NameNode来管理不同的命名空间,这样可以在多个NameNode之间分配和负载均衡存储资源,从而提高整体系统的性能和扩展性。下面是HDFS联邦技术的一些优缺点: 优点: 1. 高扩展性:HDFS联邦允许多个NameNode并行工作,避免了单点瓶颈,使得系统能够更容易地扩展以应对更大规模的数据存储需求。 2. 命名空间隔离:不同的NameNode可以管理不同的命名空间,这样可以实现命名空间之间的隔离,为不同用户提供独立的空间,降低命名空间的耦合度。 3. 改进高可用性:HDFS联邦提供了多个NameNode,即使其中一个或几个NameNode出现故障,其他NameNode仍然可以继续工作,从而提高了系统的整体高可用性。 4. 容量规划灵活:可以针对不同的NameNode配置不同级别的硬件资源,便于根据业务需求进行灵活的容量规划。 缺点: 1. 复杂性增加:引入多个NameNode增加了系统的复杂度,需要更多的管理工作来维护多个NameNode之间的数据一致性和负载均衡。 2. 数据迁移成本:从单NameNode迁移到联邦架构可能需要迁移大量现有数据,这个过程可能会比较复杂且成本高昂。 3. 兼容性问题:在引入联邦特性后,可能会影响到与现有HDFS生态系统的兼容性,例如一些第三方工具可能需要更新以支持联邦特性。 4. 成本考虑:虽然HDFS联邦技术提供了扩展性,但同时也意味着需要更多的硬件资源,这可能会导致成本的增加。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值