在Eclipse中调试运行HBase

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

这篇文章记录一下如何在eclipse中调试运行hbase。

下载并编译源代码

请参考编译hbase源代码并打补丁

修改配置文件

修改 conf/hbase-site.xml文件:

<property>
<name>hbase.defaults.for.version</name>
<value>0.94.6-cdh4.4.0</value>
</property>

<property>
<name>hbase.rootdir</name>
<value>file:///home/june/tmp/data</value>
</property>

把conf文件夹加到Classpath中

运行HMaster

新建一个Debug Configuration, main class 是org.apache.hadoop.hbase.master.HMaster, 参数填start

调试运行该类,运行成功之后日志如下:

13/10/29 14:38:29 WARN zookeeper.RecoverableZooKeeper: Node /hbase/table/.META. already deleted, and this is not a retry
13/10/29 14:38:29 INFO regionserver.HRegionServer: Received request to open region: .META.,,1.1028785192
13/10/29 14:38:29 INFO regionserver.HRegion: Setting up tabledescriptor config now ...
13/10/29 14:38:29 INFO regionserver.Store: time to purge deletes set to 0ms in store info
13/10/29 14:38:29 INFO regionserver.HRegion: Onlined .META.,,1.1028785192; next sequenceid=1
13/10/29 14:38:29 INFO regionserver.HRegionServer: Post open deploy tasks for region=.META.,,1.1028785192, daughter=false
13/10/29 14:38:29 INFO catalog.MetaEditor: Updated row .META.,,1.1028785192 with server=june-mint,47477,1383028701871
13/10/29 14:38:29 INFO regionserver.HRegionServer: Done with post open deploy task for region=.META.,,1.1028785192, daughter=false
13/10/29 14:38:29 INFO handler.OpenedRegionHandler: Handling OPENED event for .META.,,1.1028785192 from june-mint,47477,1383028701871; deleting unassigned node
13/10/29 14:38:29 INFO master.AssignmentManager: The master has opened the region .META.,,1.1028785192 that was online on june-mint,47477,1383028701871
13/10/29 14:38:29 INFO master.HMaster: .META. assigned=2, rit=false, location=june-mint,47477,1383028701871
13/10/29 14:38:29 INFO catalog.MetaMigrationRemovingHTD: Meta version=0; migrated=true
13/10/29 14:38:29 INFO catalog.MetaMigrationRemovingHTD: ROOT/Meta already up-to date with new HRI.
13/10/29 14:38:29 INFO master.AssignmentManager: Clean cluster startup. Assigning userregions
13/10/29 14:38:29 INFO master.HMaster: Registered HMaster MXBean
13/10/29 14:38:29 INFO master.HMaster: Master has completed initialization

如果想修改日志级别,请修改conf/log4j.properties中级别为INFO:

#Logging Threshold
log4j.threshold=INFO

运行HRegionServer

参考上面的方法,运行HRegionServer,这时候会出现如下日志:

13/11/04 11:50:47 INFO util.VersionInfo: HBase 0.94.6-cdh4.4.0
13/11/04 11:50:47 INFO util.VersionInfo: Subversion git://june-mint/chan/workspace/hadoop/hbase -r 979969e1d0d95ce3b8c1d14593f55148da8bc98f
13/11/04 11:50:47 INFO util.VersionInfo: Compiled by june on Tue Oct 29 15:11:51 CST 2013
13/11/04 11:50:47 WARN regionserver.HRegionServerCommandLine: Not starting a distinct region server because hbase.cluster.distributed is false

这是因为当hbase.cluster.distributed=false时,hbase为本地模式,master和regionserver在同一个jvm启动,并且会启动一个最小化的zookeeper集群。请参看:HMasterCommandLine.java的startMaster()方法。

如果你把该值设为true,则hbase集群为分布式模式,这时候默认会连接127.0.0.1:2181对应的zookeeper集群(该集群需要在master启动之前启动)。当然,你可以修改参数让hbase自己维护一个zookeeper集群。

调试hbase shell

新建一个Debug Configuration, main class 是org.jruby.Main,在程序参数中添加bin/hirb.rb,然后运行即可。

一些技巧

  • 调试java代码的时候, byte[]的变量总是显示成数字,如果要显示对应的字符
Window->Preference->Java->Debug->Primitive Display Options->Check some of them
  • hbase源码中默认依赖的是hadoop 1.0.x版本,所以mavne依赖中会引入hadoop-core-1.0.4.jar,你可以修改pom.xml文件,将默认的profile修改为你需要的hadoop版本,如2.0版本的hadoop。这样做之后,当你看HMaster的源代码时,你会很方便的关联并浏览ToolRunner类中的源代码。

默认的profile是hadoop-1.0,配置文件如下:

  <!-- profile for building against Hadoop 1.0.x: This is the default. -->
    <profile>
      <id>hadoop-1.0</id>
      <activation>
        <property>
          <name>!hadoop.profile</name>
        </property>

   <profile>
      <id>hadoop-2.0</id>
      <activation>
        <property>
          <name>hadoop.profile</name>
          <value>2.0</value>
        </property>

你可以将默认的profile改为hadoop-2.0,修改之后的配置文件如下:

    <profile>
      <id>hadoop-1.0</id>
      <activation>
        <property>
          <name>hadoop.profile</name>
	  <value>1.0</value>
        </property>

   <profile>
      <id>hadoop-2.0</id>
      <activation>
        <property>
          <name>!hadoop.profile</name>
        </property>
相关实践学习
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
开发工具 Android开发 git
【dbeaver】Eclipse 运行 dbeaver 源码
【dbeaver】Eclipse 运行 dbeaver 源码
120 0
|
3月前
|
Java 关系型数据库 BI
基于Java Swing 开发的网吧管理系统【eclipse和idea两个版本运行源码】
基于Java Swing 开发的网吧管理系统【eclipse和idea两个版本运行源码】
|
4月前
|
Java Shell 分布式数据库
Pinpoint【部署 01】JDK\HBase\Pinpoint Collector+Web 最新版 2.3.3 安装配置运行验证及脚本文件分享(避坑指南捷径指北)20230228
Pinpoint【部署 01】JDK\HBase\Pinpoint Collector+Web 最新版 2.3.3 安装配置运行验证及脚本文件分享(避坑指南捷径指北)20230228
77 0
|
4月前
|
分布式数据库 Hbase
Hbase运行原理解析
Hbase运行原理解析
12 0
|
5月前
|
Oracle Java 关系型数据库
JDK配置,eclipse运行 web通过apache-tomcat,mysql配置
JDK配置,eclipse运行 web通过apache-tomcat,mysql配置
|
7月前
|
Java Android开发
在用 Eclipse 搭建 SAP Commerce Cloud 调试环境时,错误和正确的 buildfile
在用 Eclipse 搭建 SAP Commerce Cloud 调试环境时,错误和正确的 buildfile
44 0
|
7月前
|
Android开发
SAP Hybris Commerce Cloud Accelerator Storefront 在 Eclipse 中的调试
SAP Hybris Commerce Cloud Accelerator Storefront 在 Eclipse 中的调试
30 0
|
7月前
|
Java Android开发
eclipse开发和运行Java程序
eclipse开发和运行Java程序
47 0
|
8月前
|
Java Maven Android开发
Eclipse内置jetty运行web项目的配置
Eclipse内置jetty运行web项目的配置
|
10月前
|
NoSQL IDE 开发工具
Eclipse配合GDB和jlinkGDBServer仿真调试STM32
Eclipse配合GDB和jlinkGDBServer仿真调试STM32