您的位置  > 互联网

的架构图:HDFS的可靠性和可扩展能力

这种采用完全不同的技术来解决元数据和数据的设计,大大简化了系统的复杂度,并且具有足够的可扩展性(如果平均文件大小大于256MB,每GB节点内存可以支持大约1PB的数据)。 放弃对POSIX文件系统的部分功能(如随机写入、扩展属性、硬链接等)的支持,也进一步简化了系统复杂度,换取了更好的系统性能、健壮性和可扩展性。

由于GFS成熟稳定,更容易构建上层应用程序(等)。 后来开发了可扩展性更强的下一代存储系统,将元数据和数据存储完全分离,实现了元数据的分发(自动),并使用Reed编码来减少存储空间的使用,从而降低成本。

分布式文件系统

来自Yahoo,是GFS等的开源Java实现版本。HDFS也基本上复制了GFS的设计。 这里我就不再重复了。 下图是HDFS的架构图:

HDFS的可靠性和扩展性还是非常好的。 有数千个节点和 100PB 级别的部署。 支持大数据应用的性能还是很不错的。 很少有数据丢失的情况(因为没有配置回收站)。 误删除的数据除外)。

HDFS的HA方案是后来添加的,比较复杂,以至于最先实现这个HA方案的人很长一段时间(至少3年)都做了手动故障转移(他们不信任自动故障转移)。

由于是用Java实现的,依赖于预先分配的堆内存大小,分配不足很容易触发Full GC,影响整个系统的性能。 有团队尝试用C++重写,但目前还没有成熟的开源解决方案。

HDFS还缺乏成熟的非Java客户端,导致在大数据以外的场景(如工具)(如深度学习等)使用不方便。

它是来自波兰的开源分布式 POSIX 文件系统。 它还参考了 GFS 架构并实现了大多数 POSIX 语义和 API。 通过非常成熟的FUSE客户端挂载后可以像本地文件系统一样访问。 架构如下图所示:

支持快照,方便用于数据备份或备份恢复。

它是用C实现的,是一个异步事件驱动的单线程,类似于Redis。 但网络部分使用了poll,而不是效率更高的epoll,导致并发达到1000左右时,CPU消耗非常高。

开源社区版本不具备HA,采用异步冷备份来实现。 闭源付费版本具有 HA。

为了支持随机写操作,其中的chunk可以被修改,并使用一套版本管理机制来保证数据的一致性。 这种机制比较复杂,容易出现奇怪的问题(比如集群重启后,可能有少数chunk的实际副本数低于预期)。

上面提到的GFS、HDFS都是针对自建机房等软硬件环境而设计的。 他们使用多台机器和多个副本将数据可靠性和节点可用性结合起来来解决问题。 但在公有云或者私有云的虚拟机中,块设备已经是三副本可靠性设计的虚拟块设备了。 如果通过多台机器、多份来完成,数据的成本仍然很高(实际上是9份)。

所以我们改进了HDFS的架构,并针对公有云进行了设计。 架构如下图所示:

使用公有云中现有的对象存储来替换并实现全弹性的存储系统。 公有云的对象存储解决了大规模数据的安全高效存储问题。 只需要专注于元数据的管理,也大大降低了元数据服务的复杂度(GFS和GFS需要同时解决元数据的存储和数据存储、块健康管理)。

我们对元数据部分也做了很多改进,从一开始就基于Raft实现了高可用。 要真正提供高可用、高性能的服务,元数据的管理和运营仍然非常具有挑战性。 元数据以服务的形式提供给用户。 由于POSIX文件系统API是使用最广泛的API,因此我们基于FUSE实现了POSIX高度兼容的客户端。 用户可以通过命令行工具将其挂载到Linux或macOS上,并像本地文件系统一样快速访问它。

上图中右侧的虚线是负责数据存储和访问的部分,涉及用户的数据隐私。 它们完全处于客户自己的账户和网络环境中,不会接触元数据服务。 我们()没有任何方式访问客户内容(元数据除外,请不要在文件名中放入敏感内容)。

概括

这里简单介绍一下我所了解的几种分布式文件系统的架构,并按照出现的顺序放在下图中(箭头表示以前或新一代版本):

上图上半部分的蓝色文件主要用于大数据场景,实现了 POSIX 的子集,而下面的绿色文件是 POSIX 兼容的文件系统。

其中,以GFS为代表的元数据与数据分离的系统设计可以有效平衡系统的复杂度,有效解决大规模数据(通常是大文件)的存储问题,并且具有更好的扩展性。 该架构支持元数据的分布式存储,并且具有无限的可扩展性。

作为后来者,我学习了如何实现分布式POSIX文件系统,也学习了元数据和数据完全分离的思想,希望能够在公有云或者私有云场景下提供最好的分布式存储体验。

通过将数据存储在对象存储中,有效避免了使用上述分布式文件系统时双层冗余(块存储冗余和分布式系统多机冗余)带来的高成本问题。 它还支持所有公有云,因此您不必担心被锁定在某个云服务中,并且可以在公有云或区域之间平滑地迁移数据。

最后,如果你有公有云账号,注册一下,5分钟就可以在你的虚拟机或者你的Mac上挂载PB级的文件系统。

关于作者:

(刘洪庆),TGO鲲鹏俱乐部创始人、会员; 豆瓣早期员工; 国内最早开源KV存储作者。