文档章节

HDFS Federation(翻译)

Yulong_
 Yulong_
发布于 2017/08/15 17:42
字数 1928
阅读 37
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

这个指南提供了一个关于HDFS Federation 特性和怎么配置管理一个联邦集群的概览。

Background

HDFS主要包括两层:

Namespace

  • 由目录,文件和块组成
  • 支持所有文件系统操作包括增加,删除,修改和列出文件和目录

Block Storage Service 有两个部分:

  • Block管理(被NameNode包含)
    • 提供datanode集群的注册和定期的心跳检查
    • 处理block的报告并掌握block的位置
    • 支持block的相关操作,如增删改查和得到block的位置
  • 管理副本位置,管理副本的复制和删除
  • 存储-由提供datanodes的本地系统提供存储,允许读写。

之前HDFS的架构只允许整个集群中存在一个namespace。一个独立的Namenode管理这个namespace。HDFS Federation通过加入多个Namenodes/namespaces到集群当中解决了之前架构的限制。

Multiple Namenodes/Namespaces

为了水平扩展name services,Federation使用多个独立的Namenodes/namespaces。这些NameNode之间结成联邦,即Namenodes是独立的,不需要互相协调。DataNode被所有的NameNode使用用来作为通用的数据块存储设备。每一个DataNode注册集群中所有的NameNode。Datanodes发送心跳和block报告并且处理NameNode发送的命令。

Users may use ViewFs to create personalized namespace views, where ViewFs is analogous to client side mount tables in some Unix/Linux systems.

Block 池:

一个block池是一个隶属于一个namespace的所有block的集合。DataNode为所有的block池储存集群当中的block信息。block池被独立管理,互不影响。这个设计将允许为新的block产生Block ID并不会需要其他的namespace。一个NameNode出问题也不会影响datanode为集群中的其他NameNode服务。Namespace及其block池在一起叫做 Namespace Volume(Namespace 卷)。它是一个独立的单位管理。当一个Namenode/namespace被删除的时候,在datanodes中的对应的block池也会被删除。在集群升级时,一个namespace volume是一个升级单元。

ClusterID

一个新的标识ClusterID用来标示集群当中所有的节点。当一个Namenode被格式化,这个标识符或自动生成的。这个ID会被用来格式化集群中的其他Namenode。

关键的好处

  • Namespace扩展性-HDFS集群存储可以水平扩展但是namespace不行。大型部署或者是小文件较多的系统可以通过向集群添加更多的NameNode获益。
  • 性能-之前的架构中,文件系统的吞吐量受限于单一NameNode。添加更多的NameNode会提高读写的吞吐量
  • 隔离 - 单一NameNode无法隔离多用户环境,实验的程序可能造成Namenode变慢,影响生产环境,多个Namenodes使得不同类别的应用程序和用户可以分离不同的名称空间。

Federation Configuration

Federation配置是向后兼容,允许现有的单一Namenode配置工作,不会有任何改变。新的配置被设计成集群当中的所有节点拥有着相同的配置并且并不需要为不同的机器设置不同的配置文件。

Federation中添加了一个新的抽象NameServiceID。Namenode以及对应的Secondary/backup/checkpointer节点都属于这个。支持单个配置文件,Namenode以及对应的econdary/backup/checkpointer配置参数通过NameServiceID后缀标示,并可以添加到同样的配置文件当中。

配置

第一步:添加下面的配置到你的配置文件当中:

dfs.nameservices: 配置与逗号分隔NameServiceIDs列表

这是为了Datanodes用来确定集群中的所有Namenodes。

第二步:为每一个Namenode以及Secondary/backup/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.file dfs.namenode.name.dirdfs.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

下面是一个两个namenode的简单配置例子:

<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>

格式化NameNode

第一步:格式化namenode,命令如下:

> $HADOOP_PREFIX_HOME/bin/hdfs namenode -format [-clusterId <cluster_id>]

选择一个不同的cluster_id,保证不会和其他的集群冲突,如果不提供的话,他会自动生成一个不同的ClusterID 

第二步: 格式化添加的namenode,可以用下面的命令:

> $HADOOP_PREFIX_HOME/bin/hdfs namenode -format -clusterId <cluster_id>

注意:第二步使用的cluster_id不行要和第一步相同,如果不相同的话,添加的Namenode将不会在联邦集群中起作用

从老版本升级之后并且配置联邦

早期的版本只能支持单一的Namenode,下面的步骤可以是联邦可用:

第一步:升级集群。在升级过程中你一个提供一个ClusterID:

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

如果不提供那么会自动生成。

添加一个新的NameNode到一个既存的HDFS集群

按照以下步骤:

  • 添加配置参数dfs.nameservices到配置文件
  • 使用NameServiceID 作为后缀更新配置文件。配置的key名字已经和0.20不一致了,必须使用新的配置参数名
  • 添加新的NameNode相关配置到配置文件当中
  • 将配置文件同步到集群当中的所有节点
  • 启动新的Namenode, Secondary/Backup节点
  • 刷新datanode获取新添加的namenode,使用下列命令:
> $HADOOP_PREFIX_HOME/bin/hdfs dfadmin -refreshNameNode <datanode_host_name>:<datanode_rpc_port>

在集群中所有的datanodes运行上面的命令

Managing the cluster

Starting and stopping cluster

启动:

> $HADOOP_PREFIX_HOME/bin/start-dfs.sh

