12 March 2013

author : xiajun

1.首先安装JDK,和ant

2.将eclipse的plugins目录拷贝到 /home/hadoop/eclipse/plugins (注:eclipse只需要plugins目录就好了)

3.在hadoop解压目录/home/hadoop/hadoop-1.1.1/,找到src\contrib\eclipse-plugin\build.xml


	<!-- 添加到xml中 -->
	<path id="hadoop-core-jar">
		<fileset dir="${hadoop.root}/">
			<include name="hadoop*.jar" />
		</fileset>
	</path>

	<!-- 找到 id=classpath 节点 添加 hadoop-core-jar 如下 -->
	<path id="classpath">
	    <pathelement location="${build.classes}" />
	    <pathelement location="${hadoop.root}/build/classes" />
	    <path refid="eclipse-sdk-jars" />
	    <path refid="hadoop-core-jar" />
	</path>

	<!-- 找到target name="jar" 将 copy节点的那两行换成如下的7行copy节点 其它不用动  -->
	<target name="jar" depends="compile" unless="skip.contrib">
	    <mkdir dir="${build.dir}/lib" />
	    <copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true" />
	    <copy file="${hadoop.root}/lib/commons-cli-1.2.jar" todir="${build.dir}/lib" verbose="true" />
	    <copy file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true" />
	    <copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true" />
	    <copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true" />
	    <copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true" />
	    <copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true" /> 
	    <jar jarfile="${build.dir}/hadoop-${name}-${version}.jar" manifest="${root}/META-INF/MANIFEST.MF">
	      <fileset dir="${build.dir}" includes="classes/ lib/" />
	      <fileset dir="${root}" includes="resources/ plugin.xml" />
	    </jar>
	</target>

4.找到src\contrib\build-contrib.xml,添加以下几行:


	<property name="version" value="1.1.1" />
	<property name="ivy.version" value="2.1.0" />
	<property name="eclipse.home" location="..." /><!-- 这是你eclipse存放的目录,我的目录是/home/hadoop/eclipse -->

5.找到MANIFEST.MF,编辑classpath:加如以下几个jar

Bundle-ClassPath: classes/,           
 lib/hadoop-core.jar,           
 lib/commons-cli-1.2.jar,           
 lib/commons-configuration-1.6.jar,           
 lib/commons-httpclient-3.0.1.jar,           
 lib/commons-lang-2.4.jar,           
 lib/jackson-core-asl-1.8.8.jar,           
 lib/jackson-mapper-asl-1.8.8.jar 6.进入目录hadoop-1.1.1\src\contrib\eclipse-plugin,然后直接输入ant回车编译

7.在hadoop-1.1.1\build\contrib\eclipse-plugin路径下找到编译好的插件。

8.这样编译是需要联网下载一些jar包的,如果有maven私服的话可做如下修改


    <!-- 找到 hadoop-1.1.1/src/contrib/build-contrib.xml 修改ivy_repo_url节点 -->
    <property name="ivy_repo_url" value="http://XXXXXXX/org/apache/ivy/ivy/2.1.0/ivy-2.1.0.jar" />
    <!-- 找到 hadoop-1.1.1/ivy/ivysettings.xml  修改 repo.maven.org节点 -->
    <property name="repo.maven.org" value="http://XXXX.com" override="false" />     <!-- 私服的地址 -->
    <property name="oss.sonatype.org" value="https://oss.sonatype.org/content/groups/public/" override="false" />
    <property name="snapshot.apache.org" value="http://XXX.com" override="false" />     <!-- 私服的地址 -->

9.再执行ant 命令 10.远程调试mapreduce 参考文档: http://zhangjie.me/eclipse-debug-hadoop/

10.1 修改mapred-site.xml 文件


<property> 
       <name>mapred.child.java.opts</name> 
       <value>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000</value><!-- suspend 当有多个map或者reduce时必须为y -->
    </property>

10.2 重启hadoop ,并将mapreduce程序上传至服务器 执行 ./hadoop jar xxx.jar com.xx.xxmain

10.3 为eclipse添加远程调试 Run–>debug configurations ..–>选择弹出页面左侧”remote java application”右键 new –>host 为slaves的ip port为上面的8000端口–>apply–>debug.打上断点即可调试了。



blog comments powered by Disqus