`

Windows下使用ant编译hadoop的各种小问题

阅读更多

      之前有同学已经写过非常详细的windows下如何编译hadoop的文档(参见《Hadoop开发者入门专刊》)。

          1、关于hadoop的SVN下载。用给匿名用户(Anonymous Access (read-only))使用的SVN库的URL( ht tp://svn.apache.org/repos/asf/hadoop/common/ )去check out副本,始终无法成功。 可以使用开发者用户( Committer Access (read-write) )的库下载副本,下载后的内容是一样的。其URL是: https://svn.apache.org/repos/asf/hadoop/common/ 当然最好还是只下载trunk中的内容,否则下载的东西太多了。。
          2、hadooprelease的jar包(如 hadoop-0.20.2.tar.gz )中会包含所有编译需要的source。但若自己通过svn下载source,则需要分别下载common、hdfs、mapreduce、zookeeper几个不同的库,没办法一次性获得所有source,(当然如果不用trunk的话也可以,但是下载内容巨多...)。
          3、0.20版的hadoop和0.21版的hadoop结构有了较大的改变。用两个release解压后的包中的内容作比较。0.20版的hadoop根目录下有一个ant使用的build.xml可以直接编译出 hadoop-0.20.2-core.jar 包。而0.21版的hadoop的根目录下已经没有这个build.xml文件了,其转而需要分别编译三个必须的jar包: hadoop-common-0.21.0.jar、hadoop-hdfs-0.21.0.jar、hadoop-mapred-0.21.0.jar .
          4、在eclipse中用ant编译hadoop有两个方法,方法一:《Hadoop开发者入门专刊》中方法:新建ant的编译选项进行手工编译。方法二:将ant用的build.xml文件加入ant视图中,选择相应的参数进行编译。
编译过程中遇到的问题:

          问题1: 设置好用ant编译有如下错误提示(可能JAVA_HOME没有设置)BUILD FAILEDH:\FromApache\hadoop-0.20.2\build.xml:415: Unable to find a javac compiler;com.sun.tools.javac.Main is not on the classpath.Perhaps JAVA_HOME does not point to the JDK.It is currently set to "C:\Program Files (x86)\Java\jre6"但是实际上JAVA_HOME在操作系统环境变量里已经设置好了。其实关键这里提示是在eclipse中ant的classpath没有设置好,解决办法是在eclipse中:window->preferences->ant->runtime->classpath->global entries中,将jdk中的tools.jar加入。
          问题2 :提示警告:tty_list::allocate: No tty allocated 这个警告可以忽略。但是不知道为什么有些时候编译会再次提示后自动终止,原因不明。可能是修改过build.xm产生的错误。。(不纠缠了。。浪费太多时间 。。)
          问题3 :sh无法再cygwin下使用的问题,导致编译的错误。错误提示是: [javac] H:\FromApache\hadoop-0.20.2-new\build\src\org\apache\hadoop\package-info.java:5: 未结束的字符串字面值 [javac] user="***...在上述路径中打开package-info.java文件,发现其是由saveVersion.sh生成的。但是在cygwin下是无法使用sh的shell脚本的。所以,将build.xml中的以下内容注释掉,在windows上的这个问题就可以回避了。<!-- <exec executable="sh"> <arg line="src/saveVersion.sh ${version}"/> </exec>-->但是注意,这个问题很奇怪,在eclipse中用方法一第一次编译时,不是上面的错误提示,而是提示:“src\contrib\eclipse-plugin\src\java\org\apache\hadoop\eclipse\launch\HadoopApplicationLaunchShortcut.java*:35: cannot find symbol 。。。这样一组错误。但是,在命令行下,到hadoop根目录中执行: ant jar ,则给出了最开始的提示。按这个提示注释掉saveVersion.sh后,再回到eclipse中按方法一编译就没有问题了。。(所以,目前来看最可靠的方法是在命令行下用ant加参数进行编译。。。)

          问题4 :在不同目录层次上创建java工程导致编译的问题:使用方法二在ant视图中点击jar参数运行,发生错误:BUILD FAILEDH:\FromApache\hadoop-0.20.2\src\build.xml:152: Source resource does not exist: H:\FromApache\hadoop-0.20.2\src\ivy\libraries.properties。其实打开工程目录会发现,ivy\libraries.properties不在src目录下,而是在hadoop-0.20.2根目录下。造成这个的错误原因在于build.xml文件会按环境变量拼接编译过程中需要使用的配置文件的路径(具体可参看build.xml)。我创建hadoop工程时,选择的源文件路径是...\hadoop-0.20.2\src,这就导致在工程里没有build.xml文件(该文件原始路径是在hadoop-0.20.2根目录下)。后来为了使用方法二编译,通过import导入这个文件,导入的文件实际上是从hadoop-0.20.2根目录下复制到...\hadoop-0.20.2\src目录下的一个副本,然后将此副本加入ant视图,用方法二编译时,其实build.xml的执行路径就变成了\hadoop-0.20.2\src目录而不是\hadoop-0.20.2\目录,所以,拼接的路径名就发生了错误。所以,创建工程时,选择的源文件路径注意要能包含build.xml这种ant编译文件,才能用方法二来进行编译。
          问题5 :编译出的文件名问题这个编译出的文件名可能和你下载的release版本名不一致,这个名字其实完全是由build.xml中设定的,所以,不必在意,如果需要用你自己修改代码后编译出的jar来替换原始的hadoop运行环境中的jar包。就把名字改的和原始hadoop运行环境中的jar包名一样然后替换即可。
          补充问题 :如果不用ant编译,则,需要为工程手工添加很多jar来保证工程编译。如果用ant,其会自动根据需要从网上下载相应的jar包,非常方便。当然,手工添加也不是很麻烦,因为这下jar包,基本都在release包中的lib目录下。偷懒的话,一次性全部加入即可。

更多信息请查看 java进阶网 http://www.javady.com

分享到:
评论

相关推荐

    编译hadoop源码所需的软件

    编译hadoop2.7.1所需要的软件,这里有个合集,包括hadoop2.7.1源码,findbugs1.3.9,maven3.3.9,protobuf2.5.0,ant1.9.4

    linux平台编译hadoop所需软件和详细步骤

    资源中包含linux平台编译Hadoop源码的所有软件和详细步骤: 1、下载安装各种软件库 yum -y install svn ncurses-devel gcc* yum -y install lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel 2...

    在linux环境下编译hadoop需要的包

    编译Hadoop源码需要到的包: (1)hadoop-2.7.2-src.tar.gz (2)jdk-8-linux-x64.gz (3)apache-ant-1.9.9-bin.tar.gz (4)apache-maven-3.0.5-bin.tar.gz (5)protobuf-2.5.0.tar.gz

    win7下编译过的hadoop jar包

    win7下编译过的hadoop jar包 hadoop1.1.2 hadoop0.20以后的版本的安装目录下contrib/没有eclipse的hadoop-*-eclipse-plugin.jar插件,需要自己用ant编译。

    linux编译hadoop2.7.4

    在linux下hadoop编译所需要的软件,2.74版本,需要下载的请下载,包含hadoop源码包,编译用的ant包maven和protbuf

    hadoop编译.zip

    apache-ant-1.9.9-bin.tar.gz apache-maven-3.0.5-bin.tar.gz hadoop-2.7.2-src.tar.gz protobuf-2.5.0.tar.gz

    hadoop编译所有工具包(包括ant,maven,findbugs,protobuf),附编译文档

    包括以下工具: apache-ant-1.9.12-bin.tar.gz apache-maven-3.5.4-bin.tar.gz findbugs-3.0.1.tar.gz hadoop-2.6.4-src.tar.gz protobuf-2.5.0.tar.gz 还有一份hadoop编译文档,照着操作顺利编译,亲测可用。

    hadoop2.6.0编译工具(全部除JDK)

    hadoop2.6.0编译的全部工具 包括ant maven findbugs protobuf hadoop-2.6.0-src

    CentOS6.5编译Hadoop2.7.5(64位)详解,已编译好的64位包下载即可用

    我编译用到的包(protobuf-2.5.0.tar.gz,findbugs-3.0.1.tar.gz,apache-ant-1.9.13-bin.tar.gz,snappy-1.1.1.tar.gz)和编译的过程详解(遇到的错误)都在压缩包中(hadoop源码请到官网下载)。 背景Hadoop官网...

    hadoop3.3.0在centos7.7环境编译环境资源,附hadoop编译流程详细说明

    hadoop编译流程详细说明 apache-ant-1.9.16-bin.tar.gz cmake-3.22.4.tar.gz protobuf-2.5.0.tar.gz snappy-1.1.4.tar.gz cyrus-sasl-2.1.26-23.el7.x86_64.rpm cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm cyrus-...

    Hadoop重新编译64 位本地库全部资源包

    包括: apache-ant-1.9.4-bin.tar.gz apache-maven-3.0.5-bin.tar.gz findbugs-3.0.0.tar.gz protobuf-2.5.0.tar.gz hadoop-2.4.0-src.tar.gz (附赠:cenos-6.5-hadoop-2.6.4.tar.gz)

    编译hadoop-2.8.5必备的软件包.txt

    编译hadoop-2.8.5的软件包:jdk1.8、maven-3.6.1、ant-1.9.14、protobuf-2.5.0、hadoop-2.8.5。 具体的安装,我的博文中有介绍。 由于最大只能上传220M的文件,所以将文件分享在百度云,本资源是个txt文件,里面存放...

    hadoop2.7.6编译工具附 源码

    压缩文件包含ant,maven,jdk1.7,protobuf,hadoop.2.7.6-src 文件 以上tar包整合亲测可以编译,教程以及编译提速请参考我的博客https://blog.csdn.net/qq_18730505/article/details/81060688

    编译hadoop-2.6-cdh5.15.0.rar

    hadoop-eclipse-plugin-2.6.0-cdh5.15.0编译过程需要的工具 包括 hadoop2x-eclipse-plugin-master 及其配置文件 ant, 缺失的jar包和编译过程说明 包含 用于配置eclipse的 hadoop.dll文件 winutils.exe文件

    hadoop2.8.5编译所需软件

    hadoop2.8.5编译所需软件的压缩包,压缩包内清单为 * hadoop-2.8.5-src.tar.gz * jdk-8u144-linux-x64.tar.gz * apache-maven-3.6.3-bin.tar.gz * apache-ant-1.9.15-bin.tar.gz * protobuf-2.5.0.tar.gz

    Hadoop源码编译需要工具

    里面是 protobuf-2.5.0.tar.gz apache-ant-1.9.9-bin.tar.gz 和meavn

    centos7_hadoop2.7.3_编译所需工具

    在centos7下编译hadoop2.7.3所需工具:apache-ant-1.9.4-bin.tar.gz、apache-maven-3.3.3-bin.tar.gz、findbugs-3.0.1.tar.gz、hadoop-2.7.3-src.tar.gz、protobuf-2.5.0.tar.gz

    Hadoop编译需要的jar包

    apache-ant-1.9.4-bin.tar,apache-maven-3.0.5-bin.tar,findbugs-3.0.0.tar,protobuf-2.5.0.tar

    hadoop-lzo-master

    1.安装 Hadoop-gpl-compression 1.1 wget http://hadoop-gpl-compression.apache-extras.org.codespot.com/files/hadoop-gpl-compression-0.1.0-rc0.tar.gz 1.2 mv hadoop-gpl-compression-0.1.0/lib/native/Linux-...

    hadoop-2.7.5.tar.gz(CentOS-6.7编译)

    CentOS-6.7编译,使用了protobuf、ant、findbugs、maven等工具

Global site tag (gtag.js) - Google Analytics