Replication核心原理 hbase.replication.source.service 配置说明了使用哪个类来作为 Hbase 的 Replication 实现类。...hbase.replication.source.service 这个默认配置实现就是 org.apache.hadoop.hbase.replication.regionserver.Replication...ReplicationTracker 主要用于跟踪 Zookeeper 中 /hbase/replication 中 znode 的状态,Hbase 的 Replication 是通过 zk 来协助完成的...用于监控 Hbase Replication。...很可能是考虑到了性能方面的影响,Hbase 的Replication 方案是异步传输。
作者:熊训德 腾讯云工程师 本文档从源码角度分析了,hbase 作为 dfs client 写入hdfs 的 hadoop sequence 文件最终刷盘落地的过程。...之前在《wal线程模型源码分析》中描述wal的写过程时说过会写入hadoop sequence文件,hbase为了保证数据的安全性,一般都是写入同为hadoop生态的hdfs(Hadoop Distribute...都不仅仅是简单的写入或刷入(flush)了真正的存储节点--DataNode中,其中涉及到数据流(WALEntry)如何安全有序且高效地写到datanode文件中,而flush又是具体如何做的,这个文档就将从源码上分析...分析到这,已经可以看出hbase文件写入hdfs的过程并没有特别,hdfs就把hbase当做hdfs的client然后封装成chunk再组装成packet,再向datanode批量写数据。...相关推荐 Hbase WAL线程模型源码分析 HBase跨版本数据迁移总结 Hbase的WAL在RegionServer基本调用过程
作者介绍:熊训德 腾讯云工程师 Hbase 的 WAL 机制是保证 hbase 使用 lsm 树存储模型把随机写转化成顺序写,并从内存 read 数据,从而提高大规模读写效率的关键一环。...源码分析 下面将从源码角度分析其中具体实现过程和细节。...Disruptor通过 java.util.concurrent.ExecutorService 提供的线程来触发 Consumer 的事件处理,可以看到hbase的wal中只启了一个线程,从源码注释中也可以看到...小结 Hbase的WAL机制是保证hbase使用lsm树存储模型把随机写转化成顺序写,并从内存read数据,从而提高大规模读写效率的关键一环。...wal的多生产者单消费者的线程模型让wal的写入变得安全而高效,本文档从源码入手分析了其线程模型为以后更好开发和研究hbase其他相关知识奠定基础。
compactionChecker用于周期性地检查当前是否有compact请求,实现类是ScheduledChore检查周期由参数threadWakeFrequency控制,默认值是10s,也可以在参数hbase.server.thread.frequency...compactionChecker实现类是CompactionChecker,其继承了ScheduledChore,在之前已经分析过,这个类通过实现chore方法而实现周期性的调用,其初始化是在initializeThreads...从chore方法中可以直观的看到major compact是通过isMajorCompaction()方法判断的这是很多判断条件的合成,其中最为重要的一个是hbase.hregion.majorcompaction...因此,通过设置hbase.hregion.majorcompaction = 0可以关闭CompactionChecke触发的major compaction,但是无法关闭用户调用级别的majorcompact
导语 本文档主要从源码的角度分析了,hbase的写缓存的读写以及flush过程。...因为在分析wal的过程中已经把写分析的比较详尽了,而因为memstore是内存结构读的过程比较简单,本文档概要说明memstore的读写,着重分析flush过程。...hbase的mvcc机制将结合行锁在后面的hbase效率的源码分析中具体分析。可先参考: http://m.blog.csdn.net/article/details?...》P327 http://hbasefly.com/2016/04/26/hbase-blockcache-2/ 接下来分析本文档的重点: Flush的角度 从memstore刷写时机(上一篇文档着重叙述...至此,memstore的读写已经刷入源码分析就结束了,可以看到memstore作为hbase写缓存为了实现快速顺序写做出的设计努力。下一篇文档将分析哪些情况下memstore会被刷写。
问题分析 思路:分离读写scan请求,各种处理各自的 源码内部 WriteQueues; Queues; ScanQueues; 优化参数 hbase.regionserver.handler.count...线上:0.6 hbase.ipc.server.call.queue.scan.ratio:默认为0,服务器端为了将get和scan隔离设置了该参数。...线上:0.1 hbase.ipc.server.call.queue.scan.ratio 默认0 scan请求直接打入read队列长时间不释放,导致正常read超时告警 源码理解 HRegionServer...使用的随机策咯getNextQueue.ThreadLocalRandom.current().nextInt(queueSize) 问题复现: 可以使用阿里的arthas进行regionserver的线程状态分析...hbase.ipc.server.callqueue.handler.factor) = 10,读写请求队列总个数 写队列个数 10 x 0.5hbase.ipc.server.callqueue.read.ratio
有关不同Policy的算法性能影响及适合场景可参考文章: http://hbasefly.com/2016/07/25/hbase-compaction-2/ hbase1.1.3版本使用的实现类是RatioBasedCompactionPolicy...: 下面,从chore方法中开始分析 compactor的过程,从chore方法中可以看到minor compact将调用compactSplitThread的requestSystemCompaction...requestCompaction方法,但这两个方法都会调用CompactSplitThread的requestCompactionInternal方法: 这个是requestCompactionInternal方法原型: 从源码中可以看到....执行后置listerner 选择文件的方法是利用滑动窗口把最多的小文件进行合并,可参考http://www.cnblogs.com/cenyuhai/p/3746473.html:,本文档将着重分析在...2016/07/25/hbase-compaction-2/
分析版本为hbase 0.94 附上趋势团队画的图: rpc角色表: HBase通信信道 HBase的通信接口 客户端 服务端 HBase Client Master Server HMasterInterface...HBase Client Region Server HRegionInterface Region Server Master Server HMasterRegionInterface...StoreFileScanner和 memStoreScanner 进行scan时 scanner = getScanner(scan); scanner.next(results); 现在分析...regionServer -> region -> storeHeap -> scanner -> find row 但上述流程没有解释reguest是怎么找到regionServer去处理请求的,下边我们在分析下...HMaster的 handlers的个数由hbase.master.handler.count HRegionServer的 handlers的个数由 hbase.regionserver.handler.count
一,基本功能介绍 -root-表在HBase 0.9.6以后的版本被移除了。...Hbase 0.9.6以后,移除了-root-表,用hbase:meta表代替了.meta表,hbase:meta表存的位置直接存储于Zookeeper上。...info:server:存储hbase:meta表的regionserver的server:port info:serverstartcode:该Regionserver拥用hbase:meta表的起始时间...Hbase:meta所在的regionserver宕机后会重新分配给其它的regionserver。每次修改都会更新RS的wal的。 2,hbase:meta和用户region信息不一致怎么处理。...A),hbase提供的有修复指令。 B),可以根据源码去实现自己的修补指令。 元数据和用户实际的表信息不一致是很常见的现象,所以这两点后面会详细介绍。
hbase的源码终于搞一个段落了,在接下来的一个月,着重于把看过的源码提炼一下,对一些有意思的主题进行分享一下。...现在我们讲一下HTable吧,为什么讲HTable,因为这是我们最常见的一个类,这是我们对hbase中数据的操作的入口。 1.Put操作 下面是一个很简单往hbase插入一条记录的例子。...//自己处理去吧... } 这个是带正则表达式的模糊查询的scan查询,Scan这个类是包括我们查询所有需要的参数,batch和caching的设置,在我的另外一篇文章里面有写《hbase
使用hbase的目的是为了海量数据的随机读写,但是在实际使用中却发现针对随机读的优化和gc是一个很大的问题,而且hbase的数据是存储在Hdfs,而Hdfs是面向流失数据访问进行设计的,就难免带来效率的下降...2011),最近他们在存储领域顶级会议FAST2014上发表了一篇论文《Analysis of HDFS Under HBase: A Facebook Messages Case Study》分析了他们在使用...HBase中遇到的一些问题和解决方案。...该论文首先讲了Facebook的分析方法包括tracing/analysis/simulation,FM系统的架构和文件与数据构成等,接下来开始分析FM系统在性能方面的一些问题,并提出了解决方案。...注:关于拿Flash/SSD做cache,可以参考HBase BucketBlockCache(HBASE-7404) ?
HFile概述 HFile是HBase中实际存数据的文件,为HBase提供高效快速的数据访问。它是基于Hadoop的TFile,模仿Google Bigtable 架构中的SSTable格式。...,先从入口看起,那就是StoreFile.Writer的append方法,先看怎么写入的,然后它就怎么读了,不知道怎么使用这个类的,可以看看我写的这篇文章《非mapreduce生成Hfile,然后导入hbase...Path hfilePath = getRelativeTablePath(path); this.tempPath = new Path(new Path(rootDir, HConstants.HBASE_TEMP_DIRECTORY
在讲源码之前,先说一下它的分类和作用。...先说一下怎么使用吧,下面分别是它们是shell命令,可以在hbase的shell里面执行。...1、创建CompactionContext 2、判断是否是非高峰时间,下面是这两个参数的值 int startHour = conf.getInt("hbase.offpeak.start.hour",...hbase.hstore.compaction.ratio 高峰时段,默认值是1.2 hbase.hstore.compaction.ratio.offpeak 非高峰时段...咱们可以将它这个参数hbase.hstore.blockingStoreFiles设置得大一些,弄出来一个比较大的数字。 Split 好,我们接着看requestSplit。
二,源码相关的重要类 1,HTable 重点是Hbase类初始化的时候提交的请求的任务的线程池的初始化 HConnectionImplementation的getThreadPool方法。...三,scan的源码实现 Scan的源码实现过程,主要是帮助大家更好的阅读源码。...其实,应该关注点比较多,贴源码比较累赘,我这是大致骨架都有了,大家可以根据这个骨架结合源码去看,节省时间。...2,对于filter的使用,请大家先参考hbase权威指南,后面浪尖再接个各个filter和源码讲解。...对于hbase 1.0.0,列举以下几种,方便大家自己去阅读相关源码。
单个BufferedMutator也能够很高效用于大数据量的在线系统,来成批的写puts入hbase表。...catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 三,源码介绍...runnable = Trace.wrap(traceText, runnable); toReturn.add(runnable); 进入SingleServerRequestRunnable,分析其...四,总结 Hbase的JAVA API客户端,写操作有三种实现: 1,HTablePool 源码请看hbase权威指南。 ? 2,HConnection 这种方式要自己实现一个线程池。...客户端读写数据的操作,我们就讲这两篇,后面开始讲HBase的MR建立二级索引的实现及原理源码。然后就开始讲解管理类操作的实现。
它就想是给数据库做备份,尤其是做删除动作之前,不管是hbase还是hdfs,请经常做Snapshot,否则哪天手贱了。。。 直接进入主题吧,上代码。...这个方法里面也没干啥,就是检查一下是否可以对这个表做备份或者恢复的操作,然后就会重建这个工作目录,这个工作目录在.hbase-snapshot/.tmps下面,每个snapshot都有自己的目录。 ...MemStore当中保存的是KeyValue的集合,写入其实就是一个循环,调用StoreFile.Writer的append方法追加,具体的可以看我的那篇博客《非mapreduce生成Hfile,然后导入hbase...IOException("Failed to create reference file:" + referenceFile); } } } } 在工作目录在.hbase-snapshot...这个要到下一章,从snapshot中恢复,才能弄明白了,这个和hbase的归档文件机制有关系,hbase删除文件的时候,不是直接删除,而是把它先放入archive文件夹内。
看源码很久了,终于开始动手写博客了,为什么是先写负载均衡呢,因为一个室友入职新公司了,然后他们遇到这方面的问题,某些机器的硬盘使用明显比别的机器要多,每次用hadoop做完负载均衡,很快又变回来了。...0) { return 0; } return Math.max(0d, Math.min(1d, (value - min) / max)); } 经过分析吧...hbase.master.balancer.stochastic.moveCost,默认值是100 localityCost hbase.master.balancer.stochastic.localityCost...hbase.master.balancer.stochastic.readRequestCost,默认值是5 WriteRequestCostFunction hbase.master.balancer.stochastic.writeRequestCost...根据虚拟的集群状态生成RegionPlan,这里就不说了 List plans = createRegionPlans(cluster); 源码的分析完毕,要想减少存储内容分布不均匀
本篇博客,小菌为大家带来的是关于HBase底层原理的讲解! 先上HBase的系统架构图 系统架构 ? 是不是看的N脸懵圈 ?...不用担心,相信看了我下面的细化分析,肯定能让你恍然大悟~ HBase主要分为以下几个部分组成: Client: 也就是我们所谓的"客户端",Client作为访问数据的入口,包含访问...hbase的API接口,维护着一些cache(高速缓存存储器)来加快hbase的访问。...HBase的表数据模型 ? Row Key 与nosql数据库们一样,row key是用来检索记录的主键。...Data Block是HBase I/O的基本单元,为了提高效率,HRegionServer中有基于LRU的Block Cache机制。
四个部分分析: 案例场景 流程解析 0.94-0.96实现方案分析 模拟试验及分析 一、案例场景 转发微博 抱歉,此微博已被作者删除。...分析这个问题前我们先要了解HBase 如何保证写一致性: 冲突预防:避免分布式的并发写操作,将对特定数据项的所有写操作路由到单个节点上(可以是全局主节点或者分区主节点)。...另外也去掉了client端无用的分配lockid方法 四、模拟试验及分析 构造模拟代码 HBaseInsertTest1类, TestKeyValueSkipListSet为提取 HBase的KeyValueSkipListSet...作为公有类,存储数据使用 package com.daodao.hbase; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.regionserver.MultiVersionConsistencyControl...p=16 MVCC分析也可以对比阅读一下。
领取专属 10元无门槛券
手把手带您无忧上云