随着网络性能提高,云端计算架构逐步向存算分离转变,AWS Aurora 率先在数据库领域实现了这个转变,大数据计算领域也迅速朝此方向演化。java
存算分离在云端有明显优点,不但能够充分发挥弹性计算的灵活,同时集中的托管存储能够提供更大的容量和更低的成本,避免了云端大量自建存储集群的维护代价。node
1、问题和挑战数据库
对象存储是普遍使用的云端非结构化数据存储解决方案,愈来愈多的非结构化数据汇集于对象存储的数据湖中,随之而来的是对这些海量数据的分析需求。缓存
然而对大数据分析的存储系统来讲,HDFS 接口是事实标准,HDFS 是大数据生态的存储基石。网络
原生的对象存储接口不兼容 HDFS,没法直接使用。为支持计算存储分离的大数据场景,对象存储一般提供了一个模拟层,实现 HDFS 语义到对象存储语义的转换,典型实现相似 s3n 和 cosn。然而这类实现缺少对真正的文件系统接口的支持,基于对象存储的扁平目录结构没法实现分层命名空间,在处理相似 rename 等操做时效率极低(实际是基于前缀复制关联的全部对象),对于 list、head 等频繁元数据操做的场景延迟较高,一些对象存储系统还缺乏强一致性语义,不能保证写后读一致性,致使上层的大数据计算框架出错。
架构
同时在数据流方面,诸如常见的文件 append 操做,s3n 和 cosn 等对象存储的模拟层也没法支持。并发
为支持大数据存算分离场景,须要从新设计云端存储系统,该系统能够为云端大数据计算提供高效可靠的存储基石,在实现无限存储的同时,重点知足对元数据的需求。app
为此,咱们提出了一种基于对象存储的通用分布式文件系统设计方案:cloud native hdfs,简称 CHDFS。框架
2、CHDFS 总体介绍分布式
CHDFS 总体架构如图所示。
CHDFS,在对象存储之上,充分发挥云端优点,构建可扩展的 metadata 层,实现对 HDFS 语义的支持。经过高度优化的 metadata 层,能够支持海量元数据的高效访问。在元数据规模远超 HDFS 的状况下,达到接近原生 HDFS 性能的效果。同时提供优化了读写数据流的 java 客户端,在支持高效元数据操做的同时,充分发挥了对象存储高吞吐和低成本的优势。
CHDFS 基于对象存储实现文件系统语义,数据托管给对象存储,把对象存储当作磁盘使用,在此基础上构建文件系统分布式元数据层,支持海量数据。基于对象存储托管数据,能够自动得到对象存储的优点,如低成本,高可靠,大吞吐,高可用等特性,容量可达到百 PB 级别。
3、CHDFS 元数据服务特色
CHDFS 元数据服务采用分布式架构,在元数据读写方面作了较多优化,支持百亿级别的文件数据量,突破了 hdfs namenode 规模限制,同时保证了严格的强一致语义。
对比 COS 和 HDFS,具备如下特色:
CHDFS 提供了多种元数据引擎,在面临不一样的应用场景时,用户能够有多种选择,达到成本、容量和性能的平衡。
在接口上,CHDFS 彻底兼容 HDFS,能够轻松在两个系统之间迁移数据。
4、COS 为 CHDFS 提供数据底座
对象存储 COS 做为云端基础存储服务,为 CHDFS 提供了坚实的数据底座,CHDFS 的文件数据分块后存储在 COS,具备如下优势:
同时,CHDFS 提供了高性能的 HDFS 兼容的 java sdk,针对大数据场景作了全面优化,实现了高效的读写缓存机制,能够充分发挥 COS 在数据流方面的优点。
5、丰富的产品功能
除了上述提到的强大的文件读写能力外,CHDFS 还提供了丰富的产品功能,来知足大数据场景下客户的多样需求。
对于关注成本优化的客户,CHDFS 提供了存储生命周期管理功能,可以经过简单的配置页面,让客户的文件自动沉降到成本更低的存储介质,进一步下降客户使用云端存储的成本,真真正正的帮助客户省钱。当客户须要访问这部分沉降的冷数据时,CHDFS 提供了功能强大、方便易用的命令行工具,使文件回到热存储层供客户使用。
对于有存储内容感知需求的客户,CHDFS 提供了强大的文件清单功能,能够按照客户指定的文件格式及过滤字段,离线导出文件信息,而且投递到客户的文件系统中。客户能够经过读取该清单文件,进行多维度的业务文件属性分析,如文件平均大小分布等。甚至还能够做为客户从本地 HDFS 导入 CHDFS 过程当中的一种文件校验手段。
6、生态整合
CHDFS 提供了彻底兼容 HDFS 的协议,能够无缝支持常见的大数据计算框架,如 Hive,Spark,Presto,Flink 等。
CHDFS 目前已经和腾讯云 EMR 产品紧密集合。客户购买 CHDFS 产品后,无需安装任何环境,便可直接在腾讯云 EMR 上使用 CHDFS 产品,进一步简化客户使用 CHDFS 的上手成本。