编译过程 目录结构 eclipse目录 F:\eclipse eclipse工程目录 F:\workspace Step1 导入 Hadoop-eclipse 插件工程 获取 hadoop-1.2.1.tar.gz 解压缩到 Eclipse workspace 目录下 在 Eclipse 中选择 File—>Import—>Existing Projects into Workspace 导入已有项目,路径为: F:\workspace\hadoop-1.2.1\src\contrib\eclipse-plugin,其默认的项目名称是 MapReduceTools Step2 导入所需 jar 包 在项目 MapReduceTools 中新建 lib 目录,将 hadoop-1.2.1 下的 hadoop-core-1.2.1.jar(重命名为 hadoop.core.jar),及其 lib 目录下的 commons-cli-1.2.jar、commons-lang-2.4.jar、commons-configuration-1.6.jar、jackson-mapper-asl-1.8.8.jar、jackson-core-asl-1.8.8.jar、commons-httpclient-3.0.1.jar 拷贝到该目录。 Step3 build-contrib.xml 将 F:\workspace\hadoop-1.2.1\src\contrib\build-contrib.xml(与 eclipse-plugin 包在同一级目录)拷贝到 MapReduceTools 项目目录中。 修改 build-contrib.xml,注意路径用 "/" <!— 修改 hadoop 存放目录—> <property name="hadoop.root" location="F:/workspace/hadoop-1.2.1"/> <!— 添加 eclipse 存放目录—> <property name="eclipse.home" location="F:/eclipse" /> <!— 添加 hadoop 版本—> <property name="version" value="1.2.1"/> Step4 build.xml <!— 1.修改 build-contrib.xml 的位置,去掉"../"—> <import file="build-contrib.xml"/> <!— 2.添加如下,否则提示"软件包 org.apache.hadoop.fs 不存在"—> <path id="hadoop-jars"> <fileset dir="${hadoop.root}/"> <include name="hadoop-*.jar"/> </fileset> </path> <path id="classpath"> <pathelement location="${build.classes}"/> <pathelement location="${hadoop.root}/build/classes"/> <path refid="eclipse-sdk-jars"/> <path refid="hadoop-jars"/> </path> <!— 3.修改并添加 jar 包拷贝—> <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> Step5 MANIFEST.MF 修改 META-INF/MANIFEST.MF Bundle-ClassPath: classes/, lib/hadoop-core.jar , lib/commons-cli-1.2.jar, lib/commons-httpclient-3.0.1.jar, lib/jackson-core-asl-1.8.8.jar, lib/jackson-mapper-asl-1.8.8.jar, lib/commons-configuration-1.6.jar, lib/commons-lang-2.4.jar Step6 Ant 编译 方法1: 右键 MapReduceTools 工程,Properties—>Builders—>New—>Ant Builder New_Builder—>Edit: Name (见名知意): plugin_Builder Buildfile (build.xml的位置): F:\workspace\hadoop-1.0.4\src\contrib\eclipse-plugin\build.xml Project—>Build Project 方法2:利用ant进行编译。在MapReduceTools项目下,找到build.xml,右键点击,选择”Run as” ->”Ant Build”.在编译成功后,D:\hq\sdk\hadoop-1.2.1\build\contrib\eclipse-plugin\hadoop-eclipse-plugin-1.2.1.jar.把hadoop-eclipse-plugin-1.2.1.jar拷贝到eclipse\plugins目录下。重启eclipse。点击”Open Perspective”, 就会看见”Map/Reduce” 编译成功会输出 BUILD SUCCESSFUL ^^ ant 编译警告排除 执行ant编译时,总会出现如下的警告: [javac] D:\hq\sdk\hadoop-1.2.1\src\contrib\eclipse-plugin\build.xml:77: warning: ‘includeantruntime’ was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 虽然不影响编译,但还是解决才安心。其实解决方法也很简单,只需要根据提示在javac任务中添加includeAntRuntime=”false”属性即可。例如: 修改前: <javac srcdir="${srcDir}" destdir="${binDir}" /> 修改后: <javac srcdir="${srcDir}" destdir="${binDir}" includeAntRuntime="false" /> Step7 安装插件 编译结果在 F:\workspace\hadoop-1.2.1\build\contrib\eclipse-plugin 目录下 将 hadoop-eclipse-plugin-1.2.1.jar 放入 F:\eclipse\plugins 目录下,重启 eclipse Step7 配置插件 打开 map/Reduce Locations 右键 New Hadoop Location…,输入 Location Name(见名知意),修改 Map/Reduce Master 和 DFS Master,User name 设置为你启动 hadoop 的名称。 设置 Advanced parameters 修改 hadoop.tmp.dir 为你 hadoop 集群中设置的目录 修改 dfs.replication 为你 hdfs-site.xml 文件中配置的值 重启 eclipse 8.定义一个Hadoop Location  Location name: 这里可以随便写一个名字 Map/Reduce Master : host : 这里写 你在 mapred-site.xml 中设置的地址 (如果你是伪分布式的,这里设置的可能是 localhost:9001) (用ifconfig查看一下你的虚拟机IP地址,这里的localhost换成虚拟机的IP就OK) Port: 9001 DFS Master : host:这里是你在core-site.xml 中设置的地址(同上) port :9000 上面第二个选项我的是默认的设置。 然后 finish 即可 |