`
QING____
  • 浏览: 2251341 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HDFS Federation[官网整理]

 
阅读更多

【HDFS Federation(2.2+)】

 

一、Background

    HDFS数据存储主要有两层:

    1、 Namespace,包含“目录”、“文件”、“blocks”信息,支持所有的与namepace相关的文件系统的操作,例如目创建、删除、修改,以及对目录文件的列表操作。

    2、Block存储服务:

        A) Block管理:Namenode负责,集群中的Datanodes向Namenode注册状态且间歇性的发送心跳;Namenode接收Datanodes提交的Blocks报告,并负责维护Blocks的位置关系;支撑Blocks相关的操作,例如Block的创建、删除、修改、迁移,以及获取block的位置信息;管理replicas的放置,以及对under-replicated的blocks进行备份,以及删除over-replicated的多余的blocks。

        B) Storage:由Datanodes负责,用于提供Blocks实际数据的存储和读写操作。

 

    HDFS架构中,集群中只允许一个Namespace,即一个Namenode管理Namespace。HDFS Federation(联盟)通过在HDFS文件系统中增加支持多个Namenodes/namespaces,以解决这种架构上的限制。

 

二、Multiple Namenodes/Namespaces

    为了水平扩展name service,Federation使用了多个独立的Namenodes/namespace。Namenodes是联合的(federated),即他们互相独立,不需要彼此间互相协同。Datanodes作为普通的存储,服务于所有的Namenodes。每个Datanodes会与集群中所有的Namenodes注册,Datanodes向Namenodes发送心跳和Block reports,以及处理Namenodes发送的指令。



 

    1、Block Pool

    Block Pool就是同一个namespace下的多个Blocks的集合。Datanodes为整个集群中所有Block pools提供存储服务。各个Block pool在被管理上是互相独立的。每个Namespace会为新的Block生成Block ID,而且无需和其他Namespace协调;一个Namenode的失效,不会影响Datanodes继续为其他Namendoes服务。(每个Namespace对应一个Block Pool)

 

    Namespace与其Block pool统称“Namespace volume”,它是一个子包含(selft-contained)的管理单元。当一个Namenode/Namespace被删除,那么Namespace对应的Block Poll也将被删除。每个Namespace Volume在软件更新时(ungrade)也作为一个单元。

 

    2、ClusterID

    一个新的标识ClusterID添加到集群,用来标记所有的Nodes,当Namenode格式化时(formated),将会自动创建ClusterID,这个ID用来区分集群中的Namenodes。

 

    3、Key Benefits(主要收益)

        A) Namespace 扩展性:HDFS集群中存储层可以水平扩展,但是namespace无法做到,大规模集群部署或者系统中有较多的小文件时,将可以通过添加多个Namenodes实现namespace的水平扩展。

        B) 性能:根据HDFS的架构,文件系统操作的吞吐量将受限于单个Namenode,通过添加多个Namenodes的方式扩展文件系统,可以提升其读写能力。

        C) Isolation(隔离):单个Namenode在多用户环境中无法提供“隔离”。一个测试(experimental)程序可以将Namenode过载,并拖慢production核心应用。通过使用多个Namenode,将不同类型的应用和用户隔离到不同的Namenodes中。(环境 + 用户隔离)

 

三、Federation配置

    Federation配置时向后兼容的,对于现存的单Namenode配置而言,不需要任何修改即可工作。新的配置文件可以在所有的nodes都一样,不需要根据node类型而部署不同的配置文件。

 

    一个新的概念NameServiceID被添加到Federation中,Namdenode和相应的SNN、backup、checkpoiner节点都按照NameServiceID划分。为了能够在一个配置文件中支持Federation(即多Namenodes),那么和Namenode、SNN、backup、checkpoint配置参数,都需要以相应的NameServiceID作为后缀。

 

    1、配置

         A) Step 1:将"dfs.nameservices"配置项添加到hdfs-site.xml中,它的值为NameServiceID列表,以“,”分割;Datanodes将使用它们来判断集群中的Namenodes。

        B) Step 2:每个Namenode、SNN、Backup、Checkpointer中,将下文中几个配置项添加到配置文件中,每个配置项以对应的NameServiceID作为后缀。(hdfs-site.xml)

Namenode

dfs.namenode.rpc-address

dfs.namenode.servicerpc-address

dfs.namenode.http-address

dfs.namenode.https-address

dfs.namenode.keytab.file

dfs.namenode.name.dir

dfs.namenode.edits.dir

dfs.namenode.checkpoint.dir

dfs.namenode.checkpoint.edits.dir

Secondary

Namenode

dfs.namenode.secondary.http-address

dfs.secondary.namenode.keytab.file

BackupNode

dfs.namenode.backup.address

dfs.secondary.namenode.keytab.file

 

    配置样例:

<configuration>
  <property>
    <name>dfs.nameservices</name>
    <value>ns1,ns2</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns1</name>
    <value>nn-host1:rpc-port</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.ns1</name>
    <value>nn-host1:http-port</value>
  </property>
  <property>
    <name>dfs.namenode.secondaryhttp-address.ns1</name>
    <value>snn-host1:http-port</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns2</name>
    <value>nn-host2:rpc-port</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.ns2</name>
    <value>nn-host2:http-port</value>
  </property>
  <property>
    <name>dfs.namenode.secondaryhttp-address.ns2</name>
    <value>snn-host2:http-port</value>
  </property>

  .... Other common configuration ...
</configuration>

 

    如果配置中,上述配置项没有NameServiceID作为后缀,将默认对所有的NameService有效。

 

    2、格式化Namenodes

    一次在每个Namenode上执行“bin/hdfs namenode -format [-clusterId <clusterId>]”,format指令可以指定clusterID,如果不指定将自动生成一个唯一的ClusterID。(基于UUID生成,因此多次format事实上UUID不变,参见,Namenode#format)

 

    因为ClusterID是标记集群的唯一标记,那么一个集群中所有的Nodes包括Namenodes都应该持有相同的ClusterID,否则这些Namenodes将不能构建Federation。

 

    因此在集群中所有的Namenodes上执行-format指令时,需要指定相同的ClusterID。对于默认生成的ClusterID,可以在"${dfs.namenode.name.dir}/current"目录下的VERSION文件中获得,并将此值传递给后续的其他Namenodes。

 

    3、向集群添加新的Namenode

    基于集群中现有的配置文件,将新的Namenode相关的配置项添加到配置文件中(以NameserviceID作为后缀)。调整结束后,将配置文件同步分发给集群中所有的nodes,然后启动当前Namenode、Backup、SNN等。

 

    因为配置文件的修改,通常需要重启集群,这是一种比较保守且安全的方式。不过因为Federation就是实现环境隔离的,所以我们可以只启动那些与新Namenode有关的Datanodes,那么只有这些Datanodes上会存储此Namenode有关的blocks,通过-refreshNamenodes指令可以实现不重启Datanodes的情况下,让其刷新并加载新的Namenode,此后它会与新Namenode注册。

    “hdfs dfsadmin -refreshNamenodes <datanodehost:port>”

 

    不过为了安全起见,建议将refresh集群中的所有Datanodes。

 

四、集群管理

    1、Startup and Stop

    通常我们可以使用“sbin/start-dfs.sh”、“sbin/stop-dfs.sh”来分别启动和关闭集群中所有的守护进程,是一个便捷的方式。此指令可以在集群中任何node上运行,指令可以根据配置文件来判断Namenode(hdfs-site.xml)以及其他nodes的位置(slaves),并SSH到各个node依次执行。

 

    2、Balancer

    Relancer机制是HDFS中很重要的特性,用来动态平衡集群中存储资源的放置位置。start-dfs.sh默认并不会启动balancer,因此balancer功能组件需要额外运行:

    “sbin/start-balancer.sh [-policy <node | blockpool>] [-threshold <num>]”

      -policy参数指定balancer使用的策略,有两个合法值“node”、“blockpool”,其中node为默认值,表示balancing将基于datanode级别;“blockpool”只能在Federation架构下有效,balancer级别为“blockpool”表示每个datanode上每个blockpool的blocks个数分布均衡。建议保持默认。

  • 大小: 17.9 KB
分享到:
评论

相关推荐

    HDFS Federation(联邦)+ViewFS+HA

    ### HDFS Federation(联邦)+ViewFS+HA 配置详解 #### 一、HDFS Federation 概念 HDFS Federation 是Hadoop Distributed File System (HDFS) 的一项扩展功能,旨在通过将数据存储分布在多个独立的命名空间中来提高...

    hdfs源码分析整理

    hdfs源码分析整理 在分布式文件系统中,HDFS(Hadoop Distributed File System)扮演着核心角色,而HDFS的源码分析则是深入了解HDFS架构和实现机理的关键。本文将对HDFS源码进行详细的分析和整理,涵盖了HDFS的目录...

    HDFS Router-Based Federation Rebalancer.pdf_hdfs_

    《HDFS Router-Based Federation Rebalancer》是针对Hadoop分布式文件系统(HDFS)中联邦均衡器的一个深度探讨。在HDFS中,联邦是一种扩展性的实现方式,它允许多个独立的命名空间(NameSpaces)并存,每个命名空间...

    HDFS管理工具HDFS Explorer下载地址、使用方法.docx

    尽管官方已经停止更新此软件,但它仍然是许多Hadoop用户在Windows环境下管理HDFS的实用工具。 ### 下载与安装 HDFS Explorer的下载链接已过期,但通常可以从开源社区或者历史版本库中找到旧版本的下载资源。在本例...

    分布式存储系统:HDFS:HDFS高级特性:Federation.docx

    分布式存储系统:HDFS:HDFS高级特性:Federation.docx

    hdfs源码.zip

    4.1.2 HDFS Federation 308 4.1.3 Datanode逻辑结构 310 4.2 Datanode存储 312 4.2.1 Datanode升级机制 312 4.2.2 Datanode磁盘存储结构 315 4.2.3 DataStorage实现 317 4.3 文件系统数据集 334 4.3.1...

    HDFS Comics HDFS 漫画

    HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...

    深入理解Hadoop HDFS高级教程.txt打包整理.zip

    在大数据处理领域,Hadoop HDFS(Hadoop Distributed File System)是核心组件之一,它为大规模数据存储提供了可扩展、高容错性的解决方案。本高级教程将深入剖析HDFS的内部机制,帮助读者掌握其核心概念和实际操作...

    HDFS实例基本操作

    Hadoop分布式文件系统(HDFS)是Apache Hadoop项目的核心组件之一,它为大数据处理提供了可靠的、可扩展的分布式存储解决方案。在这个“HDFS实例基本操作”中,我们将深入探讨如何在已经安装好的HDFS环境中执行基本...

    HDFS文件系统基本文件命令、编程读写HDFS

    HDFS 文件系统基本文件命令、编程读写 HDFS HDFS(Hadoop Distributed File System)是一种分布式文件系统,用于存储和管理大规模数据。它是 Hadoop 云计算平台的核心组件之一,提供了高效、可靠、可扩展的数据存储...

    HDFS资料整理.pdf

    Hadoop是Apache基金会开发的一个开源分布式存储与计算框架,它的核心组件之一HDFS(Hadoop Distributed File System)是一个高容错性的分布式文件系统,适合在廉价的硬件上运行。HDFS的设计目标是能够存储和处理非常...

    【HDFS篇14】HA高可用 --- Federation架构设1

    【HDFS篇14】HA高可用 --- Federation架构设计1 在Hadoop分布式文件系统(HDFS)的设计中,NameNode扮演着至关重要的角色,它负责管理文件系统的元数据,包括文件与目录的命名空间(Namespace)以及文件的块映射...

    唯品会HDFS性能挑战和优化实践1

    4. **HDFS Federation**:传统的独立集群模式存在运维成本高、资源利用率低和性能瓶颈等问题。为解决这些问题,唯品会引入了HDFS Federation。Federation允许将多个NameNode组织成一个联邦,每个NameNode管理一个...

    14、HDFS 透明加密KMS

    【HDFS 透明加密KMS】是Hadoop分布式文件系统(HDFS)提供的一种安全特性,用于保护存储在HDFS中的数据,确保数据在传输和存储时的安全性。HDFS透明加密通过端到端的方式实现了数据的加密和解密,无需修改用户的应用...

    HDFS文件的查看

    hdfs文件的查看 hdfs fs -cat /文件名

    大数据实验二-HDFS编程实践

    ### 大数据实验二-HDFS编程实践 #### 实验内容概览 本次实验的主要目标是通过对HDFS(Hadoop Distributed File System)的操作实践,加深学生对HDFS在Hadoop架构中的作用及其基本操作的理解。实验内容包括两大部分...

    hdfs-java-api

    HDFS Java API 详解 HDFS(Hadoop Distributed File System)是 Hadoop 项目中的一部分,是一个分布式文件系统。HDFS Java API 是一组 Java 类库,提供了一组接口来操作 HDFS。下面我们将对 HDFS Java API 进行详细...

    大数据技术基础实验报告-HDFS常用操作命令.doc

    在大数据技术领域,Hadoop 分布式文件系统(HDFS)是核心组件之一,它为大规模数据存储提供了可扩展和高容错性的解决方案。本实验报告主要关注HDFS的常用操作命令,这些命令是管理员和数据分析师日常工作中不可或缺...

Global site tag (gtag.js) - Google Analytics