总结

已完成
  • Hadoop 分布式文件系统 (HDFS) 是 Google 文件系统 (GFS) 的开放源代码克隆。
  • HDFS 设计为在节点群集上运行,通过为模型 I/O 数据提供分布式文件系统 (DFS) 来支持 MapReduce 编程。
  • HDFS 具有群集范围公共命名空间;能够存储大文件;针对一次写入、多次读取访问进行了优化;并且设计为可在发生节点故障时提供高可用性。
  • HDFS 遵循主-辅助拓扑;NameNode 处理元数据,数据存储在 DataNode 上。
  • HDFS 中的文件拆分为块(也称为区块),默认大小为 128 MB。
  • 默认情况下,块将在整个群集上复制三次( 称为复制因子)。
  • HDFS 采用树样式群集拓扑, 优化文件访问以提高性能,并尝试在机架间放置块副本。
  • 原始 HDFS 设计遵循不可变语义,不允许打开现有文件进行写入。 较新版本的 HDFS 支持文件追加。
  • HDFS 具有强一致性,因为仅在所有副本都已写入之后,才会将文件写入标记为完成。
  • NameNode 使用检测信号机制跟踪 DataNode 故障;如果 DataNode 未响应,则会将其标记为不活动,并会创建处于该 DataNode 上的块的其他副本以保持所需复制系数。
  • NameNode 是原始 HDFS 设计中的单一故障点 (SPOF)。 可以指定辅助 NameNode 以定期从主 NameNode 复制元数据,但不提供完整故障转移冗余。
  • HDFS 为 MapReduce 提供高带宽、高可靠性、每个字节的低成本以及良好的可伸缩性。
  • HDFS 对于小文件十分低效(由于较大的默认块大小),不与 POSIX 兼容,并且不允许对文件进行重写(但在最新版本的 HDFS 中可进行追加)。
  • Ceph 是设计用于云应用程序的存储系统。 Ceph 基于分布式对象存储,服务在该存储上进行分层。
  • Ceph 的核心是 RADOS,即对象存储守护程序 (OSD) 和监视节点的自我管理群集。 这些节点使用先进的技术实现自我管理、容错和可缩放性。
  • RADOS 中的对象会哈希处理到放置组中,随后使用 CRUSH 算法关联到 OSD。
  • RADOS 可以通过 librados(适用于不同编程语言的本机 RADOS 客户端)进行访问。
  • 应用程序还可以通过 RADOS 网关(通过 REST 接口支持 S3 和 Swift 协议),将 RADOS 中的数据作为对象进行访问。
  • RADOS 还可以使用 RBD 导出块存储设备。 这些块设备可用作虚拟机的磁盘映像。
  • Ceph FS 是在 RADOS 上分层的文件系统。 这使用可跟踪文件系统元数据的特殊元数据节点来实现。 元数据节点通过特殊算法动态地对文件系统树进行分区。 元数据条目还会记录到 RADOS 中以实现容错。