Apache Hadoop 0.23 HDFS Federation介绍

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

转载自:http://eryk.iteye.com/blog/1291303

参考:http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop-yarn-site/Federation.html

            http://www.slideshare.net/hortonworks/hs-2011-submission87hwfinal


HDFS Federation

 

为了水平扩展命名服务的规模,federation 使用多个Namenode和命名空间代替过去的单个Namenode的模式。多个Namenode被联合在一起提供服务,但是每个Namenode又是独立的,且每个Namenode不需要与其他Namenode协调工作。而Datenode的存储方式还是和过去一样使用块来存储,但每个Datenode需要注册到集群中所有的Namenode上。Datanode周期性的发布心跳、块操作的报告和从Namenode发送来的操作命令的响应。

 

背景

HDFS Layers

HDFS包括两个层次:

        1.Namespace

                  包括目录、文件和blocks

                  HDFS支持所有与namespace相关的操作,包括增删查改,列出文件和目录等操作。

        2.块(block)存储,也包括两个方面

                   块的管理(哪些已经在namenode上记录了)

                         HDFS通过注册和心跳机制为hadoop提供一个datanode群组

                         处理从datanode上传的块报告,并维护本地的块信息

                         提供针对块的操作,例如增删查改和定位一个块的位置。

                         管理备份的布局,拷贝要备份的块,删除已经备份的块。

                   存储 -  由datanode提供用来存储块在每个datanode本地文件系统,并且控制读和写的访问权限。

 

目前的HDFS架构只支持一个集群一个namenode,一个单独的namenode管理namespace。HDFS Federation 对现有架构进行修改,一个HDFS系统支持多个namenode。

 

HDFS Federation

HDFS Federation Architecture

 

Block Pool

       一个block pool 是属于一个单独namespace的块的集合。集群中所有Datanode为每个block pool存储所有块。block pool相对于其他block pool来说是独立存在的,相互之间没有影响。这样就允许一个namespace为新生成的块创建Block  ID而不需要与其他namespace沟通协调。一个namenode挂掉并不会影响集群中datanode为其他namenode提供服务。

        一个namespace和它管理的block pool合称为Namespace Volume。它是一个自给自足的独立系统。当一个Namenode/namespace被删除,在集群全部datanode上与之相关的block pool 将被一起删除。在集群升级的时候每个namespace volume 可以单独的升级。

 

ClusterID

       一个新的标示符ClusterID 被创建,用来识别集群中的每个节点。当一个namenode被格式化,可以手工提供或自动创建一个ClusterID。这个ID可能在集群中其他namenode格式化的时候被用到。

 

核心利益

 

  • Namespace 扩展性 - HDFS集群存储可以水平的扩展,但是namespace不行。通过增加在集群中的namenode数量来扩展namespace有利于大量的调度任务或者调度大量的小文件。
  • 性能 - 文件系统的吞吐量普遍收到单个namenode的制约。为集群增加namenode增加了文件系统的读写操作的吞吐量。
  • 隔离性 - 单namenode在多用户环境中没有隔离性可言。一个实验性的项目可以使namenode满负荷运行,从而降低生产环境下得项目的速度。使用多namenode后,不同类别的用户和项目通过不同的namespace被隔离。
Federation配置

      Federation配置是向后兼容的,所以你还是可以只配置一个namenode工作而无需做任何配置上的修改。新的配置文件被巧妙的设计后,我们可以在全部的集群节点中只使用一种配置文件而不用管哪些节点是什么类型。
      在Federation提出了一个新的抽象类NameServiceID 。一个namenode和它对应的secondary / backup checkpointer节点都属于同一个NameServiceID 。为了做到只是用一种配置文件,namenode和secondary / backup / checkpointer的配置参数都要加上NameServiceID 前缀并放在同一个配置文件当中。

配置步骤
1.在配置文件中增加以下参数:dfs.federation.nameservices :用逗号分隔NameServiceID。这些NameServiceID将被datanode用来判断在集群中的namenode。
2.在通用配置文件中为每个namendoe和Secondary Namenode/BackupNode/Checkpointer 增加以NameServiceID开头的参数值。
Daemon Configuration Parameter
Namenode dfs.namenode.rpc-address dfs.namenode.servicerpc-address dfs.namenode.http-address dfs.namenode.https-address dfs.namenode.keytab.filedfs.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.federation.nameservices</name>
    <value>ns1,ns2</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns1</name>
    <value>hdfs://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>hdfs://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>

