原文出处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

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

 

  1. <configuration>
  2. <property>
  3. <name>dfs.nameservices</name>
  4. <value>ns1,ns2</value>
  5. </property>
  6. <property>
  7. <name>dfs.namenode.rpc-address.ns1</name>
  8. <value>nn-host1:rpc-port</value>
  9. </property>
  10. <property>
  11. <name>dfs.namenode.http-address.ns1</name>
  12. <value>nn-host1:http-port</value>
  13. </property>
  14. <property>
  15. <name>dfs.namenode.secondaryhttp-address.ns1</name>
  16. <value>snn-host1:http-port</value>
  17. </property>
  18. <property>
  19. <name>dfs.namenode.rpc-address.ns2</name>
  20. <value>nn-host2:rpc-port</value>
  21. </property>
  22. <property>
  23. <name>dfs.namenode.http-address.ns2</name>
  24. <value>nn-host2:http-port</value>
  25. </property>
  26. <property>
  27. <name>dfs.namenode.secondaryhttp-address.ns2</name>
  28. <value>snn-host2:http-port</value>
  29. </property>
  30.  
  31. .... Other common configuration ...
  32. </configuration>

FormattingNamenodes格式化namenodes

格式化一个新的namenode

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

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

格式化增加的namenode

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

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

更新HDFS版本到0.23

第一步:

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

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

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

第二步:

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

增加 dfs.nameservices配置

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

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

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

    更新所有的节点

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

 

   

管理集群:

启动与停止:

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

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

Balancer(均衡器)

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

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

  1. "$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. mysql进阶(二十八)MySQL GRANT REVOKE用法

    mysql进阶(二十八)MySQL GRANT REVOKE用法   MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...

  2. 剑指Offer——咪咕笔试题+知识点总结

    剑指Offer--咪咕笔试题+知识点总结 情景回顾 时间:2016.10.09 15:00-16:30 地点:山东省网络环境智能计算技术重点实验室 事件:咪咕笔试 知识点总结 1.Html设置格式贵阳 ...

  3. Android动态加载入坑指南

    曾几何时,国内各大公司掀起了一股研究Android动态加载的技术,两年多过去了,动态加载技术俨然成了Android开发中必须掌握的技术.那么动态加载技术是什么呢,这里谈谈我的个人看法,如有雷同,纯属偶 ...

  4. Django开发自己的博客系统

    好久之前就想做一下自己的博客系统了,但是在网上查了查好像是需要会一些Node.js的相关知识,而且还要安装辣么多的库什么的,就不想碰了.但是我遇到了Django这么一款神器,没想到我的博客系统就这么建 ...

  5. UNIX网络编程——tcp流协议产生的粘包问题和解决方案

    我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体 ...

  6. Cocos2D中Action的进阶使用技巧(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 大家对Cocos2d中动作的使用大概都很清楚了,其实本身act ...

  7. 编译GDAL使用最新的HDF库配置文件

    HDF库最新版本中的动态库以及目录结构都发生了变化,导致按照之前的博客进行编译GDAL时,会出问题.使用HDF4版本为HDF4-4.2.10,HDF5的版本为HDF5-1.8.12.两个库的目录结构如 ...

  8. IOS中 浅谈iOS中MVVM的架构设计与团队协作

    今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  9. Objective-C实现常用的4种排序算法

    OC实现的4种排序又来了! 4种排序分别是:快速排序.冒泡排序.选择排序.插入排序,其他的我就不写了,因为OC里的数组中不能存放基本数据类型,如int不能存放,只能放对象,所以所有的数据我用了NSNu ...

  10. 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

    . 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...