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.
为了水平的扩展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的更多相关文章
- 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. ...
- Apache Hadoop 3.0新版本介绍及未来发展方向
过去十年,Apache Hadoop从无到有,从理论概念演变到如今支撑起若干全球最大的生产集群.接下来的十年,Hadoop将继续壮大,并发展支撑新一轮的更大规模.高效和稳定的集群. 我们此次将向大家全 ...
- 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 ...
- 【解决】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服务器提交 ...
- 【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制
前言 HDFS为管理员提供了针对文件夹的配额控制特性,能够控制名称配额(指定文件夹下的文件&文件夹总数),或者空间配额(占用磁盘空间的上限). 本文探究了HDFS的配额控制特性,记录了各类配额 ...
- 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 ...
- apache hadoop 2.4.0 64bit 在windows8.1下直接安装指南(无需虚拟机和cygwin)
工作须要.要開始搞hadoop了,又是大数据,自己感觉大数据.云.仅仅是ERP.SOAP风潮之后与智能地球一起诞生的概念炒作. 只是Apache是个奇妙的组织.Java假设没有它也不会如今如火中天.言 ...
- Apache Hadoop集群离线安装部署(二)——Spark-2.1.0 on Yarn安装
Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS.YARN.MR)安装:http://www.cnblogs.com/pojishou/p/6366542.html Apac ...
- 重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!
点击上方 蓝字关注我们 社区的小伙伴们,好消息!经过 100 多位社区贡献者近 10 个月的共同努力,我们很高兴地宣布 Apache DolphinScheduler 2.0 alpha 发布.这是 ...
随机推荐
- mysql进阶(二十八)MySQL GRANT REVOKE用法
mysql进阶(二十八)MySQL GRANT REVOKE用法 MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...
- 剑指Offer——咪咕笔试题+知识点总结
剑指Offer--咪咕笔试题+知识点总结 情景回顾 时间:2016.10.09 15:00-16:30 地点:山东省网络环境智能计算技术重点实验室 事件:咪咕笔试 知识点总结 1.Html设置格式贵阳 ...
- Android动态加载入坑指南
曾几何时,国内各大公司掀起了一股研究Android动态加载的技术,两年多过去了,动态加载技术俨然成了Android开发中必须掌握的技术.那么动态加载技术是什么呢,这里谈谈我的个人看法,如有雷同,纯属偶 ...
- Django开发自己的博客系统
好久之前就想做一下自己的博客系统了,但是在网上查了查好像是需要会一些Node.js的相关知识,而且还要安装辣么多的库什么的,就不想碰了.但是我遇到了Django这么一款神器,没想到我的博客系统就这么建 ...
- UNIX网络编程——tcp流协议产生的粘包问题和解决方案
我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体 ...
- Cocos2D中Action的进阶使用技巧(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 大家对Cocos2d中动作的使用大概都很清楚了,其实本身act ...
- 编译GDAL使用最新的HDF库配置文件
HDF库最新版本中的动态库以及目录结构都发生了变化,导致按照之前的博客进行编译GDAL时,会出问题.使用HDF4版本为HDF4-4.2.10,HDF5的版本为HDF5-1.8.12.两个库的目录结构如 ...
- IOS中 浅谈iOS中MVVM的架构设计与团队协作
今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- Objective-C实现常用的4种排序算法
OC实现的4种排序又来了! 4种排序分别是:快速排序.冒泡排序.选择排序.插入排序,其他的我就不写了,因为OC里的数组中不能存放基本数据类型,如int不能存放,只能放对象,所以所有的数据我用了NSNu ...
- 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法
. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...