hbase
文章平均质量分 76
bryceforphy
大家好,我毕业于ZJU,现在是从事于互联网行业的码农一枚,平时对大数据、分布式系统等方面感兴趣,希望能够在这里与大家彼此交流,共同提高。追求知识的道路上,进一步有一步的欢喜。微博@不睡觉的时候会困,谢谢。
展开
-
HBase连接池技术
先看官方文档的总体描述:hbase有两种获得connection的方法,分别是如下两种: Connection connection = ConnectionFactory.createConnection(conf); Connection connection = HConnectionManager.createConnection(conf);原创 2016-04-26 21:42:59 · 24569 阅读 · 5 评论 -
高可用Hdfs&HBase配置实践
首先介绍版本背景,hdfs为2.7.1,hbase为1.3.0,其它版本的配置可能存在变化。HDFS相关配置:dfs.datanode.synconclose 设为true,当为false时,系统重启或断电时有可能数据丢失,默认值是falsedfs.datanode.sync.behind.writes=FALSE 如果是true,写之后,DN将指示操作系统把队列中的数据全部立原创 2017-03-28 22:24:46 · 5992 阅读 · 0 评论 -
HBase Replication源码解析之HLog读取
本文分析了HBase Replication中的源码实现,主要针对Replication中hlog的读取模块进行了分析,通过本文读者可以了解hlog读取所使用到的类以及其处理流程原创 2016-07-21 14:14:49 · 2445 阅读 · 0 评论 -
HBase&HDFS异构存储的使用&简单介绍
使用方式:首先,开启hdfs异构存储策略,配置项是——dfs.storage.policy.enabled,该配置默认是开启的(true);第二步,需要将机器物理硬件上已经部署好的磁盘配置添加到hdfs的配置项dfs.datanode.data.dir中,需要注意的对于SSD盘或者RAM_DISK需要打上特殊的标记,类似[SSD]、[RAM_DISK],配置示例如下:原创 2017-04-22 12:14:23 · 6418 阅读 · 1 评论 -
hbase零碎小记
1)hbase表查行可以在shell中进行,命令如下:count ’tablename’,CACHE=>10000,INTERVAL=>10000CACHE是客户端缓存条数,INTERVAL是分隔多久显示一次结果上述方法实现是走scan客户端完成,一旦表较大,查起来很慢。另外一种方式如下: bin/hbase org.apac原创 2016-10-27 11:17:41 · 4691 阅读 · 0 评论 -
HBase的Scan实现源码分析
我们从接口InternalScanner开始分析,实现该接口的类表示其是使用于HBase内部的scanner,不暴露给客户端使用。实现了这个接口的类如下所示:KeyValueHeap、StoreScanner、RegionScanner下面再看KeyValueScanner,KeyValueScanner也是一个接口,它是一个可以向外迭代出KeyValue的scanner。它定义的原创 2016-09-23 16:53:02 · 4898 阅读 · 0 评论 -
HBase的权限控制
HBase自带的权限管理工具:HBase的权限管理包括两个部分,分别是Authentication&AuthorizationAuthentication:针对某host是否有权成为集群的regionserver或者client端;Authorization:是针对client端对集群数据的读写等权限;其中Authentication由kerberos提供解决方原创 2017-08-27 10:33:45 · 6951 阅读 · 0 评论 -
使用YCSB对HBase进行压测
(一)YCSB介绍:YCSB,全称为“Yahoo!Cloud Serving Benchmark”。是雅虎开发的用来对云服务进行基础测试的工具,其内部涵盖了常见的NoSQL数据库产品,如Cassandra、MongoDB、HBase、Redis等等。在运行YCSB的时候,可以配置不同的workload和DB,也可以指定线程数&并发数等其他参数。(二)使用姿势:以最常见的HBas原创 2016-04-26 21:22:02 · 7305 阅读 · 1 评论 -
HBase Split流程源码分析
本文主要分析hbase split的核心流程,HBase split的主要操作在SplitTransactionImpl.java中。1、所有的split请求被包装成SplitRequest对象,该对象会被放入到队列中,由HRegionServer持有,在HRegionServer中有一个CompactSplitThread对象,所有compact/split相关的线程由该对象管理;2、进原创 2016-12-20 18:04:18 · 2028 阅读 · 0 评论 -
HBase PerformanceEvaluation机制分析
本文我们来分析一下hbase自带的测试工具——performanceEvaluation。该工具是hbase自带的性能压测工具,基本原因是是用多线程模拟多用户同时访问集群的情况。运行hbase org.apache.hadoop.hbase.PerformanceEvaluation,可以看到关于performanceEvaluation的用法介绍,如下图中所示:介原创 2017-09-09 08:47:51 · 3670 阅读 · 1 评论 -
HBase Replication的源码解析
Replication的类结构:replication的类结构包括了ReplicationSource、ReplicationSourceManager和ReplicationSink、ReplicationSinkManger以及ReplicationEndpoint五部分组成。ReplicationSource是源端负责读取wal entry的对象,每个RegionServer对应每个pee...原创 2018-02-24 22:44:19 · 1312 阅读 · 0 评论 -
HBase高级优化配置
hbase.regionserver.optionalcacheflushinterval默认是1hour,regionserver每个region上的memstore会每个小时flush一次,这也是flush的触发条件之一,代码在PeriodicMemstoreFlusher中 hbase.regionserver.regionSplitLimit一个regionserver上的...原创 2018-08-24 11:47:50 · 1616 阅读 · 0 评论 -
HBase限流机制源码分析
master启动的时候会初始化MasterQuotaManager,并启动该manager;MasterQuotaManager实现了RegionStateListener接口,可以监听region的状态变化,RegionStateListener接口中定义了三个事件,分别是onRegionSplit,onRegionSplitReverted,onRegionMerged。MasterQ...原创 2018-09-09 13:27:33 · 1764 阅读 · 0 评论 -
HBase因hostname可能引起的RIT问题
HBase的RegionServer会将自己的hostname上报到zookeeper,客户端连接zookeeper时,获取的是regionserver的hostname,再由hostname获得regionserver的ip地址。基于hbase的这种名称上报机制,客户端连接hbase时,需要能够ping通hbase的hostname,但是如果把hbase的hostname分发到所有的服务器上,毕...原创 2018-10-19 16:03:40 · 3195 阅读 · 0 评论 -
openTSDB的安装部署
首先openTSDB以root用户安装,安装前需要确认HBase集群已安装完毕,并且JAVA_HOME也已设置,并且安装gnuplot(yum install gnuplot);1、从官网上下载相应版本的openTSDB安装文件,并解压该文件,并执行编译:tar -xvf opentsdb-2.2.2.tarcd opentsdb-2.2.2.tar./build.sh2、执行...原创 2018-10-19 16:24:33 · 2346 阅读 · 0 评论 -
HBase Replication的源码分析
在HRegionServer中有两个量和replication相关,如下图所示:在ReplicationSourceService中只有一个方法getWALActionsListener,该方法返回WALActionsListener。ReplicationSinkService同样也是一个接口类,它有一个方法replicateLogEntries。在HRegionServer的如下代码段...原创 2018-10-19 17:05:29 · 880 阅读 · 0 评论 -
事件驱动的HLog写入模型
WALFactory:分析HLog的写入首先要从WALFactory开始,WALFactory是一个管理wal的工厂实例,WALFactory中提供了两个接口createReader&createWriter,分别实现了对wal文件的读和写,其实这两个读写接口也是由DefaultWALProvider提供的。HRegionServer中管理着一个WALFactory变量,定义的格式如下:原创 2017-03-11 17:10:46 · 3138 阅读 · 0 评论 -
HBase BlockCache机制讲解&源码分析
HBase上RegionServer的cache主要分为两个部分,分别是memstore&blockcache,其中memstore主要用于写缓存,而blockcache用于读缓存。当数据写入hbase时,会先写入memstore,RegionServer会给每个region提供一个memstore,memstore中的数据达到系统设置的水位值后,会触发flush将memstore中的数据刷写原创 2017-03-18 15:36:36 · 9328 阅读 · 7 评论 -
HBase源码之Compaction的执行策略分析
HBase的Compaction操作一般都是表粒度的,该操作会将合并HStore下的storefile文件,具体应该合并哪些storefile文件则是由compaction的筛选算法决定的。基本的调用逻辑是用户的compactRequest一步步向下传递,最终传入HStore中的requestCompaction()方法里。也就是说compaction请求最终送到了该表相关的各个HStore,原创 2017-02-26 17:00:06 · 3654 阅读 · 0 评论 -
HBase WebUI上的数据从哪里来
HBase的Web页面使用了一个jamon的模板语言。Jamon是一个java文本模板引擎,用于生成动态HTML、XML或任何基于文本的内容。它有一个丰富的功能集,支持封装、参数化、功能分解、表达逻辑重用。模板声明它们要求生成的参数,包括动态模板内容(“fragments”),并被翻译成带有公有方法的java类,它的符号反应了在模板中声明的参数。HBase WebUI涉及到原创 2016-05-10 22:44:54 · 5976 阅读 · 3 评论 -
一个HBase客户端超时问题的排查
最近处理了一个客户端scan超时问题,记录在此,希望能够帮助到遇到同样问题的同学。问题的错误堆栈如下面所示:java.lang.RuntimeException: org.apache.hadoop.hbase.client.ScannerTimeoutException: 76745ms passed since the last invocation, timeout is c原创 2016-05-26 09:52:37 · 11777 阅读 · 0 评论 -
HBase2.0的可用性与一致性
HBase在2.0.0版本之后在可用性上进行了发展,具体原理如下图所示:由上图可知,region将不再只保存在某一单独的regionserver上,而是选择其他的两个regionserver分别存储该region 的两个备份,这样,某台regionserver挂掉时,客户端仍然可以从其它regionserver上备份的region中读到数据,如此保证了hbase的读高可用,原创 2016-04-21 17:18:19 · 6803 阅读 · 3 评论 -
HBase的RPC源码分析
RPC服务是指跨网络的服务调用,客户端发出服务请求,经过网络传输到服务端。服务端解析该请求,调用本地方法获取结果,然后将结果作为响应包通过网络发送回客户端,这样客户端在调用远程方法时就会像调用本地方法一样简单。RPC调用时有两个问题需要解决,其一是client端与server端采用何种方式通信,其二是请求信息和结果以何种格式在网络上传输,也就是RPC通信协议和RPC通信框架。本文详解hbase的rpc机制在客户端的源码实现。原创 2016-06-26 12:42:43 · 2855 阅读 · 0 评论 -
基于Reactor模式的HBase服务端请求处理分析
本文介绍了基于Reactor模型的hbase服务端rpc实现,分析了其主要源代码,梳理了调用过程中的主要逻辑和涉及到的主要组件原创 2016-07-03 16:10:51 · 1337 阅读 · 0 评论 -
HBase Increment(计数器)简介及性能测试
HBase Increment(计数器)简介及性能测试转载 2016-07-04 18:08:27 · 9511 阅读 · 0 评论 -
一次spark写入hbase延时问题的排查
总结一下工作中遇到一次spark写入hbase的超时问题。业务场景是将kafka等数据源采集上来的用户日志数据经spark汇聚到hbase,然后再读出来供排序、算法评分等业务使用。先前使用时并未出现超时问题,但最近突然就出现了写入超时,下图中是spark任务调度ui页面,可以看出多个写入任务的时延明显增长。最一开始是怀疑hbase集群出现问题,于是查找各个regionser原创 2016-06-19 10:25:54 · 5726 阅读 · 0 评论 -
HBase Canary源码解析
本文来简单介绍一下hbase提供的一个探测工具Canary,它可用于探测失败或者延迟的region或者regionserver。介绍了Canary的源码实现,以及实现中涉及到的相关知识点。原创 2016-07-06 11:40:58 · 1093 阅读 · 0 评论 -
HBase StoreFile的实现分析
StoreFile是hbase中的数据文件,HBase中memestore的每次flush都会形成一个storefile文件。我们知道HBase中的数据索引是按照LSM tree组织起来的,简单来说,LSM tree就是一系列的B+ tree组织起来,对应着每个storefile就是一棵B+ tree。本文主要分析StoreFile中的Reader和Writer的实现,并简要分析storefile中数据是如何组织成一个B+ tree,欢迎大家一起讨论学习,本文长期更新。原创 2016-08-09 14:36:50 · 6328 阅读 · 0 评论 -
hbase的admin可用api汇总
hbase的admin接口提供了一系列可以获得集群访问状态的api,如果是做hbase的集群监控系统,通过这些api或许可以帮你获得关于当前集群访问情况的数据,并简单介绍这些api返回的信息和一些使用姿势。admin.listTableNames():返回集群的table列表admin.getClusterStatus():返回一个ClusterStatus类,该类描述了集群整体的一些状态原创 2016-10-27 23:27:03 · 4077 阅读 · 0 评论 -
HBase的put流程源码分析
hbase是一个nosql型数据库,本文我们会分析一下客户的数据是通过什么样的路径写入到hbase的。HBase作为一种列族数据库,其将相关性较高的列聚合成一个列族单元,不同的列族单元物理上存储在不同的文件(HFile)内。一个表的数据会水平切割成不同的region分布在集群中不同的regionserver上。客户端访问集群时会首先得到该表的region在集群中的分布,之后的数据交换由客户端和原创 2016-04-29 10:32:59 · 11039 阅读 · 0 评论 -
java并发包在hbase&hadoop中的应用
HBase保证了行级事务,也就是说保证行级数据的ACID属性,为了实现上述的事务属性同时保持数据库读写的高性能,HBase采用了各种并发控制策略。本文从常用的Java并发工具入手,并分析它们在hbase中的使用,一者对Java的并发工具包有更深刻的理解,其次对HBase的并发控制机制有更清晰的认识。CountDownLatch:CountDownLatch是在jdk1.5中引入的,这个类能原创 2017-01-04 18:56:12 · 796 阅读 · 0 评论 -
HBase的compact流程分析
关于hbase的compact意义及其应用背景已经有很多文章做了描述,这里不再赘述,本文以1.1.2背景的hbase为例,从源码中分析hbase中compact请求发出到接受处理的流程,限于作者水平有限,分析中可能有疏漏或者错误的地方,希望大家指正,一起学习提高。从regionserver开始分析compact的流程,regionserver初始化的时候会初始化两个与compact相关的线程分原创 2016-12-20 14:06:16 · 6412 阅读 · 0 评论 -
HBase中MemStore flush的源码解析
flush请求的发出:HRegion会调用requestFlush()触发flush行为,flush发生在每一处region可能发生变化的地方,包括region有新数据写入,客户端调用了put/increment/batchMutate等接口。hbase.hregion.memstore.block.multiplier是个乘数因子,默认值是4,该值会乘上hbase.hregion.mem原创 2017-01-09 19:05:57 · 2870 阅读 · 1 评论 -
租约机制以及在hbase中的应用
为什么需要Lease分布式系统中为什么需要租约机制,这是因为在分布式系统,为了保证服务的高可用,需要在服务发生故障的时候及时启动另外一个服务实例以替换故障服务。这样就需要在服务端和客户端或者服务端和控制中心维持一个心跳信息,用于服务进程向控制中心汇报当前自己的健康情况,如果控制中心在一段时间收不到服务进程上报的心跳,则会启动新的进程继续对外提供服务。但是,由于实际网络情况的复杂性,控制中心原创 2017-02-18 18:00:11 · 2234 阅读 · 0 评论 -
HBase集群间不停服迁移数据
基本思路就是首先拷贝并复制snapshot到目的集群,然后开启两个集群间的数据实时同步,最后,将创建snapshot到开启数据同步之间的数据通过MR任务拷贝。以表test_table为例: 1、通过snapshot把历史数据导入到从集群: 在原集群执行以下指令: a、list_snapshots b、snapshot ‘test_table’, ‘test_ta原创 2016-04-25 15:08:07 · 3146 阅读 · 2 评论 -
HBase Replicate中的peer处理
如果用户新加入了一个peerid,那怎么处理,这部分逻辑的入口在ReplicationSourceManager的addSource方法中:addSource接受peerid作为参数,它会新创建一个ReplicationSourceInterface(实际就是ReplicationSource)和ReplicationEndpoint,并分别初始化两者,ReplicationSource负责h...原创 2018-10-19 17:12:31 · 1713 阅读 · 0 评论