停止:

> $HADOOP_PREFIX_HOME/bin/stop-dfs.sh

这些命令可以在在HDFS运行的任何节点运行。命令将确定namenode并且启动这些namenode。datanode是通过slaves文件指定的。脚本可以作为参考来构建自己启动和停止集群的脚本。

Balancer

Balancer 已经被用来改变集群中多个NameNode的的平衡。可以运行下面的命令:

> "$HADOOP_PREFIX"/bin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script "$bin"/hdfs start balancer [-policy <policy>]

Policy:

  • datanode -默认的策略。这个会平衡datanode的存储,和先前的版本类似。

  • blockpool - 针对block 池平衡。平衡block池存储也会平衡datanode。

注意Balande只平衡数据和不平namespace。

 

Decommissioning

退役和先前的版本类似。退役的节点需要被添加到在所有Namenode的exclude文件中。每一个Namenode退役它对应的block 池当所有的Namenode完成了datanode的退役,那么这个datanode就可以退役了

第一步:分发一个exclude文件到所有的NameNode,如下:

> "$HADOOP_PREFIX"/bin/distributed-exclude.sh <exclude_file>

第二步:刷新所有NameNode使用新的exclude文件

> "$HADOOP_PREFIX"/bin/refresh-namenodes.sh

上面的命令将使用HDFS配置文件确定集群的Namenode,使用新的exclude文件刷新所有的Namenode。

Cluster Web Console

和NameNode的web页面类似,集群的web cosole用来监视集群 http://<any_nn_host:port>/dfsclusterhealth.jsp。任何集群中的NameNode都可以进入这个页面

页面提供了:

  • 集群的综述,包括文件的数目,block的数目总存储容量可用和空闲的空间等
  • 提供namenode的列表和每个namenode的files,blocks,missing blocks,number of live and dead data nodes数量。同事提供一个连接去每一个Namenode 的web页面
  • 退役datanode的状态

© 著作权归作者所有

Yulong_
粉丝 10
博文 145
码字总数 253510
作品 0
朝阳
部门经理
私信 提问
加载中

评论(0)

Apache Hadoop 2.3.0三大重要的提升

阿里云智能数据库事业部 OLAP 平台团队现向 2021 届海内外院校应届毕业生(毕业时间在2020年11月-2021年10月之间)招聘大数据系统工程师,有机会转正,有意请加 iteblog 微信内推。   had...

Hadoop
2014/02/26
0
0
HDFS Federation(HDFS 联盟)介绍

1. 当前HDFS架构和功能概述 我们先回顾一下HDFS功能。HDFS实际上具有两个功能:命名空间管理(Namespace management)和块/存储管理服务(block/storage management)。 1.1 命名空间管理 HD...

zqx1787
2014/12/13
0
0
Hadoop Federation联邦

背景概述   单 NameNode 的架构使得 HDFS 在集群扩展性和性能上都有潜在的问题,当集群大到一定程度后,NameNode 进程使用的内存可能会达到上百 G,NameNode 成为了性能的瓶颈。因 而提出了...

osc_d5exiys5
2018/07/13
3
0
HDFS Federation(HDFS 联盟)介绍

当前HDFS架构和功能概述 我们先回顾一下HDFS功能。HDFS实际上具有两个功能:命名空间管理(Namespace management)和块/存储管理服务(block/storage management)。 1.1 命名空间管理 HDFS...

蓝狐乐队
2014/04/27
159
0
HDFS federation集群间的数据Balance工具方案

文章目录 前言 粗粒度的federation Balance方案 系统化的federation Balance工具方案 引用 前言 在目前单一大HDFS集群越来越无法支撑我们的业务场景时,越来越多的公司开始考虑采用HDFS fede...

Android路上的人
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【JAVA习题五】将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

import java.util.Scanner;public class Fenjieshu分解数 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner n=new Scanner(Sy......

osc_7rnzlqhm
28分钟前
24
0
Eclipse 安装Web Service、Axis2插件

Eclipse 安装Web Service、Axis2插件 一. 下载Apache Axis2及相关插件 下载地址: http://axis.apache.org/axis2/java/core/download.cgi 二. 解压 axis2-eclipse-codegen-plugin-1.7.3.zip......

osc_8hwmnuba
29分钟前
37
0
CAD如何输入文本?迅捷CAD编辑器文本输入更快捷

在CAD文件中,如何输入文本呢?相信很多小伙伴们,对于如何使用“迅捷CAD编辑器”给CAD文件输入文本,还是有些不够清楚的。那么,下面小编就给小伙伴们分享一下,如何使用它更快捷地输入文本...

深蓝月上
30分钟前
27
0
【金融】京东白条分期支付业务流程

1.京东白条分期支付业务流程 2.京东白条分期支付前端页面截图(H5) 2.1 京东商城 京东商城仅商详模块展示白条分期详情。包含: 2.2 京东数科(收银台) 2.2.1 判断是否登录 如果用户未登录,...

osc_wxsc35it
30分钟前
20
0
PDF怎么修改表单?高效办公就选这款PDF编辑器软件

在PDF文档中,怎么进行修改表单的操作呢?想要高效率的办公,小伙伴们就选择这款PDF编辑器软件吧。当面对一些需要进行修改表单操作的PDF文档,办公室小伙伴们是不是经常会感觉到头疼,不知道...

开源86
31分钟前
25
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部