发布于

OushuDB学习心得

复习第二章的第七节 Magma 和第二章的第九节
一、Magma
Magma 它是存储,它是分布式的,高可用的,支持事务的。尽管 OushuDB 的数据可以存储在 HDFS,但 HDFS 只支持以追加的方式写入,对表数据的更新和删除操作很不友好,因此我们开发了 Magma。
1、作为存储,Magma 存储的数据是表数据,是结构化数据,不是简单的 KV。
2、Magma 支持对表数据做更新和删除操作。
3、它的高可用是通过 Raft 的协议数据复制来实现的。
4、它的事务特性是通过多版本来实现的。
5、它的高性能的是通过行列混合的存储格式来支持 OLAP 高性能查询。
6、它提供了数据索引功能,可以建立主键索引和非主键索引。
7、作为分布式的存储,它整合数据预处理技术,提供了便捷的集群扩展、集群容错以及负载均衡。
总结 Magma 的功能,主要包括数据分布、数据清理、事务模型、索引、数据副本、负载均衡。
二、HDFS
HDFS 是如何保证存储的高可用性呢?我们尝试从不同层面来讨论一下 HDFS 的高可用设计。

  1. 数据存储故障容错磁盘介质在存储过程中受环境或者老化影响,其存储的数据可能会出现错乱。HDFS 的应对措施是,对于存储在 DataNode 上的数据块,计算并存储校验和(CheckSum)。在读取数据的时候,重新计算读取出来的数据的校验和,如果校验不正确就抛出异常,应用程序捕获异常后就到其他 DataNode 上读取备份数据。
  2. 磁盘故障容错如果 DataNode 监测到本机的某块磁盘损坏,就将该块磁盘上存储的所有 BlockID 报告给 NameNode,NameNode 检查这些数据块还在哪些 DataNode 上有备份,通知相应的 DataNode 服务器将对应的数据块复制到其他服务器上,以保证数据块的备份数满足要求。
    3.DataNode 故障容错 DataNode 会通过心跳和 NameNode 保持通信,如果 DataNode 超时未发送心跳,NameNode 就会认为这个 DataNode 已经宕机失效,立即查找这个 DataNode 上存储的数据块有哪些,以及这些数据块还存储在哪些服务器上,随后通知这些服务器再复制一份数据块到其他服务器上,保证 HDFS 存储的数据块备份数符合用户设置的数目,即使再出现服务器宕机,也不会丢失数据。
    4.NameNode 故障容错 NameNode 是整个 HDFS 的核心,记录着 HDFS 文件分配表信息,所有的文件路径和数据块存储信息都保存在 NameNode,如果 NameNode 故障,整个 HDFS 系统集群都无法使用;如果 NameNode 上记录的数据丢失,整个集群所有 DataNode 存储的数据也就没用了。所以,NameNode 高可用容错能力非常重要。NameNode 采用主从热备的方式提供高可用服务。
    今天分享一篇 OushuDB 优质内容,欢迎大家来学习点赞
评论
    test