HBase 如何Debug region
来源:互联网 发布:win10不显示可用网络 编辑:程序博客网 时间:2024/05/14 11:55
要想很好的理解HBase的代码,Debug Hbase的源码是最简单的方式,但很可惜的是HBase不能在Windows上运行(除非cygwin),即使用cygwin配置起来也很麻烦。而且即使用cygwin,HBase中最核心最关键的代码region部分也很难debug。
不过,本文提供的方法可以轻松在本地创建region对象,然后就可以直接调用方法进行debug啦。
首先说下原理:
我们知道Hbase中Master和RegionServer的主要作用就是partition、rpc,而每个Region可以看作一个微型的数据库内核。
region是相对独立的,接收上层的regionserver的指令。
这边Hbase做的很好,每个region可以只通过hdfs上的文件和目录初始化出来。
因此,我们首先要用hbaseclient的方式建立一张表。然后取出需要debug的region名字(从hdfs上读),最后以下几行代码就可创建一个自己独立的region对象。有了对象我们就能想干吗干吗啦,put,get,scan.flush,compact,split随便debug~
//初始化配置文件 SpliterConfigurationFactory confFactory = SpliterConfigurationFactory.getInstance(); Configuration conf = confFactory.getSpliterConfiguration(); //获得hbase的根目录,表名,初始化MetaUtil对象 Path rootdir = FSUtils.getRootDir(conf); byte[] tableName = Bytes.toBytes("testmerge"); MetaUtils utils = new MetaUtils(conf); //初始化 tableDescriptor对象 HTableDescriptor htd = FSTableDescriptors.getTableDescriptor(FileSystem.get(conf), rootdir, tableName); // 拿到 该region的regionInfo,这边可以有很多方式。Hbase提供了很多方式 HTable table = new HTable(conf,tableName); HRegionInfo ri = CommonTableUtil.getRegionInfo(Bytes.toBytes("testmerge,,1354183028220.9e1c0fd860d9dc5cd84c05831d770928."), table); //获得Hlog对象 HLog log = utils.getLog(); // 创建HRegion对象!! HRegion r1 = HRegion.openHRegion(ri, htd, log, conf); // Flush Region r1.flushcache(); //r1.put(put); // Scan Region Scan scan = new Scan(); InternalScanner s = r1.getScanner(scan); try { List<KeyValue> results = new ArrayList<KeyValue>(); boolean hasNext = true; do { hasNext = s.next(results); for (KeyValue kv: results) { System.out.println(Bytes.toStringBinary(kv.getRow())); System.out.println(Bytes.toStringBinary(kv.getValue())); } results.clear(); } while (hasNext); } finally { s.close(); }
- HBase 如何Debug region
- HBase源码分析之如何找到region location
- [HBase]Region assignment
- HBase Region分裂
- [HBase]Region location
- [HBase]Region assignment
- hbase region split策略
- HBase Region分裂
- HBase学习之region
- Hbase merge multiple region
- HBase Region split 策略
- hbase Region 的学习
- HBase Region分裂
- HBase Region分裂
- HBase Region 的分裂
- HBase Region分裂
- HBase region 查找
- HBase region预拆分
- WinCE自启动Shell的问题
- 地址的再次整理与总结
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
- linux下搭建属于自己的博客(WordPress安装)
- html用于取消事件的行为
- HBase 如何Debug region
- MySQL JOIN 语法说明与 INNER JOIN 语法用法实例
- 第9讲 linux安装演示
- software security
- 第10讲 shell介绍
- 精通搜索分析
- 动态模版引擎<使用方法>
- setjmp&longjmp
- GDB调试多进程和多线程命令