Hadoop源代码修改编译执行

针对的是Hadoop 0.20.2版本,windows 平台。Linux可以参照着来弄(之前必须安装有jdk,ant,cygwin,并且配置好环境变量,使得cmd命令行下可以执行相应的命令)

1.首先到官网上把该版本的tar包下载下来,并解压到$HADOOP_HOME目录下

2.进入到$HADOOP_HOME/src目录中,修改saveVersion.sh文件,因为原saveVersion.sh生成的package-info.java有问题。更正内容为:

在这里特别郑重感谢网上的兄弟们!这是从网上找到的

unset LANG    unset LC_CTYPE    version=$1   user=`whoami` #此处修改成固定值,如jbm3072    date=`date`    if [ -d .git ]; then      revision=`git log -1 --pretty=format:"%H"`      hostname=`hostname`      branch=`git branch | sed -n -e 's/^* //p'`      url="git://$hostname/$cwd on branch $branch"   else     revision=`svn info | sed -n -e 's/Last Changed Rev: \(.*\)/\1/p'`      url=`svn info | sed -n -e 's/URL: \(.*\)/\1/p'`    fi    mkdir -p build/src/org/apache/hadoop    cat << EOF | \      sed -e "s/VERSION/$version/" -e "s/USER/$user/" -e "s/DATE/$date/" \          -e "s|URL|$url|" -e "s/REV/$revision/" \          > build/src/org/apache/hadoop/package-info.java    /*    * Generated by src/saveVersion.sh    */   @HadoopVersionAnnotation(version="VERSION", revision="REV",                              user="USER", date="DATE", url="URL")    package org.apache.hadoop;    EOF  

3.cmd进入到$HADOOP_HOME目录中运行ant命令,就可以编译成功了,他会在$HADOOP_HOME目录下生成一个build目录

4.cmd进入$HADOOP_HOME/build/class目录,输入命令

     jar cvf hadoop-0.20.2-core.jar *

  生成core的jar包

5.将该jar包覆盖掉所有节点上的$HADOOP_HOME/目录下的hadoop-0.20.2-core.jar,这里有一个过程特别注意,再做这一步的时候一定要把原开启的hadoop全部关掉(stop-all.sh),然后再做替换!替换后在重新开启(start-all.sh),更改conf中core-site.xml,hdfs-site.xml,mapred-site.xml最好也是先关掉,改了后再重启

6.如果代码需要更改的,就更该hadoop中的相应代码,然后重复步骤3-5即可。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/psjgd.html