前言:html
毕业两年了,以前的工做一直没有接触过大数据的东西,对hadoop等比较陌生,因此最近开始学习了。对于我这样第一次学的人,过程仍是充满了不少疑惑和不解的,不过我采起的策略是仍是先让环境跑起来,而后在能用的基础上在多想一想为何。java
经过这三个礼拜(基本上就是周六周日,其余时间都在加班啊T T)的探索,我目前主要完成的是:apache
1.在Linux环境中伪分布式部署hadoop(SSH免登录),运行WordCount实例成功。 http://www.cnblogs.com/PurpleDream/p/4009070.html windows
2.本身打包hadoop在eclipse中的插件。 http://www.cnblogs.com/PurpleDream/p/4014751.html app
3.在eclipse中访问hadoop运行WordCount成功。 http://www.cnblogs.com/PurpleDream/p/4021191.html less
因此我下边会分三次记录下个人过程,为本身之后查阅方便,要是能帮助到其余人,天然是更好了!eclipse
===============================================================长长的分割线====================================================================分布式
正文:ide
若是你想在eclipse中安装hadoop的插件,一个很重要的问题就是hadoop的版本与eclipse版本的匹配问题,若是不匹配,可能会致使不少问题。oop
综上,我在完成了在Linux的CentOS系统中安装hadoop并简单运行WordCount以后(具体参看本文前言中的博客连接),将学习的重点放到了hadoop的eclipse插件上。其实网上也有部分文章在介绍如何编写插件,可是因为个人eclispe版本是Juno,而以前在CentOS安装的是hadoop-1.0.1,因此没有找到彻底匹配的成功案例。因此最终决定本身也动手变异一个本身的hadoop插件。
在有了这个想法以后,一开始会以为特别困难,可是在真正去作以后,会发现不少问题其实仍是能够解决的,只要你懂得若是使用百度和谷歌,多参考一下别人的文章,汲取精华,最终必定会成功的。
第一步,肯定大体流程:
1.首先我须要ant编译,而后就是hadoop-1.0.1.tar.gz这个安装包,还有就是eclipse。
2.针对我本身的环境,电脑是Win7,eclispe是Juno,下载了hadoop-1.0.1.tar.gz,就差ant以前没有安装。
第二步,安装ant:
1.我参考的是这篇文章http://blog.csdn.net/yang382197207/article/details/10185251,我当时下载的是apache-ant-1.9.4,其余的步骤按照这篇文章介绍的配置就会成功。
第三步,在正式创建项目以前,我在介绍下个人环境: OS: windows 7, Eclipse: Juno, JDK: 1.6.0_43, Hadoop: 1.0.1
1.首先在Eclipse中新建一个Java项目,名字叫hadoop-1.0.1-eclipse-plugin,其实这个名字你能够随意的。
2.解压hadoop-1.0.1.tar.gz,在解压后的目录中(个人是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1),依次将下面的文件放到项目中:
(1).将\hadoop-1.0.1\src\contrib\eclipse-plugin里面的全部文件以及\hadoop-1.0.1\src\contrib\build-contrib.xml拖拽到项目中
(2).将根目录\hadoop-1.0.1里的全部.jar文件拖拽到eclipse项目中bin目录下。
3.打开项目中的build-contrib.xml,作以下的配置:
(1).找到<property name="hadoop.root" location="hadoop-1.0.1解压缩后的目录"/>
(2).找到<property name="eclipse.home" location="本身的eclipse的目录"/>
(3).找到<property name="version" value="hadoop的版本号"/>
能够参考个人配置,如图:
<property name="name" value="${ant.project.name}"/> <property name="root" value="${basedir}"/> <property name="hadoop.root" location="D:/SettingUp/ITSettingUp/Hadoop/hadoop-1.0/hadoop-1.0.1"/> <property name="eclipse.home" location="D:/HaveSetted/ITHaveSetted/Eclipse"/> <property name="version" value="1.0.1"/>
4.打开项目中的build.xml,作以下的配置:
(1).将文件开头的 <import file="../build-contrib.xml"/> 修改成 <import file="build-contrib.xml"/>
(2).在<javac...>里以下图加入includeantruntime="on",效果以下:
<target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib"> <echo message="contrib: ${name}"/> <javac encoding="${build.encoding}" srcdir="${src.dir}" includes="**/*.java" destdir="${build.classes}" debug="${javac.debug}" deprecation="${javac.deprecation}" includeantruntime="on"> <classpath refid="classpath"/> </javac> </target>
(3).在<path id="classpath">中添加:<path refid="hadoop-jars"/>,效果以下:
<!-- Override classpath to include Eclipse SDK jars --> <path id="classpath"> <pathelement location="${build.classes}"/> <pathelement location="${hadoop.root}/build/classes"/> <path refid="eclipse-sdk-jars"/> <path refid="hadoop-jars"/> </path>
(4).在<target name="jar" depends="compile" unless="skip.contrib">这个标签里,在<copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>这个配置的下面添加以下几个jar包的配置:
<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/> <copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.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/jackson-core-asl-1.8.8.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"/>
最终效果如图:
<!-- Override jar target to specify manifest --> <target name="jar" depends="compile" unless="skip.contrib"> <mkdir dir="${build.dir}/lib"/> <copy file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core-1.0.1.jar" verbose="true"/> <copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.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/commons-httpclient-3.0.1.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/jackson-core-asl-1.8.8.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"/> <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>
(5).在文件末尾</project>标签以前添加配置:
<path id="hadoop-jars"> <fileset dir="${hadoop.root}/"> <include name="hadoop-*.jar"/> </fileset> </path>
5.打开hadoop-1.0.1的解压缩目录(个人是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1),复制两个jar包到对应的目录文件夹,以个人文件目录结构举例以下:
(1).将D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\hadoop-core-1.0.1.jar 复制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\这个文件夹中
(2).将D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib\commons-cli-1.2.jar复制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\ivy\lib\Hadoop\common这个文件夹中
6.再回到eclipse,打开项目中的\META-INF\MANIFEST.MF文件,作以下的添加:
Bundle-ClassPath: classes/,
lib/hadoop-core-1.0.1.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.ja,
7.通过上边的配置,基本已经完成,咱们能够编译项目了。右击build.xml文件选择 Run As Ant Build,编译成功,生成的hadoop-1.0.1-eclipse-plugin.jar在hadoop-1.0.1解压目录的\build\contrib\eclipse-plugin文件夹里面。
第四步,固然就是在eclipse中配置咱们编译好的插件。
1.把hadoop-1.0.1-eclipse-plugin.jar文件放到eclipse安装目录的plugins中,重启eclipse。重启后,会在Window->Open Perspective->Other里,看到大象图标的Map/Reduce出现,或者是window->Preferences中看到Hadoop Map/Reduce这个选项。
2.window->Preferences中点击Hadoop Map/Reduce这个选项,将Hadoop的那个解压缩目录(个人是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1)的路径配置上,配置效果图以下:
3.而后咱们在Window->Open Perspective->Other里,点击Map/Reduce,切换到这个模式,截图以下:
4.切换到Map/Reduce模式后,咱们看到画面(4)中的截图,点击右下角的两个小图标,测试有没有反应,若是有反应,暂时先别配置,这个我下篇博客会具体讲。若是怎么点都没有反应,则能够作以下操做:
(1).打开项目中的\META-INF\MANIFEST.MF文件,找到以前编译时,添加的Bundle-ClassPath: classes/ 这个位置,以前咱们添加了7个jar包的配置,再增长四个,以下:
lib/hadoop-common-0.21.0.jar,
lib/hadoop-hdfs-0.21.0.jar,
lib/log4j-1.2.15.jar,
lib/hadoop-mapred-0.21.0.jar
(2).而后咱们还须要去网上下载这四个jar包放到下面的文件夹中,以个人目录举例:D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib。
(3).而后在从新编译便可,在替换原来的插件时,在重启eclipse的过程当中,你能够这样作:先删除原来的插件,原来重启eclipse,确认Map/Reduce没了;而后再关掉eclipse,将新的插件放到plugins里,以后再次启动eclipse。解决这个问题时我在网上参考的文章是:http://blog.csdn.net/kky2010_110/article/details/7774747,你们也能够看看~。
(4).上边所提到的截图以下:
通过上边说的这些步骤,eclipse中的hadoop插件咱们算是编译完了,这个过程当中必定要注意的是,不要怕失败,多尝试,由于hadoop版本与eclipse版本是有关系的,因此致使你的版本和个人不太一致,可能会失败,可是也可能会成功。因此在这里再次提醒,注意文章开始,我对本身的环境的版本的介绍,尤为是eclipse和hadoop的版本。建议你们若是有时间的话,能够先无论版本,按照个人步骤先走一遍,若是实在是不成功的话,则能够找个和我同样的eclipse和hadoop版本,再体验一回。由于,我在这个过程当中,就发现,因为是第一次学hadoop,不见到成功的效果,总以为少点什么,总想见识一下,莫取笑哈~
至于下一步,若是配置Location和运行WordCount,我会在下一篇博客中具体说明,谢谢支持,以为文章还不错的话,多多点赞,多多留言哈,这将使我充满动力!