前言
经常关注笔者博客的朋友们,一定看过笔者之前写过的关于HDFS对象存储(Ozone)系列的文章,并且笔者曾经预言这个功能很快将要发布在最新的Hadoop社区版本中。但是在合并此功能分支代码时,社区内部展开了很多讨论:包括内部全新的存储结构设计,以及新结构会对现有HDFS结构造成何种影响。那么有同学就好奇了,为什么一个局部的功能特性代码,合入社区就这么麻烦呢?但是笔者可要郑重其事的说:这可不是普通的小feature的代码,这是会对HDFS现有架构的调整打下地基的,它在里面引入了全新的存储层结构,为了解决的就是HDFS目前遇到的扩展性问题。
现有HDFS的扩展性问题
一件事情,凡是有果必有因,这里的“因”就是现有HDFS的扩展性问题。这个想必熟悉HDFS的同学都非常清楚了,2大方面来讲:
Namespace层面:
- Namespace命名空间的扩展问题,直接表现出来的一点是NameNode的内存使用上升。
- 随着命名空间的规模扩增,引发的各种NameNode性能瓶颈问题,包括各种负载,RPC处理耗时等等问题。
- 集群(NameNode)启动时间,因为命名空间扩增,NameNode从FSImage镜像文件中加载的时间也会拉长,这可已经不是1,2分钟的事情了。
Block块层面:
- Block块汇报规模扩增。
- 随着Block块越来越多,DataNode内部对于Block块的管理问题。
鉴于上面分析的HDFS扩展性问题,社区在几年前提出了对象存储的概念&#