天天看点

编译CDH HBase源代码并打补丁下载源代码添加snappy压缩支持添加lzo压缩支持编译Protobuf编译hbase生成patch打patch升级版本排错

写了一篇博客记录编译cdh hbase源代码并打补丁的过程,如有不正确的,欢迎指出!

说明:

-b 指定下载哪个分支

最后一个参数指定下载下来的文件名称

降低gcc版本到4.4:

建立libjvm软连接

下载并编译hadoop-snappy

安装jar包到本地仓库

暂不在此列出,请参考网上文章。

注意:目前只能装2.4.1版本的,装最新版本的可能会缺少文件。

测试是否安装成功,如果成功你会看到:

如果安装失败,你可能会看到:

进入到cdh4-0.94.6_4.4.0 目录,然后运行mvn基本命令。

忽略测试,请添加如下参数:

添加maven运行时jvm大小,请在mvn前面添加如下参数:

生成javadoc和文档,请添加如下参数:

生成release加入security和native包,请添加如下参数:

基于hadoop2.0进行编译,请添加如下参数:

添加hadoop-snappy支持,请添加如下参数:

如果你添加了一些java代码,在每个文件头没有添加license,则需要添加如下参数:

综上,完整命令如下:

修改代码之后,在提交代码之前,运行如下命令生成patch:

如果你已经将该动文件加入到提交缓存区,即执行了如下代码:

你可以使用如下代码打补丁:

如果在提交之后,想生成patch,执行如下命令:

更多diff的命令如下:

打patch:

测试patch是否打成功:

如果出现以下错误:

请安装dos2unix:

然后,执行如下代码:

最后再尝试打补丁。

注意:

请注意,git apply 是一个事务性操作的命令,也就是说,要么所有补丁都打上去,要么全部放弃。

对于传统的 diff 命令生成的补丁,则只能用 git apply 处理。对于 format-patch 制作的新式补丁,应当使用 git am 命令。

查看远程服务器地址和仓库名称:

添加远程仓库地址:

再一次查看远程服务器地址和仓库名称:

抓取远程仓库更新:

然后,再执行下面命令查看远程分支:

下载cdh上的cdh4-0.94.6_4.4.0分支,在本地命名为cdh4-0.94.6_4.4.0:

将本地的cdh4-0.94.6_4.4.0分支其提交到自己的远程仓库:

如果在启动 hbase 的服务过程中出现如下日志:

请查看 src/saveversion.sh 文件的编码及换行符是否和你的操作系统一致。编码应该设置为 utf-8,如果你使用的是 linux 系统,则换行符应该为 unix/linux 换行符,不应该为 window 换行符。