R01 - 011、HBase 内部是什么机制?
作者:互联网
初学耗时:0.5h
注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。
记忆词:
...
一、HBase 内部是什么机制?
- 在 HBase 中无论是增加新行还是修改已有行,其内部流程都是相同的。
- HBase 接到命令后存下变化信息,或者写入失败抛出异常。
- 默认情况下,执行写入时会写到两个地方:预写式日志(write-ahead log,也称 HLog)和 MemStore。
- HBase 的默认方式是把写入动作记录在这两个地方,以保证数据持久化。
- 只有当这两个地方的变化信息都写入并确认后,才认为写动作完成。
- MemStore 是内存里的写入缓冲区, HBase 中数据在永久写入硬盘之前在这里累积。
- 当MemStore 填满后,其中的数据会刷写到硬盘,生成一个 HFile。 HFile 是 HBase 使用的底层存储格式。
- HFile 对应于列族,一个列族可以有多个 HFile,但一个 HFile 不能存储多个列族的数据。在集群的每个节点上,每个列族有一个 MemStore。
- 大型分布式系统中硬件故障很常见, HBase 也不例外。设想一下,如果 MemStore 还没有刷写,服务器就崩溃了,内存中没有写入硬盘的数据就会丢失。
- HBase 的应对办法是在写动作完成之前先写入 WAL。 HBase 集群中每台服务器维护一个 WAL 来记录发生的变化。WAL 是底层文件系统上的一个文件。
- 直到 WAL 新记录成功写入后,写动作才被认为成功完成。
- 这可以保证 HBase 和支撑它的文件系统满足持久性。
- 大多数情况下, HBase 使用Hadoop 分布式文件系统(HDFS)来作为底层文件系统。
- 如果 HBase 服务器宕机,没有从 MemStore 里刷写到 HFile 的数据将可以通过回放WAL 来恢复。
- 你不需要手工执行。
- Hbase 的内部机制中有恢复流程部分来处理。
- 每台HBase 服务器有一个 WAL,这台服务器上的所有表(和它们的列族)共享这个 WAL。
- 你可能想到,写入时跳过 WAL 应该会提升写性能。
- 但我们不建议禁用 WAL,除非你愿意在出问题时丢失数据。
- 如果你想测试一下,如下代码可以禁用 WAL: 注意:不写入 WAL 会在 RegionServer 故障时增加丢失数据的风险。
- 关闭 WAL,出现故障时 HBase 可能无法恢复数据,没有刷写到硬盘的所有写入数据都会丢失。
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
※ 世间诱惑何其多,坚定始终不动摇。
以下列关于公司制企业说法正确的是
…
A、股东可以直接支配自己入股的那部分资产。
B、企业出现资不抵债时,股东要用自己的全部个人财产来抵偿。
C、所有权与经营权可以相分离。
D、大部分的零售商业、手工业、家庭工业采取这种经营方式。
…
C
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。
我知道我的不足,我也知道你的挑剔,但我就是我,不一样的烟火,谢谢你的指指点点,造就了我的点点滴滴:)!
标签:R01,WAL,列族,写入,011,MemStore,HBase,HFile 来源: https://blog.csdn.net/weixin_42464054/article/details/94555388