- 博客(23)
- 收藏
- 关注
原创 Thrift的使用
java操作Thriftthrift的原理及使用介绍可参考http://dongxicheng.org/search-engine/thrift-framework-intro/ 1:下载thrift并解压下载地址:http://thrift.apache.org/download/ 2:编写Thrift文件(定义接口,结构,异常等),保存为demoHelllo.thr...
2013-07-08 13:58:55
219
原创 使用jstack来查看cpu消耗性能
使用jdk自带的jstack来分析。top 工具可以显示 cpu 的平均利用率(user,nice,system,idle,iowait,irq,softirq,etc.)显示如下: uptime 该项显示的是系统启动时间、已经运行的时间和三个平均负载值(最近1秒,5秒,15秒的负载值)。processes 自最近一次刷新以来的运行进程总数。当然这些进程被分为正在运行的,休眠...
2013-01-23 20:41:14
450
原创 HTable的使用
当前一般HBase的读写(删除也认为是写)都是通过HTable对象来操作的。 首先看官方的注释 * <p>Used to communicate with a single HBase table. * * <p>This class is not thread safe for reads nor write. * * <...
2013-01-23 20:39:05
617
原创 HMaster的failover 流程(三)
继续HMASTER的failover 流程上一篇说道master failover的一个漏洞,这几天好好的看了一下,终于找到问题的关键在哪儿了。首先来看如何重现。1. master 发送rpc请求去open region,此时zk上的节点时offline状态。2. rs收到请求还没有开始处理,即zk节点仍然是offline。3. master重启4. master开...
2012-07-02 21:15:08
215
原创 HMaster的failover 流程(二)
继续上一篇的master failover流程master挂掉期间没有regionserver挂掉的情况。昨天写着写着突然发现90 failover存在一个bug,今天测试了一下,果然存在。当master处理zk上面的unassigned节点时,首先会去getchlidren。这个函数会获取zk unassigned节点 set watch(该节点删除触发noded...
2012-06-27 21:18:00
212
原创 HMaster的failover 流程
HBase的master重启时走的是failover流程。 由于在HMaster挂掉的瞬间有很多正在执行的事务,如: 1. 某个table可能正在disable到一半,master挂掉 2. create table到一半,master挂掉 3. move 动作到一半,master挂掉当 master挂掉的时候,这些动作是不一致的,即可能出于一个中间状...
2012-06-26 21:57:01
335
原创 HBase编译过程中碰到的问题
测试环境上hbase采用maven编译,只要安装了maven就行.在hbase目录下mvn package -Dmaven.test.skip.exec=true编译好的jar放在target目录下,将jia包替换以后。1.重启集群发现一个问题:HMaster启动了,但是Regionserver没有起来 后来分析maven编译之前时候会把依赖都下到.m2/目录下,Hbase集群...
2011-12-08 21:49:09
360
原创 HBase scan的客户端分析
HBase中rowkey是索引,任何对全表的扫描或是统计都需要用到scan接口。本文主要探讨的是客户端是如何通过scan来扫描hbase的table的。 主要关注几个问题: 1.每一个Table可能不止一个region,分布在不同的regionserver上。客户端需要找到每个region的位置并与之通信; 2.Hbase是以append形式把数据写进去的,无论是写还是...
2011-12-07 21:37:38
265
原创 Java 的DelayQueue
今天看了一下HBase的代码,发现在很多地方都用了DelayQueue,网上有很多解析DelayQueue的实例 http://www.cnblogs.com/jobs/archive/2007/04/27/730255.html 提到了DelayQueue的使用场景: a) 关闭空闲连接。服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。b) 缓存。缓存中的对象,...
2011-12-05 21:10:48
125
原创 HBase的client api guide
参考网上的一些api guide,总结了的一些HBase的client api,以及自己的一些理解三个部分:首先描述hbase建表,读写数据的过程;然后详细介绍一下这些过程中所使用的API,并给出实例;最后给出一些在使用HBase客户端时的一些注意事项和建议。一家之言而已,记录加强印象~~~...
2011-12-05 20:43:03
118
原创 Hbase的log管理(二)
1.在Hbase的log管理(一)中,描述了Hbase对于Hlog的更新和清理过程。其中提到会把已经写入磁盘的log文件move到.oldlog文件中,那么.oldlog中的文件又如何处理呢?HMaster启动的时候会起一个守护线程LogCleaner,专门清理oldlog中的文件,频率是60s2.数据以KeyValue形式到达HRegionServer,将写入WAL之后,写入一个Se...
2011-12-01 20:39:55
220
原创 HBase之 HTable线程不安全
在单线程环境下使用hbase的htable是没有问题,但是突然高并发多线程情况下就可能出现问题原因是什么呢? 我们来看看Htable的api说明 This class is not thread safe for updates; the underlying write buffer can be corrupted if multiple threads conten...
2011-12-01 20:21:28
873
1
原创 Hbase的log管理(一)
每一个Regionserver中都有一个HLog,一般情况下除非设置了SETWAL(false)否则对hbase的写操作在put到内存之前会append到log中以防止机器down 掉造成的数据丢失。首先来看RS启动后对HLog的处理private HLog setupWALAndReplication() throws IOException { final Path oldL...
2011-11-30 19:10:28
351
原创 HBase splitlog 过程
上一篇Blog提到了HBase在regionserver挂掉以后,master会处理,其中很重要的一步是就是splitlog,把.logs目录下的该rs的文件夹里的HLog文件,按照region进行分配。splitlog的代码如下所示:private List<Path> splitLog(final FileStatus[] logfiles) throws IOExceptio...
2011-11-30 19:00:28
366
原创 HBase的RS关闭过程和Region重分配(二)
上一篇blog谈到了rs挂掉的几种情况。 HBase作为nosql的一种产品,应用于大规模分布式的海量数据,其中有一个优点就是其对于机器down掉的容错性。客户端不需要关注机器是否挂掉或者怎么样,server会自动处理down的server,处理器上的region并分配到其他server从而最大限度地提高系统可用性 今天来看看当rs挂掉以后的处理情况。 前面我们说过rs...
2011-11-29 21:52:26
675
原创 HBase的RS关闭过程和Region重分配(一)
Hbase的一个很大的优点就是可扩展性比较强,可以线性扩展,加机器就行,而且机器的配置也不需要太好,就是用大量廉价的机器来替代昂贵的小型机,但是由于大量的相对廉价的机器,由于网络硬盘等各种各样的原因,机器不可避免的会挂掉,那么HBase在面对这种问题时如何处理呢? 首先来看HBase的RS在哪几种情况下会down掉:1. 集群关闭;2. stop regionserver 关闭当前...
2011-11-28 21:46:06
952
原创 HBase 配置的小问题
前几天把集群关闭了,换了一个新的版本。然后就发现集群再也起不来了。依照以前的步骤一步一步下来。启动集群的时候出现了很奇怪的事情:master起不来,regionserver倒是启动了。 查看master日志.metrics.MasterMetrics: Initialized2011-11-02 19:03:51,914 INFO org.apache.hadoop.hbase...
2011-11-24 20:56:26
132
原创 HBase的Block cache
HBase上Regionserver的内存分为两个部分,一部分作为Memstore,主要用来写;另外一部分做BlockCache,用来读,当然Memstore也有读的功效,不过由于Hbase的scan机制,从Memsotre读到数据的效果一般。 今天主要来分析下Hbase的BlockCache机制,并且阐述其中碰到的一个RTE异常。 话不多说,首先来看看Hbase的存储机制。其...
2011-11-24 20:45:05
324
原创 HBase的数据的update
hbase是以rowkey,column,timestamp这三个维度来区分的。即如果两条记录其rowkey,column,timestamp一样的话,那么hbase就会认为其是相同的数据。 row column value timeput r1 cf:c1 '5' 10put r1 ...
2011-11-18 19:34:58
2041
原创 HBase Region在两个RegionServer出现分析
HBase的操作一般都是以region为粒度的,如split,compact,move等操作。因此对于每个region在集群的唯一性就需要得到保证。若region在两个regionserver中出现显然会有各种各样的bug出现。 这里我们通过以下的分析来看看region在上吗情况下会出现分配到两个rs中。 对于一个RS1上的Region A将其move到RS2中,调用HBaseAdmin的move...
2011-11-17 21:23:44
226
原创 HBase的get过程(一)
0.90.X的get和scan操作原理上是比较一致的,get操作都变为scan操作。不过在分析之前我们还是从get说起话不多说首先看看get这个接口,hbase客户端对于get有以下几种:public Get(byte [] row)public Get(byte [] row, RowLock rowLock) 其中rowlock主要是用来保证行的事务性,即每个get是以一个r...
2011-11-14 20:41:04
290
原创 HBase disable table的过程
hbase的table delete之前需要将该table disable,今天结合源码分析一下disable的过程 首先看客户端HbaseAdmin.java中有接口public void disableTable(final byte [] tableName)public void disableTable(final String tableName) 它们的实现都是...
2011-11-14 19:42:56
1782
原创 HBase Split 过程
看了下hbase split的代码 记录一下学习心得[code="java"]private void split(final HRegion parent, final byte [] midKey)throws IOException { final long startTime = System.currentTimeMillis(); SplitTransa...
2011-11-03 21:37:03
166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人