GFS、Bigtable、MapReduce的关系
GFS(Google File System)使Google的分布式文件系统,Bigtable也是构建在GFS之上的,MapReduce也需要利用GFS作为数据的输入和输出。
Bigtable是什么Bigtable是分布式表格系统,表格由很多行组成,每行通过一个rowkey唯一标识,每行包含很多列,多个列组成列族。列族是访问控制的基本单元。Bigtable构建在GFS之上,并且依赖于Goole的Chubby进行服务器的选举和全局信息的维护。
读写当有客户端向 发送写操作时,它会先向 tablet log追加一条记录,在日志成功追加之后再向 memtable 中插入该条记录,写比较方便。
当有客户端进行读操作时,会在 memtable 和 SSTable 上进行合并查找。读就比较复杂了,还需要确认数据在哪里,当然这里会使用很多优化的方法,比如缓存数据,使用Bloom lters快速确认数据是不是存在一个SSTable里。
memtable和SSTable中的数据都是有序的,SSTable是由memtable生成的,当memtable达到一定量时,就会被冻结,新的memtable就会被生成,被冻结的memtable就会转化成SSTable,并写入到GFS上。
LevelDB 是对Bigtable 论文中描述的键值存储系统的实现,并且由 Bigtable 的作者 Jeff Dean 和 Sanjay Ghemawat 共同完成,可以参考下LevelDB的实现。
总结了解Bigtable,需要了解下LSM树,现在的数据存储引擎一般就是哈希、B树、LSM树。像我们使用的mysql的InnoDB存储引擎就是B+树。
希望对你有所帮助,有帮助记得点赞哦!可以关注下,后面持续分享架构和Java的文章,谢谢!Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有