zoukankan      html  css  js  c++  java
  • [HDFS Manual] CH6 HDFS Federation

    HDFS Federation

    HDFS Federation. 1

    1 Background. 1

    2.多个namenode/namespace. 1

    2.1 关键好处... 1

    3 联合配置... 1

    3.1 配置... 1

    3.2 格式化namenode. 1

    3.3 更新老的release并且配置联合... 1

    3.4 增加新的namenode到已经存在的cluster. 1

    4 管理集群... 1

    4.1 启动和关闭集群... 1

    4.2 均衡器... 1

    4.3 停止运行... 1

    4.4 Cluster Web Console. 1

     

    1 Background

    HDFS主要有2

    ·         Namespace

    o   由目录,文件和块组成

    o   支持所有namespace相关的文件系统操作,create,delete,modify和查看文件和目录

    ·         Block 存储服务

    o   Block管理

    §  提供datanode clusterc成员,通过注册和定期心跳控制。

    §  处理block report并且维护block位置。

    §  Block的相关操作,比如创建,修改,删除和获取block位置。

    §  管理副本位置,block复制,如果超出删除block副本。

    o   Storage 用来提供保存block,保存在本地文件系统,允许读写访问。

    之前的HDFS体系结构允许一个namespace。在这个配置,一个namenode管理namespaceHDFS联合支持多个namenodenamespace

    2.多个namenode/namespace

    为了水平扩展name service,联合使用多个独立的namenode/namespaceNamenode是联合的,独立的不需要互相协助。Datanode作为通用存储来保存所有的namenodeblock。每个datanode会在所有的namenode中注册。Datanode定期的发送心跳和block report。也处理来自namenode 的命令。

    用户使用ViewFS来创建个人的namespace viewViewFs客户端的mount table一样。

    Block Pool

    Block pool是属于一个namespaceblock集合。Datanode保存了所有clusterblock poolblock。每个block pool都是独立的。不需要其他namespace协助,允许一个namespace生成一个新的block id。一个Namenode错误不会阻止datanode为其他namenode服务。

    Namespaceblock pool一起称为NameSpace Volume。是一个管理单元。当namenode/namespace被删除,相关的block pool也会被删除。当集群升级,每个namespace volume也是作为一个单元被更新的。

    ClusterID

    ClusterID用来标识cluster中所有的node。当namenode被格式化,标识符可以提供也可以自动生成。这个ID需要用来格式化其他namenode

    2.1 关键好处

    ·         Namespace扩展联合增加了namespace的水平扩展。大的部署或者大量小文件的集群可以通过增加namenode获得好处。

    ·         性能文件系统吞吐不会被单个namenode限制。另外增加namenode会扩展文件系统的读写吞吐量。

    ·         隔离单个namenode不会对用户进行隔离。比如,一个应用overload namenode会导致其他应用性能下降。使用多个namenode,不同的应用分类,可以隔离到不同的namenode上。

    3 联合配置

    联合配置是向后兼容的并且允许已经存在的单个namenode配置,不需要其他修改。新的配置被设计用来所有的node都可以使用一样的配置,不需要node不同的配置。

    联合增加了一个新的NameServiceIDNamnode和相关的secondary/backup/checkpointer node都属于一个nameserviceid。为了支持一个配置文件,namenodesecondary/backup/checkpointer node使用nameserviceid前缀。

    3.1 配置

    步骤1:增加dfs.nameservices参数来配置使用逗号分隔。被datanode使用来决定cluster中的namenode

    步骤2:对于每个namenodesecondary/backup/checkpointer node增加以下配置使用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.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

    配置例子:

    3.2 格式化namenode

    步骤1:格式化namenode使用以下命令:
    [hdfs]$ $HADOOP_HOME/bin/hdfs namenode -format [-clusterId <cluster_id>]
    选择一个文艺的clusterid不能和环境中的其他cluster冲突。如果cluster_id不提供会自动生成一个唯一的cluster_id

    步骤2:格式化其他namenode
    [hdfs]$ $HADOOP_HOME/bin/hdfs namenode -format -clusterId <cluster_id>
    注意这里的clusterid要和上面的clusterid一样。如果不同,另外的namenode不是联合集群的一部分。

    3.3 更新老的release并且配置联合

    老的release只支持一个namenode。更新cluster到新的release并且提供一个clusterid
    [hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start namenode -upgrade -clusterId <cluster_ID>

    如果没有提供会自动生成。

    3.4 增加新的namenode到已经存在的cluster

    步骤如下:

    ·         增加dfs.nameservices配置

    ·         使用nameserviceid前缀来更新配置。

    ·         增加一个新的namenode

    ·         把配置文件发到所有的node

    ·         启动新的namenodesecondary/backup

    ·         刷新datanode获取新的namenode
    [hdfs]$ $HADOOP_HOME/bin/hdfs dfsadmin -refreshNamenodes <datanode_host_name>:<datanode_rpc_port>

    4 管理集群

    4.1 启动和关闭集群

    启动集群命令:
    [hdfs]$ $HADOOP_HOME/sbin/start-dfs.sh

    关闭集群命令:
    [hdfs]$ $HADOOP_HOME/sbin/stop-dfs.sh

    这个命令可以集群中的任何节点运行。命令使用配置决定集群的namenode,然后在这些node启动namenode进程。Workfile 中的node 启动Datanode。可以参考这个脚本设计自己的脚本来启动和关闭集群。

    4.2 均衡器

    均衡器因为要运行在多个namenode被改变。均衡器可以使用以下方法启动:
    [hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start balancer [-policy <policy>]

    Policy参数有2个:

    ·         Datanode 这个是默认的策略,均衡datanode级别的存储。和以前差不多。

    ·         Blockpool会均衡blockpool级别,也会均衡datanode级别。

    注意均衡器只会均衡data不会均衡namespace

    4.3 停止运行

    停止运行和之前的类似,node需要被停运的,会增加到exclude文件中。当一个datanode中的所有namenode都停运,那么datanode被认为停运了。

    步骤1:复制exclude文件到所有的namenode,并执行一下命令:
    [hdfs]$ $HADOOP_HOME/sbin/distribute-exclude.sh <exclude_file>

    步骤2:刷新所有的namenode,获取新的exclude文件的内容:
    [hdfs]$ $HADOOP_HOME/sbin/refresh-namenodes.sh

    上面的命令使用HDFS配置来决定clusternamenode并且刷新exclude文件。

    4.4 Cluster Web Console

    namenode状态web page相似,当使用联合可以使用cluster web Console可以通过http://<any_nn_host:port>/dfsclusterhealth.jsp监控联合cluster。任何cluster中的namenode都可以在这个web中访问。

    这个Cluster Web Console提供以下信息:

    ·         Cluster summary显示了文件个数,block个数,总配置的存储容量和可用的,已经使用的存储。

    ·         列出namenodesummaryb包括文件个数,block,丢失的blocklivedead datanode。这个可以通过namenodeweb UI访问。

    ·         停止运行的datanode

  • 相关阅读:
    《Android 编程权威指南》读书总结
    hadoop记录-浅析Hadoop中的DistCp和FastCopy(转载)
    Hadoop记录-queue使用率
    Hadoop记录-切换NN
    Hadoop记录-退役
    Hadoop记录-queue mysql
    Linux记录-grafana opentsdb安装
    Hadoop记录-JMX参数
    Linux记录-open-falcon开源监控系统部署
    Hadoop记录- Yarn Job MAX
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/8676742.html
Copyright © 2011-2022 走看看