编译HBase1.0.0-cdh5.4.2版本
1. 编译环境准备
Jdk:1.7.0_x
Maven : 3.3.9
hbase: cdh5.4.2-release
2. 用idea打开项目
使用git clone得到HBase源码。打开git:
将HBase项目拉取到本地:
拉取完毕之后,在idea的命令窗口,使用命令 git checkout cdh5.4.2-release,切换到和生产环境对应的HBase版本。
切换完成后项目结构如下:
3. 编译前准备
3.1 为maven-resources-plugin指定版本
打开 hbase项目根目录下的pom.xml文件,找到maven-resources-plugin,为其指定好version。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
<plugin>
3.2 跳过版本检查
打开conf文件夹在hbase-site.xml添加如下设置
<property>
<name>hbase.defaults.for.version.skip</name>
<value>true</value>
</property>
3.3 生成模板代码
在hbase-server的jamon包下,有以jamon为后缀名的文件,jamon是一种模板语言,可以把该文件生成java文件。
在http://www.jamon.org网站下载jamon程序jamon-dist-2013.12.28.zip。
解压后拷贝jamon-api-2.3.1.jar jamon-processor-2.4.2.jar jamon-runtime-2.4.1.jar到源码的\hbase-server\src\main\jamon目录:
然后在该文件夹打开命令行执行以下命令处理jamon文件:
java -cp .;jamon-api-2.3.1.jar;jamon-processor-2.4.2.jar;jamon-runtime-2.4.1.jar org.jamon.compiler.TemplateProcessor --srcDir=. --destDir=. org\apache\hadoop\hbase\tmpl\regionserver\*
java -cp .;jamon-api-2.3.1.jar;jamon-processor-2.4.2.jar;jamon-runtime-2.4.1.jar org.jamon.compiler.TemplateProcessor --srcDir=. --destDir=. org\apache\hadoop\hbase\tmpl\common\*
java -cp .;jamon-api-2.3.1.jar;jamon-processor-2.4.2.jar;jamon-runtime-2.4.1.jar org.jamon.compiler.TemplateProcessor --srcDir=. --destDir=. org\apache\hadoop\hbase\tmpl\master\*
jamon文件会生成相应的java文件,然后将hbase-server的src/main/jmon加入src路径,就可以引用到新生成的java文件了。
4. 编译HBase代码
在idea的命令窗口执行命令:mvn package -Dmaven.test.skip=true assembly:single,输出如下图则打包成功。
在各模块的target目录可得到相应jar包,当我们打了补丁后编译出的jar包就可以放到集群的/usr/lib/hbase/lib目录中替换了。
5. 本地调试HBase
5.1本地启动HMaster
添加hbase/conf 作为 hbase-server模块的 resources文件夹:
然后运行hbase-server模块中的HMaster类,配置参数如下图:
输出下面的信息说明启动成功。
可在本地进行访问HBase:localhost:60010
5.2 本地启动hbase-shell
启动配置如下:
VMoption为:
-Dhbase.ruby.sources=E:\IdeaProjects\source\cdh5.4.2\hbase\hbase-shell\src\main\ruby
-Dlog4j.configuration=file:E:\IdeaProjects\source\cdh5.4.2\hbase\conf\log4j.properties
启动完成后可以在console窗口执行shell命令。
另外,Debug也可以针对HBase提供的测试用例,大部分用例都是基于一个本地模拟的Mini Cluster运行的。
这个Mini Cluster运行在一个进程中,使用线程模拟HBase的关键进程。
有些测试用例在window端启动可能会报无法找到文件的错误,需要在linux系统中执行用例才能正常。
这个过程中,我们可以动手小改一下源码,验证自己的想法,或者观察因为改动所带来的行为变化,对熟悉HBase源码大有裨益。
编译HBase1.0.0-cdh5.4.2版本的更多相关文章
- 整合phoenix4.6.0-HBase-1.0到cdh5..4.7 编译phoenix4.6源码 RegionServer 宕机
Phoenix 集成HBase Phoenix 版本:phoenix-4.6.0-HBase-1.0 源码下载地址: http://apache.cs.uu.nl/phoenix/phoenix-4. ...
- CentOS 7.2mini版本下编译安装php7.0.10+MySQL5.7.14+Nginx1.10
一.安装前的准备工作 1.yum update #更新系统 2.yum install gcc gcc-c++ autoconf automake cmake bison m4 libxml2 ...
- CentOS 7.2mini版本下编译安装php7.0.10+MySQL5.7.14+Nginx1.10.1
一.安装前的准备工作 1.yum update #更新系统 1.1)vi /etc/selinux/config # 禁止SELINUX,设置SELINUX=disabled 2.yum in ...
- 使用自编译的Emacs26.0.50build10版本,helm报错(已解决)
使用自编译的Emacs26.0.50build10版本,helm报错(已解决) */--> code {color: #FF0000} pre.src {background-color: #0 ...
- spark cdh5编译安装[spark-1.0.2 hadoop2.3.0 cdh5.1.0]
前提你得安装有Hadoop 我的版本hadoop2.3-cdh5.1.0 1.下载maven包 2.配置M2_HOME环境变量,配置maven 的bin目录到path路径 3.export MAVEN ...
- Spark2.0.0源码编译
Hive默认使用MapReduce作为执行引擎,即Hive on mr,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on Spark.由于MapRedu ...
- linux下编译gcc6.2.0
linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...
- VS2015编译Qt5.7.0生成支持XP的静态库(很不错)
一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...
- 编译hadoop2.6.0
具体情况比较曲折:hadoop2.6.0编译不过 错误如下: 这个kms模块始终编译不过,最后得出结论国内的aliyun maven仓库有问题, 在编译hadoop2.2.0 可以通过,因为这个版本的 ...
- linux下编译qt5.6.0静态库——configure配置
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
随机推荐
- quartz 定时任务的增删改
参考: https://blog.csdn.net/llmys/article/details/81069863
- FireFox 火狐主页被劫持
火狐主页被劫持hao123,流氓 WIN7 ,firefox,任务栏,快速启动,右键 属性 target 应该是 "D:\Program Files (x86)\Mozilla Firefo ...
- jQuery上传插件uploadify 3.2.1
1.属性 名称 默认值 说明 swf [必须设置]swf的路径 uploader [必须设置]服务器端脚本文件路径 uploadLimit 999 最多上传文件数量 checkExisting ...
- svn异常处理
TortoiseSVN 为客户端,SUBVersion为服务器端. 1.安装的tortoiseSVN不在鼠标右键菜单栏 出现这种原因是电脑的系统和svn不符,即电脑是64位系统,而svn是32位的. ...
- LaiFeng-code
https://github.com/LaiFeng-Android/SopCastComponent https://github.com/LaiFengiOS/
- PageUtil 分页
/** * 分页工具类 * @author Administrator * */ public class PageUtil { /** * 生成分页代码 * @param targetUrl 目标地 ...
- request.getParameterMap()获得Map中的数据
今天使用request.getParameterMap()获得Map中的数据时,使用 Map map=request.getParameterMap(); i ...
- Jquery detect page refresh
first thing there are 3 functions we will use: function setCookie(c_name, value, exdays) { ...
- ArcMap导入图层出现General function failure问题
问题描述: 使用ArcMap的FeatureClassToFeatureClass命令导入图层,出现如下图的错误提示: 解决方法: 参考http://forums.esri.com/thread.as ...
- Eclipse中spring项目的XML文件的问题
XML文件提示Start state definition is missing. Add a 'start-state' element 原因:Eclipse 认为 XML 是“Spring Web ...