`
半点玻璃心
  • 浏览: 26668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
最近研究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 ...

HBase Memstore配置

...
看看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 ...
Global site tag (gtag.js) - Google Analytics