格式化namenode
1.使用如下命令格式化namenode:
> $HADOOP_PREFIX_HOME/bin/hdfs namenode -format [-clusterId <cluster_id>]
使用一个在你运行环境中不去其他集群机器冲突的唯一cluster_id,如果没有指定,则会自动生成一个唯一ID
2.格式化与namenode关联的东西:
> $HADOOP_PREFIX_HOME/bin/hdfs namenode -format -clusterId <cluster_id>
第二步的cluster_id 必须与第一步的相同。如果不一致会造成namenode与它的附属物在federated集群中不一致。

关于升级到0.23和配置federation:
老版本只支持单个namenode,使用如下步骤开启federation:
使用新版本的hadoop,升级过程中可以使用如下命令提供一个ClusterID :

> $HADOOP_PREFIX_HOME/bin/hdfs start namenode --config $HADOOP_CONF_DIR  -upgrade -clusterId <cluster_ID>

如果ClusterID 没有指定,则会自动创建一个。

在已有HDFS系统中增加一个namenode:
使用如下步骤:
1.在配置文件中增加dfs.federation.nameservices参数
2.使用NameServiceID 前缀更新以上参数值。配置参数从0.20发布版以后已经改变了。你必须为federation提供一个新的参数名。
3.增加与namenode有关的配置项。
4.同步配置文件到集群中所有节点。
5.启动Namenode,Secondary/Backup。
6.使用如下命令刷新datanode去获取新加入的namenode:
> $HADOOP_PREFIX_HOME/bin/hdfs dfadmin -refreshNameNode <datanode_host_name>:<datanode_rpc_port>
7.在所有datanode机器上使用上面的命令。

管理集群
使用如下命令启动集群:
> $HADOOP_PREFIX_HOME/bin/start-dfs.sh
使用如下命令停止集群:
> $HADOOP_PREFIX_HOME/bin/stop-dfs.sh
这两个命令可以在集群中所有机器上使用。命令会根据配置文件指定的namenode去启动namenode处理其他的节点。在slaves指定的datanode 会被启动。你可以参考这两个脚本编写自己的启动和停止集群的脚本。
Balancer
Balancer 已经发生了改变去适应多namenode的架构来均衡集群数据。Balancer 可以使用如下命令启动:

"$HADOOP_PREFIX"/bin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script "$bin"/hdfs start balancer [-policy <policy>]
平衡策略如下:
  • node - 这是默认策略。均衡器会在datanode层面来均衡数据。这和之前版本的均衡策略很类似。
  • blockpool - 在block pool层次来均衡存储。在blockpool 层次均衡存储和在datanode层面均衡存储都要做。
注意均衡只均衡数据,而不会均衡namespace。

Decommissioning
卸载和之前版本的方式类似。被卸载的节点需要写在namenode上的exclude file中。每个namenode会卸载自己拥有的block pool。当所有namenode完成了datanode的卸载工作后datanode才被认为是卸载成功的。
1.使用如下命令为每个namenode增加一个exclude file:
"$HADOOP_PREFIX"/bin/distributed-exclude.sh <exclude_file>
2.刷新所有namenode节点去获取exclude file:
"$HADOOP_PREFIX"/bin/refresh-namenodes.sh
以上命令使用HDFS配置来找到所有配置的namenode,然后刷新namenode去获取一份新的exclude file。

集群网页控制台:

相似的namenode控制页面,一个集群控制页面增加到federation 中去监视联合集群,通过URL:
http://<any_nn_host:port>/dfsclusterhealth.jsp
任何namenode都可以通过以上格式的URL访问到。
这个网页提供了如下信息:
  • 集群概要:文件数,块数,整个存储容量,集群中可用和已用的存储空间。
  • 列出所有namenode和它们包含的文件数、块数、丢失的块数,每个namenode包含的正常和挂掉的datanode数量。还提供一个链接快速的访问到每个namenode节点。
  • 也提供被卸载的datanode的状态 

HDFS Federation(联邦) 1.简介 hdfs federationhdfs的联邦,可以简单理解为多个hdfs集群聚合到一起,更准确的理解是有多个namenode节点的hdfs集群 hadoop1.x的hdfs架构 主要由namespace(命名空间)和Block Storage(块的存储)两层组成 1.1.namespace 由目录、文件、块组成。 支持创建、删除、修改、列举命名空间相关系统的操作 1.2.Block ... 阅读详情

相关推荐

HDFS Federation

This guide provides an overview of the HDFS Federation feature and how to configure and manage the federated cluster.这篇文档包好了hdfs federation特点的概述和如何配置并且管理federation集群。Background(背景) HDFS has two main l...

weixin_33752045的博客 159

HDFS Federation(联邦)简介

HDFS Federation(联邦)简介

fighting_DW 2631

Apache Hadoop 0.23 介绍

