`
亦梦亦真
  • 浏览: 229634 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
社区版块
存档分类
最新评论

编译Hadoop的append分支源码 .

 
阅读更多
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联系,发现其实他们也是正常的。

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

分享到:
评论

相关推荐

    win 7 64上编译 Hadoop 2.7.3 源码

    访问Apache Hadoop官网(http://hadoop.apache.org/),选择稳定版本Hadoop 2.7.3进行下载。下载完成后,解压至合适的位置。 #### 四、编译过程 1. **阅读BUILDING.txt**:在Hadoop源码目录下有一个名为`BUILDING....

    Hadoop 2.7.4 Windows 7 64位 编译bin(包含winutils.exe, hadoop.dll等)

    标题中的“Hadoop 2.7.4 Windows 7 64位 编译bin(包含winutils.exe, hadoop.dll等)”指的是一个专为Windows 7 64位操作系统编译的Hadoop二进制包,包含了关键组件winutils.exe和hadoop.dll。这些文件对于在Windows...

    hadoop-2.6.0-cdh5 编译的bin文件 hadoop.dll winutils.exe

    bin目录 hadoop.dll winutils.exe hadoop hadoop.cmd hadoop.exp hadoop.lib hadoop.pdb hdfs hdfs.cmd hdfs.dll hdfs.lib hdfs.pdb libwinutils.lib mapred mapred.cmd rcc winutils.pdb yarn yarn.cmd 亲测可用,...

    hadoop-3.1.3.tar.gz编译后的源码包

    源码包还包含了构建脚本和测试用例,你可以通过这些来编译源码、运行测试,确保你理解的正确性。这也能帮助你了解Hadoop的构建过程,以及如何在不同的环境下部署和运行Hadoop。 总的来说,这个hadoop-3.1.3.tar.gz...

    如何使用hadoop进行数据分析.zip

    如何使用hadoop进行数据分析.zip 如何使用hadoop进行数据分析.zip 如何使用hadoop进行数据分析.zip 如何使用hadoop进行数据分析.zip 如何使用hadoop进行数据分析.zip 如何使用hadoop进行数据分析.zip 如何使用hadoop...

    hadoop调试工具hadoop.dll和hadoop.exp和winutils.exe

    接着,hadoop.exp文件是导出表文件,通常与编译过程相关。在C++编程中,当创建一个动态链接库时,需要明确指定哪些函数和变量应该被外部程序访问。hadoop.exp文件定义了这些导出项,确保其他程序可以正确地链接到...

    win10编译过的hadoo2.6.4包括hadoop.dll和winutils.exe

    其中包含的关键组件——hadoop.dll和winutils.exe,对于在Windows上运行Hadoop至关重要。 hadoop.dll是Hadoop的动态链接库文件,它包含了Hadoop核心服务所需的各种函数和接口。在Windows系统中,DLL文件允许多个...

    hadoop-2.6.0-cdh5.14.0编译的bin文件 hadoop.dll winutils.exe

    hadoop.dll winutils.exe hadoop hadoop.cmd hadoop.exp hadoop.lib hadoop.pdb hdfs hdfs.cmd hdfs.dll hdfs.lib hdfs.pdb libwinutils.lib mapred mapred.cmd rcc winutils.pdb yarn yarn.cmd

    Hadoop2.7.3 Window10 hadoop.dll winutils.exe

    在本文中,我们将深入探讨如何在Windows 10操作系统中使用Hadoop 2.7.3版本进行开发,特别关注“hadoop.dll”和“winutils.exe”这两个关键组件。Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它允许在...

    hadoop3.3.0.dllwinutil.zip

    hadoop3.3.0.dll&winutil工具连接 Apache Hadoop 3.3.0 incorporates a number of significant enhancements over the previous major release line (hadoop-3.2). Overview Users are encouraged to read the full...

    hadoop的hadoop.dll和winutils.exe下载

    在Hadoop生态系统中,`hadoop.dll`和`winutils.exe`是两个关键组件,尤其对于Windows用户来说,它们在本地开发和运行Hadoop相关应用时必不可少。`hadoop.dll`是一个动态链接库文件,主要用于在Windows环境中提供...

    Hadoop 2.7.4 Windows 64位 编译bin(包含winutils.exe, hadoop.dll等)

    解决hadoop版本不同而引起的org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V

    hadoop2.7.3的hadoop.dll和winutils.exe

    在这个版本中,`hadoop.dll`和`winutils.exe`是两个关键组件,它们对于在Windows环境下运行Hadoop至关重要。 首先,`hadoop.dll`是一个动态链接库文件,它是Hadoop在Windows操作系统上的核心组件之一。DLL文件在...

    hadoop.dll & winutils.exe For hadoop-2.6.0

    在Hadoop生态系统中,`hadoop.dll`和`winutils.exe`是两个关键组件,尤其对于Windows用户来说。本文将详细介绍这两个文件以及它们在Hadoop 2.6.0版本中的作用。 `hadoop.dll`是Hadoop在Windows环境下运行所必需的一...

    各个版本Hadoop,hadoop.dll以及winutils.exe文件下载大合集

    通常,Hadoop是设计在Linux系统上运行的,但开发者为了在Windows上运行Hadoop,会创建像`hadoop.dll`这样的动态链接库文件。这个文件使得Windows系统能够理解Hadoop的某些操作,如与HDFS交互。 `winutils.exe`是另...

    Centos7编译64位 Hadoop2.8.4.tar.gz

    本教程将详细解释如何在CentOS7系统上编译64位的Hadoop2.8.4版本。 首先,确保你的CentOS7系统是64位的,可以通过运行`uname -m`命令来检查。接着,安装必要的依赖库,包括Java开发环境(JDK),GCC编译器,Apache ...

    Hadoop2.7.6 在windows下需要的hadoop.dll winutils.exe等文件

    1. **下载和解压Hadoop**:获取Hadoop 2.7.6的预编译版本或者自行编译,然后将其解压缩到一个适当的目录。 2. **配置环境变量**:设置`HADOOP_HOME`环境变量指向Hadoop安装目录,并将`%HADOOP_HOME%\bin`添加到`...

    hadoop-3.1.4.tar.zip

    1. **源代码**:这是Hadoop项目的核心,由Java语言编写,包括HDFS(Hadoop Distributed File System)和MapReduce这两个主要组件的源码,以及YARN(Yet Another Resource Negotiator)资源管理器和其他相关模块。...

    hadoop-2.7.6src.tar.gz的压缩包

    通过分析和编译这些源代码,开发者可以了解Hadoop的每一个细节,包括数据流的处理、文件系统的操作、资源调度的策略等。这对于优化Hadoop集群的性能、开发新的数据处理应用程序或者解决特定场景下的问题至关重要。...

    hadoop-2.7.4.tar.gz

    这个“hadoop-2.7.4.tar.gz”文件是针对Windows平台编译好的Hadoop 2.7.4版本安装包,提供了在Windows系统上部署和运行Hadoop集群的可能性。 在Hadoop 2.7.4中,有以下几个关键知识点: 1. **HDFS(Hadoop ...

Global site tag (gtag.js) - Google Analytics