Archive | 十二月, 2009

【Hbase代码笔记】Put

记录HBase 进行一个Put的过程。

1. Client端通过HTable发起Put操作

2. Htable的flushCommits方法使用服务端的连接 来处理提交。和Hadoop Cilent的提交是完全一样的思路

Htable在通过自身的writeBuffer缓存后,会刷新提交

3. Htable 通过HConnection(其实是TableServers类型) 类型的connection发起提交。在Hbase构造时候

4. TableServers类的processBatchOfRows

5[......]

阅读全文

Tags: , , ,

Comments { 0 }

【HBase代码笔记】获取Region信息

通过表名和Row获取Region获取Region

 

根据table名和row获取region信息

TableServers#locateRegion(final byte [] tableName,????? final byte [] row, boolean useCache)

 

HRegionLocation locateRegionInMeta(final byte [] parentTable,????? final byte [] tableName, final byte [] row, boolean useCache)

其实是一存放metadata的regionserver

HRegionInterface getHRegionConnection(

??????? HServerAddr[......]

阅读全文

Tags: ,

Comments { 0 }

【HBase代码笔记】RPC

 

Hbase RPC

@todo 草稿,未整理

在客户端调用一个接口方法的过程

 

对应的接口创建了一个代理

HMasterInterface tryMaster = (HMasterInterface)HBaseRPC.getProxy(

??????????????? HMasterInterface.class, HBaseRPCProtocolVersion.versionID,

???????????? ???masterLocation.getInetSocketAddress(), this.conf);

 

Java的反射机制可以使得对这个方法的调用被派发到这个代理类上面。

VersionedProtocol proxy =

??????? (VersionedProtocol)[......]

阅读全文

Tags: ,

Comments { 0 }

FindBugs Bug Descriptions

摘录了Findbugs的bug rule的描述,和其他相关的静态代码扫描工具相比,其库还是比较brief的,不像其他一些工具他很多细碎的问题也提示出来。少而精,因此对这些rule的理解就成为了可能。其中挺多bug描述其实在没有发生的时候也可以去学习,避免发生。

因为比较典型的不少问题,在代码中看着不是错误,至少现在不是错误,甚至都不是大的问题,但是是潜在的问题,在以后的代码维护中,功能稍微有扩展或者调整,即使是当时写下这些的代码的人也可能在修改这份代码时候出现问题。

挺多其实平时在忙着赶工期忙feature时候,是顾不上这么细微的代码细节的,角落处的代码细节。但是可能最终在某种场合出问题的就是这个不起眼的地方,而且,一般这样的问题调查起来非常麻烦。

结合hbase中发现的问题(apache项目中都有这样的问题),我们的代码中怎么可能没有(也有一点可能,一般我们代码的业务逻[......]

阅读全文

Tags: , , , ,

Comments { 0 }