本文基于博主自己的经验介绍了如何在Windows环境下搭建HBase源码开发环境,用于查看,分析,开发,提交HBase源码。 HBase在Windows下编译时需要用到Hadoop提供的winutils.exe, 而winutils.exe需要从Hadoop源码编译得到,因此将也同时介绍如何在Windows上编译Hadoop源码。
首先,我们的系统的上需要安装如下软件:
1. JDK 1.6以上
HBase 需要1.6以上版本的JDK, 我装的是JDk1.7, 下载地址:http://www.oracle.com/technetwork/java/index.html
2. Maven 3.x
强大的build及依赖管理工具, 用于build HBase及hadoop源码, http://maven.apache.org/
安装后将mvn命令所在目录设置到系统或当前用户path环境变量中。
3. Windows 上的Git工具
建议使用Github for Windows, 下载地址:https://windows.github.com/
4. Windows SDK 7.1
用于编译Hadoop源码中的Windows本地代码,包括编译HBase时需要的winutils.exe
地址: http://microsoft-windows-sdk-for-windows.software.informer.com/7.1/
5. cygwin
Windows上的Linux/Unix工具集, Hadoop/HBase编译时会用到, http://www.cygwin.com/
安装之后将cygwin的bin目录设置到系统或当前用户的path环境变量的前面,这样编译hadoop和hbase过程中用到的shell命令(例如find)首先会找到cygwin提供的版本,而不是windows系统提供的。
6. ProtocolBuffers
Google序列化框架,Hadoop/HBase都采用了ProtocolBuffers作为序列化框架,需要2.5版本,我下载的是2.6, 下载地址:code.google.com/p/protobuf/
安装之后将protoc所在目录设置到系统或当前用户path环境变量中。
有了上述必须的软件之后,我们首先开始编译Hadoop.
1. 从官网下载Hadoop源码,我下的是2.5.1
2. 设置环境变量, 非常重要,不设置环境变量Hadoop无法编译通过
set JAVA_HOME=
set PATH=
set Platform=x64 //非常重要,必须设置,如果是32位的,请设置为x86
set PATH=
set PATH=
3. 编译hadoop
mvn package -Pdist -DskipTests
编译成功后,在Hadoop 源码目录下可以找到winutils.exe, 把它复制到hadoop源码的bin目录下,比如我的hadoop源码位于D:\hadoop\hadoop-2.5.1-src, 则把winutils.exe复制到D:\hadoop\hadoop-2.5.1-src\bin下, 然后设置环境变量HADOOP_HOME=D:\hadoop\hadoop-2.5.1-src。然后我们就可以进入我们的主题,编译HBase了。
首先下载HBase代码,如果你打算向HBase项目提交你的代码,首先fork HBase代码至你自己的仓库, Git clone你自己的仓库,如果不打算提交代码,可以直接
git clone https://github.com/apache/hbase.git
然后进入HBase源码目录,运行:
mvn package -DskipTests
首先运行如下命令产生eclipse项目文件:
mvn eclipse:eclipse
然后用Eclipse导入现有工程。
HBase服务器的入口点位于HMaster.main()方法,我们可以直接在Eclipse环境中运行HMaster.
首先在hbase-site.xml中设置版本属性,我下载的是Master branch 2.0.0-SNAPSHOT:
从Eclipse中点击Run -> Run configuraiton..., 然后点击新建, Main class中填写 org.apache.hadoop.hbase.master.HMaster, 如下图:
Arguments写start:
Enviroment按下图填写:
点击运行, 从console中可以看到HBase开始运行
如果你看到"Master has completed initialization", 那么恭喜你,你的环境已经搭建成功了, 我们下面再做最后一步,再从Eclipse中启动Shell, 对Hbase做一写简单的测试。
从Eclipse点击Run -> Run configurations..., 然后点新建,Main class 填写 org.jruby.Main
Arguments填写:
环境变量设置和Master相同:
点击Run, 就可以在console中使用hbase shell了。