从CAP中,我读到HBase支持一致性和分区容错。 我想知道如何在HBase中实现一致性。是否应用了任何锁?
我在网上查了一下这个没找到好材料。 任何机构都可以就此主题提供任何博客/文章。答案 0 :(得分:4)
对行数据的访问是原子的,包括正在读取或写入的任意数量的列 至。 没有进一步的保证或交易功能跨越多行或 跨表。原子访问是这种架构的一个因素 严格一致,因为每个并发的读者和作者都可以做出安全的假设 关于行的状态。
更新数据时,首先将其写入提交日志,称为预写日志(WAL) 在HBase中,然后存储在(按RowId排序)内存 memstore 中。一旦内存中的数据有了 超过给定的最大值,它将作为 HFile 刷新到磁盘。冲洗后, 提交日志可以丢弃,直到最后一次未刷新的修改。
因此只需要锁定以保护RAM中的行。
答案 1 :(得分:0)
叶夫根尼(Evgeny)提供的答案是正确的,但非常不完整。
与您撰写的内容相反,有很多资源和博客文章以及有关此特定方面的好材料。棘手的部分是汇总单独的信息并进行自己的综合。
HBase在多个级别上处理一致性,您需要了解这些不同级别才能对如何管理进行全面的了解。
HBase它是一个复杂的野兽,给它时间。
您可以先阅读以下内容:读/写路径,时间轴一致的高可用读和区域复制。
https://hbase.apache.org/book.html#arch.timelineconsistent.reads