`
uestzengting
  • 浏览: 96719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hbase WAL原理学习

阅读更多
1.概述
客户端往RegionServer端提交数据的时候,会写WAL日志,只有当WAL日志写成功以后,客户端才会被告诉提交数据成功,如果写WAL失败会告知客户端提交失败,换句话说这其实是一个数据落地的过程。在一个RegionServer上的所有的Region都共享一个HLog,一次数据的提交是先写WAL,再写memstore,示意图如下

2.HLog Class
WAL的实现类是HLog,当一个Region被初始化的时候,一个HLog的实例会作为构造函数的参数传进去。当Region在处理Put、Delete等更新操作时,可以直接使用该共享的HLog的append方法来落地数据。Put、Delete在客户端上可以通过setWriteToWAL(false)方法来关闭该操作的日志,这么做虽然可以提升入库速度,但最好别这么做,因为有数据丢失的风险存在。
HLog的另一个重要功能是跟踪变化,这个通过sequence number来实现。sequence number作为HFile里的一个元数据字段,它用来跟踪哪些日志是已经持久化了的,哪些还在内存中。(注:通过对源码的分析,这种变化因为每个Region是不一样的,所以在HLog的日志里是记录了多条,是针对于每个Region来记录的,把该Region的最后一次持久化的seqId作为一条日志写入HLog,这样,比该seqId小的数据就是已经持久化过的了。)(照这种分析,在HLog replay的过程中,岂不是从后往前replay日志更方便么?有待学习replay的实现方式来验证)


这个图表明同一个RegionServer上的三个Region共享一个HLog,因此当它们写数据时,是把<HLogKey,WALEdit>这个的数据对按顺序混合的写到HLog上的,以获得最好的写入速度。
3.HLogKey Class
WAL现在是通过Hadoop的SequenceFile来存储key/value集合。value简单的存储了来自客户端的数据如row key, column family, column qualifier, timestamp, type, and value;而HLogKey则存储了the region and table name、还有更新时间、sequence number和cluster ID,cluster ID用于将日志复制到集群里的其他机器上。
4.WALEdit Class
来自客户端的更新数据的请求被封装到WALEdit类上。这个类把对row数据的修改原子化。(怎么原子化的还得看源码)
5.LogSyncer Class
Table在创建的时候,有一个参数可以设置,是否每次写Log日志都需要往集群里的其他机器同步一次,默认是每次都同步,同步的开销是比较大的,但不及时同步又可能因为机器宕而丢日志。
Pipeline vs. n-Way Writes
同步的操作现在是通过Pipeline的方式来实现的,Pipeline是指datanode接收数据后,再传给另外一台datanode,是一种串行的方式;n-Way Writes是指多datanode同时接收数据,最慢的一台结束就是整个结束。差别在于一个延迟大,一个并发高,hdfs现在正在开发中,以便可以选择是按Pipeline还是n-Way Writes来实现写操作。
Table如果设置每次不同步,则写操作会被RegionServer缓存,并启动一个LogSyncer线程来定时同步日志,定时时间默认是一秒也可由hbase.regionserver.optionallogflushinterval设置
未完待续
  • 大小: 120.4 KB
  • 大小: 163.1 KB
分享到:
评论

相关推荐

    HBase技术原理

    5. **HBase读写流程**:深入解析数据的写入过程(包括WAL日志、MemStore和HFile)、读取流程以及一致性保证。 6. **HBase查询优化**:如何设计有效的行键以提高查询性能,以及使用Scanners和Filters进行复杂查询。 ...

    HBase完整学习笔记

    【HBase完整学习笔记】 ...理解并掌握HBase的原理和操作,对于从事大数据处理和分析的工程师来说至关重要。通过深入学习HBase,可以有效地利用其特性来优化数据存储和查询性能,提高系统的整体效率。

    Hbase学习资料

    学习HBase,可以从《HBase权威指南》和《HBase实战》这两本书入手,它们分别深入探讨了HBase的设计原理、使用方法以及最佳实践,是理解并掌握HBase的重要资源。通过阅读这些书籍,你可以全面了解HBase的核心特性和...

    hbase-0.94.13 jar和源码

    通过阅读源代码,我们可以深入理解HBase的工作原理,学习其内部的数据模型、数据分布策略、Region分裂和合并、故障恢复机制等核心概念。这对于优化HBase应用性能、解决实际问题以及贡献代码到HBase项目本身都是非常...

    HBASE基础应用的介绍

    #### 五、HBase工作原理 1. **数据写入流程**:客户端提交数据后,首先写入WAL,然后写入MemStore。当MemStore达到一定大小时,数据会被flush到磁盘上的StoreFile。 2. **数据读取流程**:读取数据时,会从最新的...

    Hbase同步数据到Solr的方案

    HBase Indexer的工作原理基于HBase的Replication机制。当HBase中的数据发生变化(如Put或Delete操作)时,这些变更会被记录在WAL(Write-Ahead Log)日志中。随后,后台的复制线程会将这些变更事件发送到Solr,以...

    hbase权威指南 配套源码

    《HBase权威指南》是一本深入探讨分布式列式数据库HBase的专业书籍,其配套源码提供了书中所提及的示例代码...通过学习《HBase权威指南》及其配套源码,开发者能够熟练掌握HBase的使用,为大数据应用开发打下坚实基础。

    HBase大数据技术原理与实践.pptx

    1. **高可靠性**:HBase依赖于HDFS进行数据存储,通过Write-Ahead Log (WAL)确保数据的持久化,即使在服务器宕机的情况下也能恢复数据。此外,它还利用ZooKeeper进行故障检测和恢复,确保高可用性。 2. **高性能**...

    Hbase1.3.1源码

    7. **WAL(Write Ahead Log)**:WAL是HBase的事务日志,确保数据在故障时的持久性。`org.apache.hadoop.hbase.regionserver.wal`包下的类实现了WAL的写入和回放。 8. **Region Split和Merge**:当Region大小达到...

    HBase实战源码

    源码分析是理解HBase工作原理和技术细节的重要途径。HBase在大数据领域扮演着关键角色,它能够处理海量数据并提供实时访问。下面,我们将深入探讨HBase的核心概念和源码中的关键组件。 1. **HBase架构**:HBase基于...

    HBase summit document

    ### HBase概述与核心特性 #### 什么是HBase HBase是一种分布式数据库模型,它基于Google的Bigtable设计。...以上是对HBase的主要特性和架构的简要介绍,希望能帮助您更好地理解HBase的工作原理及其适用场景。

    hbase-0.98.12.1-src.tar.gz

    HBase 0.98.12.1是其历史版本之一,这个版本包含了丰富的功能和改进,对理解HBase的工作原理以及开发基于HBase的应用具有重要价值。 1. **HBase概述** HBase是一种NoSQL数据库,适用于处理海量结构化数据。它的...

    hbase-indexer

    2. **监听数据变更**:HBase-Indexer通过HBase的WAL(Write-Ahead Log)或者ZooKeeper监控数据变化。 3. **索引构建**:当检测到数据变更时,HBase-Indexer将变更数据转换为Solr文档,并提交到Solr索引。 4. **查询...

    关系型数据库的数据导入Hbase

    关系型数据库(如MySQL、Oracle、SQL Server等)与非关系型数据库(如Hbase)在数据存储和处理上有着显著的...理解这些工具的工作原理和使用方法,能够帮助我们更好地进行数据迁移,充分利用Hbase的大数据处理能力。

    HBase 应用平台 Replication 功能

    本文将深入探讨HBase的复制机制,包括其原理、配置和应用场景。 1. **Replication原理** HBase的Replication功能允许在一个集群(称为来源集群)中的RegionServer将变更复制到另一个集群(称为目标集群)。这种...

    hbase从入门到编程 - 文档.pdf

    #### 二、HBase原理详解 **1. 存储模型**: - **RowKey**: 表中的每一行都有一个唯一的行键(row key),用于索引行数据。 - **列族(Column Family)**: 列被组织成列族,同一列族下的列物理上存储在一起。 - **版本...

    最近很火的大数据Hadoop之Hbase0.99.2最新版源码

    《深入解析Hadoop之HBase 0.99.2源码分析》 在当今的信息化社会,大数据处理已经成为企业核心竞争力的关键要素...通过对这些源码的深入学习,开发者不仅能掌握HBase的工作原理,还能为自己的项目提供有力的技术支持。

    HBase中常用的Shell命令

    - 当向HBase写入数据时,变化信息会被记录下来,并写入预写式日志(Write-Ahead Log, WAL)和内存中的MemStore,以确保数据的持久性。当MemStore达到一定阈值时,其内容会被刷新到磁盘上,生成一个新的HFile。 - ...

Global site tag (gtag.js) - Google Analytics