从apache下载的tar.gz的hadoop-1.1.0包中本来就包括了src的源码。可以方便我们查看源码调试。
(从github上下载了最新的hadoop-common的源码,发现hadoop-2.0已经是使用maven管理代码了。)
在eclipse中新建java project,去掉“Use Default location”的复选框的勾,自定义项目为hadoop-1.1.0程序所在的位置。然后点击finish即可。
完成后,项目下面的lib包,以及Source Folder源码包都已经正确的配置好了。如下图。
根据网上的资料,编译hadoop的源码,需要用到sed,sh的linux shell命令。安装好了cygwin,把c:\cygwin\bin加入到Path目录。然后直接使用eclipse ant(eclipse自带的)编译。
Winseliu@WINSE ~ $ cygcheck -c cygwin Cygwin Package Information Package Version Status cygwin 1.7.17-1 OK
由于linux和windows的换行符的不同(同事周帅哥在导数据也遇到这样的问题),直接编译会失败。
需要对src/saveVersion.sh的shell文件进行修改:
- user=`whoami` + user=`whoami | tr -d '\r'`
然后再编译一次就ok了!
------------经过上面步骤已经可以正确的编译hadoop-core的源码了。
在监控集群的时刻,我们一般都在自己常用的windows系统上面通过50030和50070来了解集群的情况。但是如果没有域名服务器,那,我们就不得不修改hosts文件。我们可以通过使用ip地址替换对应的hostname来访问,但是比较麻烦。如果在服务器响应请求的时刻,解析生成html的时刻就已经是ip地址那就最好不过了!
在瞎逛的时刻,看高一个牛人实现过,但是没有提供方法和步骤。
其实,直接看看jsp的源码,修改起来不算太难。把jsp里面的hostname转换为IP地址即可。
把上图的hostname通过InetAddress获取转换为IpAddress地址。
- String namenodeHost = jspHelper.nameNodeAddr.getHostName(); + String namenodeHost = jspHelper.nameNodeAddr.getAddress().getHostAddress(); - InetAddress.getByName(namenodeHost).getCanonicalHostName() + ":" + + InetAddress.getByName(namenodeHost).getHostAddress() + ":" +
全部修改完成后,再次运行hadoop-1.1.0 build.xml的ant命令,会调用自定义的jsp-compile把jsp转换成java类保存到build/src目录下面。javac编译的时刻会同时编译build/src目录下的源码。
如果你只想编译这些jsp,把javac中的srcdir的目录只保留build.src应该就可以咯。
我是直接把build/src作为Source Folder,然后把这个Source Folder下的编译文件放置的特定的目录,然后覆盖原来jar里面的class即可!
参考:
Hadoop源代码eclipse编译教程[ http://wenku.baidu.com/view/c1ad44323968011ca3009199.html ]
相关推荐
本文档将详细介绍如何在Windows环境下使用Eclipse IDE编译Hadoop源码的过程,为读者提供一个直观的学习指南。 #### 二、准备工作 ##### 2.1 Hadoop源码下载 首先,需要从Apache官方SVN仓库下载Hadoop源码。下载...
- 需要在Hadoop-1.2.1源码包中的`src/examples/org/apache/hadoop/examples/WordCount.java`进行必要的修改。 - 编译Java文件,这一步可能会比较耗时。 2. **替换编译后的类文件**: - 将编译好的`WordCount*....
资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。
7. `work`目录:存放Tomcat处理JSP页面时生成的编译后的Java类文件,方便调试和分析。 在部署Web应用程序到Tomcat时,开发者通常会创建一个WAR文件,然后使用Tomcat的部署工具(如`bin/deployer/htpasswd`)进行...
这与C++等其他语言有所不同,Java的源码和编译结果都是以类的形式存在,增强了代码的组织性。 其次,Java的一个重要特点是其对指针的处理。Java完全屏蔽了指针操作,引入了垃圾回收机制,这极大地简化了内存管理,...
最后,JVM将字节码解释执行或通过即时编译(JIT)转化为机器码,以提高性能。 Java程序的结构基于类和对象,它遵循类的继承、封装和多态等面向对象原则。类定义了对象的属性和行为,而对象是类的实例。Java支持接口...
1. `org.apache.jasper.jar`: 该JAR包用于支持JSP页面的编译和运行。可以从以下链接下载: ``` http://cn.jarfire.org/org.apache.jasper.html ``` 2. `commons-el.jar`: 用于支持表达式语言(EL)的解析。可以从...
2. **Web应用**:Java Servlets、JavaServer Pages(JSP)、Spring框架等技术用于构建动态网站和企业级应用服务器端逻辑。 3. **移动应用**:尤其是在Android平台上,Java是主要的开发语言,用于创建各种手机应用,...
此外,Java还有丰富的类库,如Spring框架用于企业级应用开发,Apache Hadoop用于大数据处理,JUnit用于单元测试,以及无数的其他库,覆盖了各种开发需求。 【AlexB-master】文件名通常表示这是项目的主分支或源码库...
2. **编译产物**(Compiled Classes):编译后的.java文件变为.class文件,存放在build或target目录下。 3. **资源文件**(Resources):如图片、音频、配置文件等,可能在src/main/resources或其他指定路径。 4. **...
【标题】"Tomcat Udemy" 课程源码解析 【描述】这是一份与"Maven项目"相关的学习资源,源自詹姆斯·李(James Lee)的Jenkins课程。在这个压缩包中,你将找到用于实践教学的源代码,这些代码是按照詹金斯的构建流程...