
HBase存储
文章平均质量分 54
HBase的架构、运维实践
杨步涛的博客
老杨,目前居住上海 微信:yangbt_6225080 qq:306591368 擅长云计算、分布式系统设计、docker容器化技术、海量数据的存储、搜索、数据挖掘。
展开
-
关于HBase0.94版本在split region后META Scanner和CatalogJanitor并发操作时存在的问题
我们大家都知道,Hbase Region在达到一定大小的时会自动split为两个daughter region,原创 2013-12-22 11:31:01 · 3864 阅读 · 2 评论 -
HBase0.94在flush操作时候的一个漏洞
基于HBase0.94版本,在高并发写操作时,运行时偶尔出现丢失数据的情况,查看了HBase的日志,出现一下信息,WARN org.apache.hadoop.hbase.regionserver.MemStore: Snapshot called again without clearing previous. Doing nothing. Another ongoing flush or di原创 2013-12-16 22:02:43 · 2528 阅读 · 0 评论 -
总结一下HBase各种级别的锁以及对读写的阻塞
为了保证并发操作时数据的一致性和性能,HBase中应用了各种各样高效的可重入锁,包括行级别的rowlock、mvcc,region级别的读写锁,store级别的读写锁,memstore级别的读写锁等等。1、 行级别的锁RowLockHBase中为了解决行级别在并发操作中的一致性问题,采用了Rowlock机制。保证只有同一个线程同时对该行做操作。当然rowlock有lease租约的概念原创 2013-10-22 16:51:21 · 11587 阅读 · 0 评论 -
HBase源码分析之org.apache.hadoop.hbase.catalog包
org.apache.hadoop.hbase.catalogCatalogTracker:主要是对-ROOT和-META表的跟踪,验证他们的有效性,可以获得到-ROOT和-META region的连接;通过start和stop方法,开启和关闭了对zookeeper中 root-region-server 节点、unassigned节点中的META 表的region的变化的通知跟踪的服原创 2013-04-29 19:32:12 · 2193 阅读 · 0 评论 -
Hbase源码分析之org.apache.hadoop.hbase.client包
Scan:设置scan记录的条件,buffer size,cache size等ResultScanner:提供scan的接口,ClientScaner:客户端 ResultScanner的实现,数据分布在多个region之间的,就依次读取。用法如下: HTableInterface tbl = null; tbl = table.getTable("table原创 2013-04-30 16:27:54 · 3055 阅读 · 0 评论 -
HBase源码分析之org.apache.hadoop.hbase.client.coprocessor包
Endpoint就类似RDBMS里面的Stored procedure了,可以直接在Region Server上执行我们的代码,它主要提供了能够操作单个Region的proxy和操作多个Regions的proxy,这样我们可以做一些sum,count的操作,不用再client端去做(数据量大,client端撑不了)。这里重点说一下Coprocessor。客户端定义Coprocessor接口实现原创 2013-05-01 06:33:40 · 2920 阅读 · 0 评论 -
HBase源码分析之org.apache.hadoop.hbase.coprocessor包
该包下的类主要包括了coprocessor中的Observer和Endpoint, Endpoint在上一个章节已经阐述了,这里主要说一下Obsever。Observer包括MasterObserver,RegionObserver和WALObserver,就类似RDBMS里面的trigger,Observer能够让我们针对Hbase的各种事件(比如put操作、get操作、Region的spl原创 2013-05-15 13:19:59 · 3347 阅读 · 0 评论 -
HBase源码分析之org.apache.hadoop.hbase.executor包
EventHandler:HBase事件处理的基类,在线程池中异步处理ExecutorService:事件处理的线程池服务RegionTransitionData:region transaction时,相关的transation的值存储在zookeeper中的节点上unassigned/regionName。 未完,待续。。。原创 2013-05-15 13:28:57 · 1598 阅读 · 0 评论 -
HBase源码分析之org.apache.hadoop.hbase.filter包
Filter:运行在服务器端, RegionScannerImpl中的nextInternal(int limit)方法中进行调用 private boolean nextInternal(int limit) throws IOException { while (true) { byte [] currentRow = peekRow();原创 2013-05-15 13:30:17 · 2178 阅读 · 0 评论 -
HBase源码分析之org.apache.hadoop.hbase.ipc包
HMasterInterface:client和Master之间的RPC接口HRegionInterface: client和RegionServer之间的RPC接口HMasterRegionInterface: regionServer和Master之间的RPC接口以上三个类是客户端获得的服务端逻辑实现的代理类stubHConnection: zookeeper 集群(HBase原创 2013-05-15 13:35:07 · 2502 阅读 · 0 评论 -
HBase源码分析之org.apache.hadoop.hbase.master包
1、Zookeeperwatcher:在初始化时,把所有的zookeeper上的baseNode下的节点(root-region-server,rs,draining,master,backup-masters,shutdown,unassigned,table,hbaseid,splitlog)都创建了,初始化时不带watch。在适当的时机,对这些节点创建watcher,监控他们的子节点的变原创 2013-05-15 13:44:53 · 2471 阅读 · 2 评论 -
HBase源码分析之org.apache.hadoop.hbase.master.handler包
这个包下的主要是master提供的一些Executor线程池服务,供调用ClosedRegionHandler, 如果表被disabled,删除zk上的unassigned 相关node, 从transition状态中删除;否则分配另外一个server。CreateTableHandler, 在调用master上的接口创建Table时,可以指定splitkey,也可以不指定原创 2013-05-15 13:47:41 · 1886 阅读 · 0 评论 -
HBase源码分析之org.apache.hadoop.hbase.regionserver包
1、Splitpolicy是Region在满足什么条件下,需要split操作,0.94版本中默认是IncreasingToUpperBoundRegionSplitPolicy1)ConstantSizeRegionSplitPolicy,2)KeyPrefixRegionSplitPolicy,3)RegionSplitPolicy,可以在配置文件中指定policy的实现hbase.原创 2013-05-15 15:19:01 · 4301 阅读 · 0 评论 -
zookeeper在hbase中的节点梳理
zookeeper在hbase中的利用梳理相关的节点说明,root-region-server:ROOT表所在的regionserver(HMaster查找root表并分配给一个NodeServer上后,注册在zookeeper上)rs:子节点表示在线的region server(regionserver上线后,注册在rs下面)draining:(HDFS currently原创 2012-12-17 17:14:50 · 3973 阅读 · 0 评论 -
结合源码分析HBase相关操作流程
1、RegionServer打开region的过程: 首先master给regionServer发出打开region的命令(AssignmentManager.assign) RegionOpeningState regionOpenState = ServerManager.sendRegionOpen(plan .getDestinatio原创 2012-12-17 22:02:32 · 2970 阅读 · 0 评论 -
Hbase和solr在海量数据查询中的应用
对于历史数据的查询,在数据规模不大的情况下,可以用传统的关系型数据库,如oracle,mysql等,可以利用他们提供的索引功能,实现高效的查询。但是当数据上升到一定规模后,用传统的关系型数据库就不太合适了,当然可以把数据存到分布式数据库HBase中。HBase目前只支持对rowkey的一级索引,对于二级索引还不支持,当然可以把所有要索引的字段都拼接到rowkey中,根据hbase的filt原创 2012-12-21 20:51:48 · 16762 阅读 · 8 评论 -
HBase的的管理笔记
一、数据移植1、 bulk load toolimporttsv用法:importtsv -Dimporttsv.columns=a,b,c -Dimporttsv.skip.bad.lines=false - fail if encountering an invalid line'-Dimporttsv.separator=|' - eg separate on pi原创 2012-12-21 22:27:24 · 4347 阅读 · 0 评论 -
Hbase的优化总结
Hbase的优化总结 上面这张图不是一太清晰,我后面给个单独的连接 这里的HBase的优化主要从三个大的维度来进行分析1、系统硬件 采用普通的PC Server即可,Master要求高一点(比如8 CPU,48G内存,SAS raid),Regionserver(如8CPU,24G内存,1T*12 SATA JBOD) 对于存储regionserver原创 2012-12-23 17:45:06 · 8918 阅读 · 3 评论 -
关于BlockCache
Blockcache主要是为了提高对storefile的访问效率而增加的内存结构,通过将常访问的数据缓存在内存中来实现。其实hbase中除了常常介绍的lrublockcache以外,还有一种是slabcache。先简单的说明下slabcache。如果对oracle的cache管理比较熟悉的话就很容易理解slabcache,他们的基本原理是相同的。将cache根据不同的slabsize分成若原创 2012-12-23 20:01:16 · 2559 阅读 · 0 评论 -
HBase Coprocessor Endpint运行机制
Observer包括MasterObserver,RegionObserver和WALObserver,就类似RDBMS里面的trigger,Observer能够让我们针对Hbase的各种事件(比如put操作、get操作、Region的split或者是move等等)hook我们的代码,可以让我们的代码在这些事情对应操作之前执行(pre*)还是之后执行(post*),需要注意的就是我们hook的代码原创 2012-12-25 21:41:04 · 1732 阅读 · 0 评论 -
关于HFile的存储结构梳理以及快速定位rowkey
一、HFile结构介绍 为了支持数据的随机查询,HFile结构分为六个部分:1、数据块–保存表中的数据,每一个数据块由块头和一些keyValue(record)组成,key的值是严格按照顺序存储的。块大小默认为64K(由建表时创建cf时指定或者HColumnDescriptor.setBlockSize(size)),这一部分可以压缩存储。在查询数据时,是以数据块为单位从硬盘loa原创 2012-12-29 21:37:58 · 10952 阅读 · 2 评论 -
关于几种压缩算法以及hadoop和hbase中的压缩配置说明
Hadoop中常用的压缩算法有bzip2、gzip、lzo、snappy,其中lzo、snappy需要操作系统安装native库才可以支持下面这张表,是比较官方一点的统计,不同的场合用不同的压缩算法。bzip2和GZIP是比较消耗CPU的,压缩比最高,GZIP不能被分块并行的处理;Snappy和LZO差不多,稍微胜出一点,cpu消耗的比GZIP少。通常情况下,想在CPU和IO之间取得平衡的原创 2013-01-06 22:51:31 · 24095 阅读 · 0 评论 -
关于Hbase客户端和regionserver之间的单连接
利用Hbase的客户端进行Get或者scan操作时,在regionserver端用netstat -anp|grep 60020时,发现每一个Hbase客户端只有一个和该regionserver的连接,无论hbase client是否开启了多个线程进行并发操作。 后来翻了一下源码,果然是这样的。参见下面的源码截图,对同一个目的地的RegionServer来说,connection只有一原创 2013-02-17 17:45:27 · 5445 阅读 · 0 评论 -
HBase的hbase.rpc.timeout参数引起的问题
在高并发压力测试时,发现对一个reginserver做scan操作的时,regionserver中偶尔会输出下面的错误:2013-02-21 09:50:33,328 WARN org.apache.hadoop.ipc.HBaseServer: IPC Server listener on 60020: readAndProcess threw exception java.io原创 2013-02-25 17:32:23 · 15271 阅读 · 1 评论 -
hbase 手动split region的patch
在对Region进行手工split的过程中,出现以下异常./hbase org.apache.hadoop.hbase.util.RegionSplitter -r lsmp_lottery_presplit HexStringSplitException in thread "main" java.lang.IllegalArgumentException: Wrong FS:原创 2013-02-25 17:50:18 · 5487 阅读 · 1 评论 -
HBase在split和major compact的一些非通常情况下的触发条件
HBase中的major compact功能中,参数hbase.hregion.majorcompaction已经设为0了,日志中发现还是会major compact。有3种方式,可以激发major compact1) 通过hbase shell命令 major_compact进行触发2) compact when file 'hbase.hstore.compaction.r原创 2013-03-10 17:51:25 · 11437 阅读 · 3 评论 -
ganglia监控的安装
以前安装过ganglia的监控,过程比较复杂,最近在新的集群环境下部署了监控,这里做个笔记。ganglia监控的架构图如下,相关的原理这里不多说了。1、配置yum的源这里利用公司的yum源,增加wxlab136.repo到/etc/yum.repos.d目录下[Server]name=10.1.1.136#baseurl=ftp://10.1.1.136/pub/P原创 2013-04-13 12:25:46 · 2793 阅读 · 0 评论 -
HBase运维笔记系列
2013-02-22 11:47:06,794 ERROR [STDERR] (http-0.0.0.0-8080-26) 13/02/22 11:47:06 INFO client.HConnectionManager$HConnectionImplementation: This client just lost it's session with ZooKeeper, will automa原创 2013-03-30 20:03:48 · 10227 阅读 · 0 评论 -
基于0.94版本改动client端源码支持HBase分页
平台中有一个场景是要做用户历史订单数据的查询,并且需要支持分页。HBase中目前只支持rowkey一级索引,对二级索引还不太支持,我在以前的blog中提出了一种基于solr+hbase的解决方案 ,下面这种做法是基于HBase的rowkey的设计采用的另外一种方案,这种方案只依赖于HBase,耦合性要小一些。HBase版本是基于0.94,需要在这个版本的基础上对源码做适当的改造,主要是原创 2013-05-16 10:38:53 · 3798 阅读 · 0 评论 -
关于HBase MVCC的设计原理以及MVCC所引起的一个scan问题
最近在使用HBase0.94版本的时,偶尔会出现,HRegionInfo was null or empty in Meta 的警告java.io.IOException: HRegionInfo was null or empty in Meta for writetest, row=lot_let,9399239430349923234234,99999999999999at org.原创 2013-05-31 12:05:31 · 8154 阅读 · 0 评论 -
HBase分页查询性能测试ppt分享
前段时间做的一个HBase分页查询性能压测的分享 http://download.youkuaiyun.com/detail/yangbutao/5806335原创 2013-07-24 11:44:43 · 2457 阅读 · 0 评论 -
分页查询中HBase rowkey在多个查询条件下的设计技巧
以前在设计HBase分页查询时内部分享的一个ppt原创 2013-09-20 20:38:34 · 7567 阅读 · 0 评论 -
HBase培训ppt
以前给研发做的HBase培训的ppt,分享给大家http://download.youkuaiyun.com/download/yangbutao/5206137 从以下角度对HBase进行了分析关系型数据库的在解决海量数据方面的解决方案和缺陷互联网业务的需求Nosql的提出,CAPHBase使用业务场景HBase的特性1)基于列式的高效存储2)强一致的数据访问3)原创 2013-09-28 15:00:48 · 7399 阅读 · 2 评论 -
HBase snapshot分析
HBase以往数据的备份基于distcp或者copyTable等工具,这些备份机制或多或少对当前的online数据读写存在一定的影响,Snapshot提供了一种快速的数据备份方式,无需进行数据copy。参见下图Snapshot包括在线和离线的,在线方式,离线方式是disabletable,由HBase Master遍历HDFS中的table metadata和hfiles,建立原创 2013-10-21 15:46:13 · 7392 阅读 · 2 评论