设为首页 收藏本站
查看: 534|回复: 0

[经验分享] 编译Hadoop的append分支源码 .

[复制链接]

尚未签到

发表于 2016-12-6 07:14:53 | 显示全部楼层 |阅读模式

Hadoop version
HBase version
Compatible?


0.20.2 release
0.90.2
NO


0.20-append
0.90.2
YES


0.21.0 release
0.90.2
NO


0.22.x (in development)
0.90.2
NO
  从上图可以看出,HBase0.90.2与Hadoop的主干版本0.20.0是不兼容的,虽然可以使用,但是在生产环境中会导致数据丢失。
  比如在hbase的web界面会有如下提醒:
  You are currently running the HMaster without HDFS append support enabled. This may result in data loss. Please see the HBase wiki for details.
As of today, Hadoop 0.20.2 is the latest stable release of Apache Hadoop that is marked as ready for production (neither 0.21 nor 0.22 are).
Unfortunately, Hadoop 0.20.2 release is not compatible with the latest stable version of HBase: if you run HBase on top of Hadoop 0.20.2, you risk to lose data! Hence HBase users are required to build their own Hadoop 0.20.x version if they want to run HBase on a production cluster of Hadoop. In this article, I describe how to build such a production-ready version of Hadoop 0.20.x that is compatible with HBase 0.90.2.
  在Hbase0.20.2的官方book中也有提到:
This version of HBase will only run on Hadoop 0.20.x. It will not run on hadoop 0.21.x (nor 0.22.x). HBase will lose data unless it is running on an HDFS that has a durable sync. Currently only the branch-0.20-append branch has this attribute [1]. No official releases have been made from this branch up to now so you will have to build your own Hadoop from the tip of this branch. Check it out using this url, branch-0.20-append. Scroll down in the Hadoop How To Release to the section Build Requirements for instruction on how to build Hadoop.
Or rather than build your own, you could use Cloudera's CDH3. CDH has the 0.20-append patches needed to add a durable sync (CDH3 betas will suffice; b2, b3, or b4).
  所以本文就讨论如何使用编译hadoop的append分支,并整合进入Hadoop主干版本。
  首先安装git工具。(是个类似于svn一样的版本控制工具)
  $ apt-get install git
  使用git获取源代码,并建立本地版本库,需要下载较长时间

$ git clone git://git.apache.org/hadoop-common.git
进入库内
$ cd hadoop-common

  我们发现git到本地的库只可以看到hadoop的最新主干代码,实际上,git已经获取了所有版本,需要手动切换版本到append分支;

$ git checkout -t origin/branch-0.20-append
Branch branch-0.20-append set up to track remote branch branch-0.20-append from origin.
Switched to a new branch 'branch-0.20-append'

  这样就切换到了append分支
  我们在分支就可以准备进行编译:
  首先在hadoop-common目录下创建 build.properties ,内容如下:

resolvers=internal
version=0.20-taotaosou-dfs(你需要指定的版本号,例子代表淘淘搜-分布式文件系统)
project.version=${version}
hadoop.version=${version}
hadoop-core.version=${version}
hadoop-hdfs.version=${version}
hadoop-mapred.version=${version}

在hadoop-common目录下,最后确认一下是否已经切换版本
git checkout branch-0.20-append

  现在看,目录中内容全变了,切换到了append分支
  下面开始编译,先安装ant哦
  启动构建,需要较长时间完成(4分钟左右)

$ ant mvn-install
注意,如果需要重新运行该指令,你应该先清除生成的文件
rm -rf $HOME/.m2/repository
在hadoop-common目录下执行
ant clean-cache

  编译完成之后,会进入测试阶段

# Optional: run the full test suite or just the core test suite
$ ant test
$ ant test-core

  第一个 测试全部内容,第二个只测试核心功能
  ant test 时间非常久,非服务器约10小时。
  在哪里可以找到目标jar包呢?

$ find $HOME/.m2/repository -name "hadoop-*.jar"
.../repository/org/apache/hadoop/hadoop-examples/0.20-append-for-hbase/hadoop-examples-0.20-append-for-hbase.jar
.../repository/org/apache/hadoop/hadoop-test/0.20-append-for-hbase/hadoop-test-0.20-append-for-hbase.jar
.../repository/org/apache/hadoop/hadoop-tools/0.20-append-for-hbase/hadoop-tools-0.20-append-for-hbase.jar
.../repository/org/apache/hadoop/hadoop-streaming/0.20-append-for-hbase/hadoop-streaming-0.20-append-for-hbase.jar
.../repository/org/apache/hadoop/hadoop-core/0.20-append-for-hbase/hadoop-core-0.20-append-for-hbase.jar

  接下来就是将新的jar替换旧的jar包(此处假设你已经架设好hadoop-0.20.2release版本)
  1,替换旧的hadoop包;
  2,替换hbase中lib文件夹中的包
  请注意,替换jar包需要重新命名
  Hadoop 0.20.2 release 版本的命名规则为 hadoop-VERSION-PACKAGE.jar,如:hadoop-0.20.2-examples.jar.
  而新编译的版本命名规则为 hadoop-PACKAGE-VERSION.jar,如: hadoop-examples-0.20-append-for-hbase.jar. 
  所以你会以如下方式重命名:

hadoop-examples-0.20-append-for-hbase.jar  --> hadoop-0.20-append-for-hbase-examples.jar
hadoop-test-0.20-append-for-hbase.jar      --> hadoop-0.20-append-for-hbase-test.jar
hadoop-tools-0.20-append-for-hbase.jar     --> hadoop-0.20-append-for-hbase-tools.jar
hadoop-streaming-0.20-append-for-hbase.jar --> hadoop-0.20-append-for-hbase-streaming.jar
hadoop-core-0.20-append-for-hbase.jar      --> hadoop-0.20-append-for-hbase-core.jar

  而与之相反,Hbase使用的命名规则为hadoop-PACKAGE-VERSION.jar ,所以提交到$HBASE_HOME/lib的jar包则不需要重命名,只需要保持原来的名称。
  完成以上工作之后,新编译的包就可以使用了。
  但是在测试过程中,你可能遇到一些test fail
  比如:TestFileAppend4 总是会出错
  但是幸运的是,这并不意味着不能使用,或许你还会遇到其他错误,但是,经过与hbase maillist联系,发现其实他们也是正常的。
  所以有错误,也请放心,虽然你也或跟我一样感到不爽。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310134-1-1.html 上篇帖子: hadoop eclipse plugin 编译安装,问题总结 下篇帖子: Hadoop:java.io.IOException: Tmp directory
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表