这几天一直在看MySQL底层的一些东西,看到最后,越来越觉得MySQL,HBase,HDFS之间有很多相似的地方,所以在这里来记录这些相似之处,和大家一起学习。
1. 预写日志
- 在MySQL Innodb中,有Redo日志和二进制日志。当我们进行数据库更改的时候,更改的操作会记录在Redo日志中,同时也会记录在二进制日志中。Redo日志主要保证了事务的持久性,以后可以通过回放Redo中的修改操作,来进行数据的修复。Redo日志主要记录了对页的物理修改。
- 在HDFS中,如果我们有修改操作的话,首先,我们会通过RPC来访问NameNode,那么这次操作会先记录在Edits Log中,然后在对NameNode 内存中的文件系统或者文件元数据进行修改。这里每次修改操作都会先记录在Edits Log中,然后才会去内存中进行修改操作。
- 在HBase中,有预写日志(WAL),每个RegionServer共享一个WAL,每次进行修改操作的时候,会首先把该操作记录到WAL中去,然后再去memstore中进行数据的修改操作,只有这样,才算一次修改完成。
2. Hadoop HDFS HA(高可用性)和MySQL双主复制
- 我们知道,Hadoop 2.0中HDFS引入了HA(高可用性),即一个集群中有两个NameNode,Active NameNode和StandBy NameNode,只有Active Name