HDFS Federation

HDFS Federation.pdf

1. 前言

Federation翻译成中文是联盟或联邦的意思,网上有很多介绍HDFS Federation的文章,官网上的Federation.html也做了专门的介绍。本文试图画蛇添足,以更通俗的方式重复一遍,以帮助对HDFS Federation的理解。

2. 背景

为何需要Federation?众所周知,之前的HDFS存在如下几个缺陷:

1) NameNode存在单点,不具备高可用性

2) 由于受限于单个NameNode,支撑的文件数量有限

3) 同样受限于单个NameNode,吞吐量有限

站在运维和高可用性的角度,解决这些问题,系统运行可以省心得多。HDFS Federation因此很自然的诞生了,但请注意它只解决了后两个问题,第一个问题不在它的解决范畴之内。

为何说很自然的诞生,稍加思考即可明白解决这两个问题能有什么手段:无非是升级机器的内存和CPU,也就是纵向升级;另一个就是增加机器,也就是横向升级。

显然升级内存和CPU的手段是非常有限的,不能从根本上解决问题,两个问题仍然存在,因此可行的只有增加机器这个唯一手段了。

3. 解析

没有Federation之前的HDFS架构如下图所示(没有画SecondaryNameNode,是因为SecondaryNameNode是针对单点,而非Federation要解决的两个问题),这是一种非常简洁的架构,很明显压力都集中在单个NameNode上,它成了系统瓶颈:

Federation版本的HDFS架构变成如下,显然这里不止一个NameNode,而是存在多个NameNode,并且可以按需要添加新的NameNode进行横向扩展。这里的多个NameNode间地位是平等的,而且互不干涉互不隶属,站在每个NameNode上看,它就是一个独立的HDFS集群:

南京全面深化改革工作领导小组成立,由市委书记和市长同时担任改革小组组长,通过前面的描述不难发现HDFS Federation和这个有点类似,那么就会产生一个疑问:听谁的?不乱了么?答案是:都听。

俗话曰无规则不成方圆,显然都听就乱序了。如果把这个关系理解成外包,可能更好理解一点,比如同一家外包公司会同时服务于多家公司,如下图所示:

可以进一步抽象:一个物理节点被虚拟化成多个虚拟节点,虚拟节点和NameNode是一一对应的,但物理节点和NameNode是一对多的关系。实际上Google Borg/Apache Mesos/Hadoop Yarn就是这样一种行为。进一步可看作:有多少个NameNode,就有多少个物理磁盘一样,Namespace就相当于C:\、D:\等:

甚至,可以将NameNode看作是DataNode的客户端,而DataNode则是服务端,服务端当然可以服务不同的客户端。 HDFS Federation虽然未解决单点问题,但因为多个NameNode的存在,单个NameNode故障的影响就降低了,所以可以说HDFS Federation弱化了单点问题。

要从根本上解决单点,有多种可行的手段:

1) Share Storage,主备NameNode共享同一个存储,可保证数据完整性

2) 像SecondaryNamenode一样的备份,但不能保证数据完整性

3) 引入两阶段提交(2PC),可保证一致性,但写性能会下降

4) 引入Quorum NRW,也可保证一致性,可以选择牺牲读性能来提升写性能

也许2PC是相对较好的解决方式。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Albert陈凯

Apache Spark快速入门

https://www.iteblog.com/archives/1408.html 一、 为什么要选择Apache Spark 当前,我们正处在一个“大数据"...

5216
来自专栏Albert陈凯

Apache Spark常见的三大误解

最近几年关于Apache Spark框架的声音是越来越多,而且慢慢地成为大数据领域的主流系统。最近几年Apache Spark和Apache Hadoop的Go...

3526
来自专栏鹅厂优文

【DataMagic】如何在万亿级别规模的数据量上使用Spark

本文主要为作者在搭建使用计算平台的过程中,对于Spark的理解,希望能给读者一些学习的思路。

1.2K8
来自专栏PPV课数据科学社区

Hadoop并非完美:8个代替 HDFS的绝佳方案

HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,坦白说HDFS是一个...

3625
来自专栏IT派

关于大数据分析系统 Hadoop,这里有13个开源工具送给你

Hadoop是由Apache基金会开发的一个大数据分布式系统基础架构,最早版本是2003年原Yahoo!DougCutting根据Google发布的学术论文研究...

1182
来自专栏大数据挖掘DT机器学习

大数据架构师基础:hadoop家族,Cloudera系列产品介绍

大数据我们都知道hadoop,可是还会各种各样的技术进入我们的视野:Spark,Storm,impala,让我们都反映不过来。为了能够更好的架构大数据项目,这...

5075
来自专栏一名合格java开发的自我修养

Spark的误解-不仅spark是内存计算,hadoop也是内存计算

       市面上有一些初学者的误解,他们拿spark和hadoop比较时就会说,Spark是内存计算,内存计算是spark的特性。请问在计算机领域,mysq...

1182
来自专栏编程

提高Spark姿势水平 No.73

本文的依据是我学习整个Spark的学习历程。在这里,我会从几个方面来跟大家一起讨论。Spark 是什么?Spark 跟 Hadoop 有什么渊源?Spark 有...

2436
来自专栏CSDN技术头条

Spark App自动化分析和故障诊断

非常高兴有机会可以代表我们团队在“CCTC 2017——Spark技术峰会”上给大家分享我们在Spark平台化上所做的一些工作,下面是分享的一些笔录。 苏宁大...

3456
来自专栏Python爬虫与算法进阶

Spark教程(三) Spark 学习资源

基本上把上面两个网站撸完,Scala就差不多了。scala还是和Python挺像的。

1171

扫码关注云+社区

领取腾讯云代金券