zoukankan      html  css  js  c++  java
  • Apache Hadoop 2.0.2-alpha

    原文出处http://hadoop.apache.org/docs/r2.0.2-alpha/hadoop-yarn/hadoop-yarn-site/Federation.html

    HDFSF分为2层 namespace和block storage

    Namespace

             由目录,文件和快组成

             支持所有的namespace 文件相关的操作,例如增,删,改,查文件夹和文件

    Block storage

             Blockmanager

    提供数据节点的集群的登记和心跳。

                       报告和维护datanode

                       支持快的例如增删改查等的操作

                       管理复本空间(包括被复制的,复制的,以及删除的复本)

             Storage

                       Datanode为Storage提供存储块到本地文件系统,然后允许读写操作

    以前的hdfs 架构,只允许一个集群存在一个namenode 。单个的namenode 管理所有的名字空间。hdfs Federation  突破了以前架构的限制,,增加多个的namenode/namespace.

     

     

    Multiple Namenodes/Namespaces

     

    为了水平的扩展name service . Federation 采用了多个独立的namenodes/namespaces.

    Namenodes独立运行,不需要其他的namenode交互。Datanodes被所有的namenodes作为常用存储 使用。每个datanode  在集群中的所有namenode中都注册,datanodes每个一段时间发送心跳消息到namenodes 然后获取命令

    Block Pool

    一个blockpool是一组namespace 相同的block. 集群中的block pools公用所有的Datanodes  的存储块。他与其他blockpools中的blockpool 是相互独立的。每个namespace都可以为产生新的块,任何一个namenode的故障都不会影响集群中的其他namenode

           一个命名空间跟他的blockpool成为命名空间的卷。他是管理中的自包含单元,当一个namenode或者namespace被删除,对应的block pool也会被删除。集群升级的时候,每个namespace作为一个独立的单元来升级 。

     

    ClusterID

           ClusterID 用来识别集群中的nodes,当namenode被格式化,这个标记被复制或者自动生成,。这个ID用于格式化其他namenodes

     

    主要优点

    Namespace 的可扩展性:

    HDFS集群的存储可以水平扩展,但是namespace不可以。。小文件使用的大量增长得益于namespace扩展

     

    性能: HDFS的吞吐量受限于以前的架构,增加更多的namenode可以水平扩展hdfs的吞吐量

    Isolation (隔离):单个的namenode在多用户使用的环境中,无法做到隔离性,一个实验可以证明,重载namenode然后关键生产被减缓。使用多个namenod,不同类的应用和不同的用户被分配到不同的namespace

     

    Federation Configuration(配置)

    Federation 的配置 是兼容旧版本的,他允许不做任何配置修改的 单个的namenode运行。

    为了支持单个配置文件,namenode跟相应的secondarynode/checkpoint/backup节点要用NameServiceID作为前缀,然后加到相同的配置文件中

     

    配置

    步骤1

     dfs.nameservices 配置NameServiceIDs,当datanode检测集群中的所有namenodes会使用到这个配置

    所有的namenode必须要配置相应的SecondaryNamenode, BackupNode的配置如下表

     

    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

     

     

     

    配置下面的参数,例子如下

     

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

    FormattingNamenodes格式化namenodes

    格式化一个新的namenode

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

    选择一个集群ID以区别于你环境中的其他集群,如果不提供他会自己生成

     

    格式化增加的namenode

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

    clusterId必须跟前面的clusterId一样,否则新的namenode就不能被加到集群中来

     

    更新HDFS版本到0.23

    第一步:

    更新版本到0.23,同时通过下面命令配置集群ID

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

    如果cluster_ID没有给,他会自动生成

    第二步:

    增加一个新的namenode到已经存在的hdfs中

    增加 dfs.nameservices配置

        使用NameServiceID前缀修改配置(dfs.namenode.rpc-address.ns1

        增加一个namenode相关配置(包括snn,backupnode)

        配置文件传播到集群中所有的节点

        更新所有的节点

             $HADOOP_PREFIX_HOME/bin/hdfs dfadmin -refreshNameNode <datanode_host_name>:<datanode_rpc_port>
    上面的命令,必须对所有的数据节点在集群中运行。

     

       

    管理集群:

    启动与停止:

    $HADOOP_PREFIX_HOME/bin/start-dfs.sh
    $HADOOP_PREFIX_HOME/bin/stop-dfs.sh

    上述命令可以在集群中的任何节点运行

     

    Balancer(均衡器)

    均衡器被修改成能在多namenodes的集群中工作。

    我们使用如下命令运行均衡器:

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

     

    Policy可以是:

    Node 是缺省策略, datanode级别的均衡,跟以前的架构策略是一样的

    Blockpoolblock pool级别的均衡,并且在datanode级别的均衡

     

    注意均衡只均衡数据,而不会均衡namespace

     

     

    Decommissioning(从集群中去除datanode)

    与以前的版本设计一样,需要去除的节点需要写到namenode的exclude文件中 。每个节点在 Block Pool分别解除那些节点。当所有的namenode完成这一过程,那么datanode可以认为已经去除了。

    解除步骤:

    第一步:

    把设置去除节点的文件部署到所有的namenodes上,使用下面的命令

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

    第二步:

    刷新所有的namenodes 去获取exclude文件的设置

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

    上述命令使用hdfs的配置去检测所有namenode的配置,刷新所有的namenode,去读关于exclude文件的信息。

     

    Cluster Web Console

    跟namenode 状态的web页面一样, 集群的Web Console被用于监视整个集群的状态

    http://<any_nn_host:port>/dfsclusterhealth.jsp

    所有的namenode都可以在这个页面被查看到

     

    这个页面提供以下信息:

             1集群的概况,包括 文件数量,快数量,总配置存储容量,集群的可用和已用容量信息

     

    2提供namenode的列表和概况,包括文件数,块数量,缺失快,该namenode上活动和非活动的datanode,他还提供一个可供访问NAMENODE WEB页面的链接

    3 他还提供了移除的数据节点的状态

  • 相关阅读:
    jsp的C标签一般使用方法以及js接收servlet中的对象及对象数字
    关于Springmvc中include与Sitemesh装饰器的基本使用
    关于垃圾回收的一些基本原理及技术解析
    一张图解析 编译器编译流程
    Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享
    冲刺五
    冲刺四
    冲刺三
    冲刺二
    冲刺一
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205568.html
Copyright © 2011-2022 走看看