HDFS概述(3)————HDFS Federation
本指南概述了HDFS Federation功能以及如何配置和管理联合集群。
当前HDFS背景
HDFS主要有两层:
1.Namespace
(1)包含目录,文件和块。
(2)它支持所有命名空间相关的文件系统操作,如创建,删除,修改和列出文件和目录。
2.Block Storage,分为两部分:
(1)块管理(在Namenode中执行)通过处理注册和周期性心脏跳动来提供Datanode集群成员资格。处理块报告并维护块的位置。支持块相关操作,如创建,删除,修改和获取块位置。管理复制块下的副本放置,块复制,并删除过度复制的块。
(2)存储 - 由Datanodes通过在本地文件系统上存储块并允许读/写访问来提供。
当前HDFS架构只允许整个集群中存在一个namespace,而该namespace被仅有的一个namenode管理。这个架构使得HDFS非常容易实现,但是,它(见上图)在具体实现过程中会出现一些模糊点,进而导致了很多局限性(下面将要详细说明),当然这些局限性只有在拥有大集群的公司,像baidu,腾讯等出现。
Multiple Namenodes/Namespaces
为了水平扩展名称服务,联合使用多个独立的Namenodes /命名空间。纳米诺斯联盟;Namenodes是独立的,不需要相互协调。Datanodes用作所有Namenodes的块的通用存储。每个Datanode注册到集群中的所有Namenodes。Datanodes发送周期性的心跳和块报告。他们还处理Namenodes的命令。
用户可以使用ViewFs创建个性化的命名空间视图。ViewFs类似于某些Unix / Linux系统中的客户端安装表。
Block Pool
块池是属于单个命名空间的一组块。Datanodes存储集群中所有块池的块。每个块池都是独立管理的。这允许命名空间为新块生成块ID,而不需要与其他命名空间协调。Namenode故障不会阻止Datanode在集群中提供其他的Namenode。
命名空间及其块池一起称为命名空间卷。这是一个独立的管理单位。当Namenode /命名空间被删除时,Datanodes的相应块池被删除。在集群升级期间,每个命名空间卷都将作为一个单元升级。
ClusterID
ClusterID标识符用于标识集群中的所有节点。格式化Namenode时,该标识符将被提供或自动生成。该ID应该用于格式化其他的Namenodes到集群。
主要优点
命名空间可伸缩性 - Federation会添加命名空间水平缩放。通过允许将更多的Namenodes添加到集群中,使用大量小文件的大型部署或部署可以从命名空间缩放中获益。
性能 - 文件系统吞吐量不受单个Namenode的限制。将更多的Namenodes添加到集群可以缩放文件系统的读/写吞吐量。
隔离 - 单个Namenode在多用户环境中不提供隔离。例如,实验应用程序可能会超载Namenode并减缓生产关键应用程序。通过使用多个Namenodes,可以将不同类别的应用程序和用户隔离到不同的命名空间。
Federation 配置
联合配置向后兼容,并允许现有的单个Namenode配置工作,无任何变化。新配置的设计使得集群中的所有节点具有相同的配置,而不需要根据集群中节点的类型部署不同的配置。
联盟添加了一个新的NameServiceID抽象。Namenode及其对应的辅助/备份/检查指针节点都属于NameServiceId。为了支持单个配置文件,Namenode和secondary / backup / checkpointer配置参数后缀为NameServiceID。
配置步骤
步骤1:将dfs.nameservices参数添加到配置中,并使用逗号分隔的NameServiceID进行配置。Datanodes将使用这个来确定集群中的Namenodes。
步骤2:对于每个Namenode和Secondary Namenode / BackupNode / Checkpointer,将以下配置参数添加到相应的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.dirdfs.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 |
以下是两个Namenodes的示例配置:
- <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>
格式化Namenodes
步骤1:使用以下命令格式化Namenode:
- [hdfs]$ $HADOOP_HOME/bin/hdfs namenode -format [-clusterId <cluster_id>]
选择一个唯一的cluster_id,它不会与您的环境中的其他集群冲突。如果未提供cluster_id,则会自动生成唯一的。
步骤2:使用以下命令格式化附加的Namenodes:
- [hdfs]$ $HADOOP_HOME/bin/hdfs namenode -format -clusterId <cluster_id>
请注意,步骤2中的cluster_id必须与步骤1中的cluster_id相同。如果它们不同,则附加的Namenodes不会是联合集群的一部分。
从旧版本升级并配置Federation
较旧的版本只支持一个Namenode。将集群升级到较新版本以启用联合在升级期间,您可以提供如下的ClusterID:
- [hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start namenode -upgrade -clusterId <cluster_ID>
如果未提供cluster_id,则会自动生成。
将新的Namenode添加到现有的HDFS集群
执行以下步骤:
将dfs.nameservices添加到配置中。
使用NameServiceID后缀更新配置。配置键名称已更改后版本0.20。您必须使用新的配置参数名才能使用联合。
将新的Namenode相关配置添加到配置文件。将配置文件传播到集群中的所有节点。启动新的Namenode和Secondary / Backup。通过对集群中的所有Datanode运行以下命令,刷新Datanodes以获取新添加的Namenode:
- [hdfs]$ $HADOOP_HOME/bin/hdfs dfsadmin -refreshNamenodes <datanode_host_name>:<datanode_rpc_port>
管理集群
启动和停止集群
要启动集群,请运行以下命令:
- [hdfs]$ $HADOOP_HOME/sbin/start-dfs.sh
要停止集群,请运行以下命令:
- [hdfs]$ $HADOOP_HOME/sbin/stop-dfs.sh
这些命令可以从HDFS配置可用的任何节点运行。该命令使用配置来确定集群中的Namenode,然后在这些节点上启动Namenode进程。Datanodes在工作文件中指定的节点上启动。该脚本可以用作构建自己的脚本来启动和停止集群的参考。
平衡器
平衡器已被更改为使用多个Namenodes。可以使用以下命令运行Balancer:
- [hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start balancer [-policy <policy>]
policy参数可以是以下任一项:datanode - 这是默认策略。这样可以平衡Datanode级别的存储空间。这与以前版本的平衡策略相似。块池 - 这将平衡块池池级别的存储空间,并在Datanode级别进行平衡。请注意,Balancer仅平衡数据,不平衡命名空间。有关完整的命令用法,请参阅平衡器。
退役
退役类似于以前的版本。需要分解的节点将添加到所有Namenodes的排除文件中。每个Namenode取消其Block Pool。当所有Namenodes完成退役Datanode时,Datanode被视为已退役。
步骤1:要将排除文件分发到所有的Namenodes,请使用以下命令:
- [hdfs]$ $HADOOP_HOME/sbin/distribute-exclude.sh <exclude_file>
步骤2:刷新所有的Namenodes以接收新的排除文件:
- [hdfs]$ $HADOOP_HOME/sbin/refresh-namenodes.sh
上述命令使用HDFS配置来确定集群中配置的Namenodes,并刷新它们以接收新的排除文件。
群集Web控制台
与Namenode状态网页类似,当使用联合时,可以使用群集Web控制台来监视http:// <any_nn_host:port> /dfsclusterhealth.jsp中的联合群集。群集中的任何Namenode都可用于访问此网页。
群集Web控制台提供以下信息:一个集群摘要,显示了整个集群的文件数,块数,总配置存储容量以及可用和已用存储。包含Namenode列表和一个摘要,其中包含每个Namenode的文件数,块数,缺失块数,实时数和死区数据节点数。它还提供访问每个Namenode的Web UI的链接。Datanodes的退役状态。
http://dongxicheng.org/mapreduce/hdfs-federation-introduction/
HDFS概述(3)————HDFS Federation的更多相关文章
- HDFS概述(5)————HDFS HA
HA With QJM 目标 本指南概述了HDFS高可用性(HA)功能以及如何使用Quorum Journal Manager(QJM)功能配置和管理HA HDFS集群. 本文档假设读者对HDFS集群 ...
- HDFS概述
HDFS概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS产出背景及定义 1>.HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配 ...
- [HDFS Manual] CH6 HDFS Federation
HDFS Federation HDFS Federation 1 Background 2.多个namenode/namespace 2.1 关键好处 3 联合配置 3.1 配置 3.2 格式化na ...
- HDFS概述(一)
HDFS概述(一) 1. HDFS产出的背景及定义 1.1 HDFS产生的背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需 ...
- HDFS概述和Shell操作
大数据技术之Hadoop(HDFS) 第一章 HDFS概述 HDFS组成架构 HDFS文件块大小 第二章 HDFS的Shell操作(开发重点) 1.基本语法 bin/hadoop fs 具体命令 ...
- Hadoop(5)-HDFS概述
HDFS产生背景 HDFS优缺点 HDFS组成架构 HDFS文件块大小
- [HDFS Manual] CH3 HDFS Commands Guide
HDFS Commands Guide HDFS Commands Guide 3.1概述 3.2 用户命令 3.2.1 classpath 3.2.2 dfs 3.2.3 envvars 3.2.4 ...
- [HDFS Manual] CH2 HDFS Users Guide
2 HDFS Users Guide 2 HDFS Users Guide 2.1目的 2.2.概述 2.3.先决条件 2.4. Web Interface 2.5. Shell Command 2. ...
- 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)
一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...
随机推荐
- 接口测试 mock server 工具moco学习笔记
看过乙醇分享的接口测试,自己练习了moco,这里呢,吧一些练习的笔记坐下记录,方便自己查阅. 开源地址https://github.com/dreamhead/moco , 到QuickStart ...
- 打印1到最大的n位数-Java
在练习剑指offer的时候,第12题打印1到最大的n位数的时候,想找个java版的,但大家要么用BigInteger做,要么给出其他的方法.我觉得要给就给最好的方法,下面是我自己参考C++代码写的ja ...
- React 实现一个漂亮的 Table
概述 对于企业级后台产品来说,Table 应该是使用最频繁的组件了,它通常比 Form 和 Chart 的使用还频繁.对于这么一个常用的组件,我们决定要把它从 RSuite 中单独出来开发,并且要具有 ...
- INotifyPropertyChanged(监听数据),当数据改变时调用
public class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHan ...
- [转]linux中颜色的含义
绿色文件---------- 可执行文件,可执行的程序 红色文件-----------压缩文件或者包文件 蓝色文件----------目录 www.2cto.com 白色文件-------- ...
- 教你自己搭建linux邮箱服务器
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt290 现在网络中流行的电子邮件系统主要有Microsoft Exchange ...
- yum安装mariadb-galera同步
节点 ip地址 hostname 系统版本 程序版本 node1 10.4.90.90 mysql1 db1 ...
- java aio nio bio
转自:http://blog.csdn.NET/liuxiao723846/article/details/45066095 Java中的IO主要源自于网络和本地文件 IO的方式通常分为几种,同步阻塞 ...
- 2015级软工实践k班第一次作业-准备
第一次作业-准备······ 几篇文章阅读下来发现一个事实,还是要有明确的目标,清楚自己需要做什么最为重要.然后根据目标确定需要为之所做的准备工作,考研也好,工作也罢,都是服务于自己的目标. 问题答应 ...
- [05] Session概要
1.Session是什么 除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态,即Session是服务器端使用的一种保存客户端状态的机制.Cookie在客户端,Session ...