Chinaunix首页 | 论坛 | 博客
  • 博客访问: 407763
  • 博文数量: 92
  • 博客积分: 3153
  • 博客等级: 中校
  • 技术积分: 780
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-03 16:26
文章存档

2011年(21)

2010年(71)

分类: 云计算

2011-07-15 16:45:10

本文就讨论如何使用编译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联系,发现其实他们也是正常的。

所以有错误,也请放心,虽然你也或跟我一样感到不爽。

好吧先写到这里。

阅读(2000) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~