- 浏览: 27430 次
- 性别:
- 来自: 北京
最新评论
-
pinkmoon:
HBase 0.96配置 snappy(绝对有效哦亲) -
pinkmoon:
记一次痛苦的 hadoop 2编译过程 -
半点玻璃心:
dsx1013 写道你好,我有snappy 源码安装,没有指定 ...
HBase 0.96配置 snappy(绝对有效哦亲) -
dsx1013:
你好,我有snappy 源码安装,没有指定安装目录,默认安装路 ...
HBase 0.96配置 snappy(绝对有效哦亲) -
半点玻璃心:
推文7 写道你好,我也遇到了这个问题,能否麻烦把您编译的had ...
HBase 0.96配置 snappy(绝对有效哦亲)
文章列表
btrace annotation简单翻译
- 博客分类:
- btrace
最近研究btrace动态调试线上服务,无奈英文很差,于是乎想到把官方文档小小翻一下,正好学习英语,各位大神请轻拍。
原文地址:https://kenai.com/projects/btrace/pages/UserGuide#btrace_anno。这篇文章可能一下子写不完,先挖个坑,每天填一点。
每一段上面为原文,下面为译文。
Method Annotations
@com.sun.btrace.annotations.OnMethod annotation can be used to specify target class(es), target method ...
本文基于 hbase 0.98x,如果发现源码与你的副本不符合,请检查代码版本。
首先看看 Memstore 的maybeCloneWithAllocator方法
Memstore#maybeCloneWithAllocator
private KeyValue maybeCloneWithAllocator(KeyValue kv) {
if (allocator == null) {//如果没有启用 mslab,就返回原始对象。
return kv;
}
int len = kv.getLength();//计算对象长度
All ...
通常情况下,snappy压缩算法无非是hbase 最好的伴侣,不过这里不介绍 snappy 算法,也不介绍如何安装 snappy,这里只记录如何给 hbase 0.96X-hadoop2版本开启 snappy 支持。如果你在尝试为 hbase 96+hadoop2开启 snappy 压缩的时候遇到
java.lang.RuntimeException: native snappy library not available: this version of libhadoop was built without snappy support.
恭喜你,本文就是你需要的良方妙药,全国包邮的 ...
经历了一次特别坎坷的 hadoop2.2编译经历,放在这里以备忘,同时 BS 下那些将别人的作品抄来抄去甚至不问准确性和完整性的人。整个过程非常感谢强大的 google,和我的英语老师,弱弱的 BS 下度娘。红色字体是编译 hadoop 源文件时需要依赖的 lib 和注意事项。
首先,我是尝试在64位的 linux 环境上安装 hadoop2.2版本,由于有之前一些些小经验,部署和配置部分还算顺利,但是启动的时候问题就来了,namenode 启动的时候应该打印的
Start namenode on [ xxxxxx] (XXXXXX是你 namenode 所在的主机 ...
本代码基于0.96.1.1:http://svn.apache.org/repos/asf/hbase/tags/0.96.1.1
默认情况下,当某个 region 的 memstore 大小达到hbase.hregion.memstore.flush.size * hbase.hregion.memstore.block.multiplier时,会出发 memstore 的 flush 操作,并reject 客户端写请求。
OperationStatus[] batchMutate(Mutation[] mutations, boolean isReplay)
th ...
在写请求(put,delete)到达服务端时,服务端(HRegionServer)会将请求按 Region 聚合,并交给具体的 Region 实例进行处理。Region 收到请求后,会剥离 append 请求和 increase 请求单独处理,然后将 put 和 delete 揉一起按批处理。处理之前,会检查整个memstore 的大小。
protected void doBatchOp(final RegionActionResult.Builder builder, final HRegion region,
final Lis ...
看看MultiServerCallable的核心方法,call
public MultiResponse call() throws IOException {
int countOfActions = this.multiAction.size();
if (countOfActions <= 0) throw new DoNotRetryIOException("No Actions");
MultiRequest.Builder multiRequestBuilder = MultiRequest.newBuilder();
...
看看提交任务的代码吧。对应http://dennis-lee-gammy.iteye.com/admin/blogs/1973249 TODO 【4】
public void sendMultiAction(final List<Action<Row>> initialActions,
Map<HRegionLocation, MultiAction<Row>> actionsByServer,
final int nu ...
按照94的阅读进度,这里该看如何定位RS和Region了
先回顾下94,原来的做法是遍历操作,然后根据每个操作来定位region,按后加入region的任务队列,没有则创建。定位region的操作由HConnectionManager.HConnectionImplementation.locateRegion方法完成,这里由AsyncProcessor.findDestLocation完成
这里依然是循环,不过循环体有些变化
private HRegionLocation findDestLocation(Row row, int numAttempt, int posInList) ...
又回来了,还是看put,不过版本号变了,希望看0.94的童靴移驾到http://dennis-lee-gammy.iteye.com/admin/blogs/1972269
put和doput方法变化不大,唯一就是原来的缓存队列名字里面加了一个async,然后类型由ArrayList变成了LinkedList。
flushCommit方法
public void flushCommits() throws InterruptedIOException, RetriesExhaustedWithDetailsException {
// We're looping, as if o ...
终于把RS的定位问题搞清楚了些些,时间不等人,马上看看connection.processBatch中,step2是如何把任务提交到服务端的吧
之前已经看到,首先创建了一个Callable<MuiltyResponse>对象,而该对象的call方法实际上又创建了一个ServerCallable<MultiResponse> 对象,然后调用了它的withoutRetries方法。
这个方法很简单,调用了connect方法和multi方法
一个个开始啃吧,先看看connect,其中server是ServerCallable的成员,HRegionInterface类型
...
HBase Memstore配置
本文为翻译,原英文地址:http://blog.sematext.com/2012/07/16/hbase-memstore-what-you-should-know/
当regionserver(以下简称RS)收到一个写请求,会将这个请求定位到某个特定的region。每个region存储了一系列的row,每个row对应的数据分散在一个或多个ColumnFamily(以下简称CF)中 。特定CF的数据都存储在对应的store里面,而每个store都由一个memstore和数个storefile组成。memstore存储在RS的内存中,而storefile ...