Hadoop 1.00.20.2×) 终于在27 December, 2011正式发布了【1】。下面是一个Hadoop的简单历史【2】: 这个也是目前最稳定的版本。新的版本也在开发之中,那就是0.23或者2.0吧!在新版本中引入了很多新的特性,其中着重说一个: HDFS FederationNextGen MapReduce HDFS Federation 目前的H

autofei的专栏 4162

Apache HadoopHDFS federation 前世今生

背景熟悉大数据的人应该都知道,HDFS 是一个分布式文件系统,它是基于谷歌的 GFS 思路实现的开源系统,它的设计目的就是提供一个高度容错性和高吞吐量的海量数据存储解决方...

Hadoop技术博文 440

Apache Hadoop 3.x 最新状态以及升级指南

本文来自 2019年9月23日至26日在纽约举办的 Strata Data Conference,分享者是来自 Cloudera 的Wangda Tan 和 Wei-Chiu Chua...

过往记忆大数据 2452

Hadoop 生态系列之 1.0 和 2.0 架构

自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢。趁着还没有入职,给大家争取先把 Hadoop 系列的文章总结完毕,可以当做科普文,也可以当做笔记收藏。经过查阅各种资料,保证我的理解没有偏差。但是也难免会有疏漏,欢迎朋友们留言给我进行交流。我的座右铭就是:认真搞定一切!绝对保证一字一字好好斟酌,技术不能有半点马虎。目前 Hadoop 系列文...

weixin_33772645的博客 318

Hadoop版本

Apache Hadoop版本分为两代: 第一代 Hadoop称为 Hadoop 1.0 第二代 Hadoop称为Hadoop 2.0 第一代Hadoop包含三个大版本,分别是0.20.x , 0.21.x和0.22.x ,其中, 0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则增加了NameNode HA等新的重大特性。 第二代 Hadoop包含两个版本,分别是0.23.x和2.x ,它们完全不同于 Hadoop 1.0 ,是一套全新的架构,均包含HDFS Federatio

CX 5602

hadoop2官方文档中文翻译(1)---Apache Hadoop 2 简介

Apache Hadoop 2 简介     原文:  http://hadoop.apache.org/docs/r2.0.5-alpha/

wangshijie1234567的专栏 2599

linux hadoop2.2,Hadoop-2.2.0中文文档——Apache Hadoop 2.2.0 概览

学习Hadoop也有一段时间了。起先从Hadoop-1.2.1开始,略会写点MapReduce,还是想要跟上Hadoop发展的步伐,虽说现在官方已经发布2.4.0版本了,但是稳定版还是2.2.0。在机器上跑了一下,发现2.x比起1.x,变化还是很大的,更加模块化了。决定从官网的文档开始入手,现在也略有些时间,就一边学习一边将其翻译成中文好了,不过英文比较烂。大概每天翻译一节吧。相关阅读:-----...

weixin_35837856的博客 169

Hadoop2.0学习(一)

Hadoop版本衍化   第一代HadoopHadoop1.0 包含三大版本:0.20.x   0.21.x  0.22.x  CDH3 0.20.x最后演化成1.0.x,变成稳定版 0.21.x和0.22.x增加了NameNode HA等新的重大特性   第二代HadoopHadoop2.0 包含Hadoop0.23.x  2.x  和CDH4,均包含HDFS Feder...

T6789的专栏 532

02_hadoop

简介 HadoopApache基金会下的一个开源软件,提供大数据分布式并行处理的框架。可以支持多种编程语言 Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性: * 高可靠性 * 高效性 * 高可扩展性 * 高容错性 * 成本低 * 运行在Linux平台上 * 支持多种编程语言 两大核心–HDFS+MapReduc...

ChanZany的博客 479

hadoop 0.23介绍相关文章

Apache Hadoop 0.23 http://www.slideshare.net/hortonworks/apache-hadoop-023   Apache Hadoop 0.23 at Hadoop World 2011 http://www.slideshare.net/hortonworks/apache-hadoop-023-hadoop-world-2011   H...

The Big Data Way 163

Hadoop版本选择探讨

原文地址:http://dongxicheng.org/mapreduce-nextgen/how-to-select-hadoop-versions/ http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-terms-explained/ 由于Hadoop版本混乱多变,因此,Hadoop的版本选择问题一直令很多初级用户苦恼。本文总

RukeyLee's Tech Blog 7805

Hortonworks 启动 Hadoop-0.23

slide:[url]http://www.slideshare.net/hortonworks/apache-hadoop-023[/url] blog:[url]http://www.hortonworks.com/preparing-for-next-release-of-apache-hadoop/[/url] svn:[url]http://svn.apache.org/viewvc...

jerryking096696的专栏 149
上一篇: 关于Apache Hadoop 1.0
下一篇: High Availability for the HDFS Namenode(翻译)
hellohadoop
博客等级 码龄14年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值