原文出处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 他还提供了移除的数据节点的状态

Apache Hadoop 2.0.2-alpha的更多相关文章

  1. Apache Hadoop 3.0.0 Release Notes

    http://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-common/release/3.0.0/RELEASENOTES.3. ...

  2. Apache Hadoop 3.0新版本介绍及未来发展方向

    过去十年,Apache Hadoop从无到有,从理论概念演变到如今支撑起若干全球最大的生产集群.接下来的十年,Hadoop将继续壮大,并发展支撑新一轮的更大规模.高效和稳定的集群. 我们此次将向大家全 ...

  3. Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]

    目录 [TOC] 1.CDH介绍 1.1.什么是CDH和CM? CDH一个对Apache Hadoop的集成环境的封装,可以使用Cloudera Manager进行自动化安装. Cloudera-Ma ...

  4. 【解决】org.apache.hadoop.util.Shell$ExitCodeException: /bin/bash: line 0: fg: no job control

    [环境信息] Hadoop版本:2.4.0 客户端OS:Windows Server 2008 R2 服务器端OS:CentOS 6.4 [问题现象] 在通过Windows客户端向Linux服务器提交 ...

  5. 【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制

    前言 HDFS为管理员提供了针对文件夹的配额控制特性,能够控制名称配额(指定文件夹下的文件&文件夹总数),或者空间配额(占用磁盘空间的上限). 本文探究了HDFS的配额控制特性,记录了各类配额 ...

  6. Phoenix 5.0 hbase 2.0 org.apache.hadoop.security.authentication.util.KerberosUtil.hasKerberosKeyTab

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  7. apache hadoop 2.4.0 64bit 在windows8.1下直接安装指南(无需虚拟机和cygwin)

    工作须要.要開始搞hadoop了,又是大数据,自己感觉大数据.云.仅仅是ERP.SOAP风潮之后与智能地球一起诞生的概念炒作. 只是Apache是个奇妙的组织.Java假设没有它也不会如今如火中天.言 ...

  8. Apache Hadoop集群离线安装部署(二)——Spark-2.1.0 on Yarn安装

    Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS.YARN.MR)安装:http://www.cnblogs.com/pojishou/p/6366542.html Apac ...

  9. 重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!

    点击上方 蓝字关注我们 社区的小伙伴们,好消息!经过 100 多位社区贡献者近 10 个月的共同努力,我们很高兴地宣布 Apache DolphinScheduler 2.0 alpha 发布.这是 ...

随机推荐

  1. cassandra 监控方案评估

    摘要 最开始做cassandra monitor 方案的选型时,主要是从cassandra 本身入手,后来发现cassandra运行在JVM上,所有的metrics都是通过JMX 暴露出来.所以又可以 ...

  2. Android图片setBackgroundResource和setImageResource的区别

    网上对于这2个的区别大都是如下所示: setImageResource與xml中的src的屬性才是相匹配的,而setBackgroundResource是與xml中的background屬性相匹配 的 ...

  3. 浅谈SSH框架

    在学习或者接触一个新的概念的时候,我们应该在脑海中发挥我们的搜索引擎,牵一发动全身的去想,这个知识跟我之前接触过的有哪些相同或者不同的地方,从这个角度去看那些新的知识和概念,经过旧知识和新知识的对比我 ...

  4. Android 访问assets下的文件

    assets下经常可以放一些比较大的资源,对于这些资源我们如何访问. 步骤 1.获取AssetManager. AssetManager am = getResources().getAssets() ...

  5. OpenCV相机标定

    标签(空格分隔): Opencv 相机标定是图像处理的基础,虽然相机使用的是小孔成像模型,但是由于小孔的透光非常有限,所以需要使用透镜聚焦足够多的光线.在使用的过程中,需要知道相机的焦距.成像中心以及 ...

  6. javascript命名规则

    javascript对大小写敏感(关键字.函数名.变量名等),标识符的首字符必须是字母.下划线或者$符,其后的字符可以含数字 如果之声明了变量,并未对其赋值,默认为undefined javascri ...

  7. kindeditor用法简单介绍

    最近做毕业设计用了一个叫做kindeditor的文本编辑工具,相信很多人都用过,这货和fckeditor差不多,个人感觉这个的皮肤更好看,而且对中文的支持更好,没那么容易出现中文乱码问题.下次记录一下 ...

  8. 上海C++游戏服务器群活动PPT下载

    下载页面: http://download.csdn.net/download/jq0123/8227519 跨服与跨区的设计PPT 上海C++游戏服务器群 2014.11.9 沙龙讲义. 自我介绍 ...

  9. 【MATLAB】用MATLAB绘制奥运五环

    [MATLAB]用MATLAB绘制奥运五环 今天用MATLAB绘制了一个奥运五环,好吧,实际上是帮人做作业,嘿嘿. 贴代码: clear; clc; N = 1000; angle = linspac ...

  10. Java学习从菜鸟变大鸟之三 多线程中Thread 和Runnable的区别与运用

    多线程机制是java中的一个特点,掌握它对后面的知识的理解至关重要,是java工程师的必备知识,多线程指在单个程序中可以运行多个不同的线程执行的不同的任务,线程是一个程序内部的顺序控制流.进程是静态的 ...