一、前提要求:
hadoop,具体配置可以参考我的另一篇文章。
https://mp.csdn.net/postedit/88987414
二、环境搭建
配置方法及插件下载链接如下:
https://github.com/winghc/hadoop2x-eclipse-plugin
1、下载并解压插件包
(git clone https://github.com/winghc/hadoop2x-eclipse-plugin.git)
2、 重新编译插件为你所需要的hadoop版本,这里我用的是hadoop-2.8.5
①切换至插件包下的src/contrib/eclipse-plugin文件夹。
②ant编译插件(由于版本不同,依赖jar文件不同等原因,这里会报很多错,下面以hadoop2.8.5为例)
ant jar -Dversion=2.8.5 -Dhadoop.version=2.8.5 -Declipse.home=/opt/tools/eclipse -Dhadoop.home=/opt/tools/hadoop
※切记,在执行之前,先将src/contrib/eclipse-plugin/build.xml中第68行处<target>标签的depends属性中的后半部分ivy-resolve-common去掉,否则编译会非常慢。
这次编译会很快执行完成,并报错,错误信息如下:
没有找到build.xml文件中第119行所引用的,/opt/tools/hadoop/share/hadoop/common/lib/commons-collections-3.2.1.jar文件。
用grep命令查看一下,原来是版本没有对应上,版本号改之!
结果发现,build.xml文件中,通过通配符引用了各个jar文件的版本号,具体修改位置不在这个文件中, 这个如何是好?
别慌,再仔细看看提供插件的网页,最下方编译问题解决方案:
发现有个libraries.properties文件是用来匹配hadoop依赖库版本的,先进去看一看究竟。
如图所示,这个文件正是配置各个依赖文件版本的,由于条目过多,这里我们一步一步来,先把之前报错的第32行,和第17行hadoop版本的地方修改(具体版本要根据你本机的实际情况来,我这里以hadoop-2.8.5为例)。
ok,修改完毕后再次执行ant命令进行编译,额。。。。又是jar包版本问题:
不过,这次我们已经有经验了,先确定本机的jar版本号,然后去libraries.properties文件中改之~
由于libraries.properties条目过多,可以直接/slf4j-log4j来定位。
修改之后再次执行ant命令来编译,因为依赖的jar文件很多,所以还会多次出现之前的错误,这里不再做赘述,依照上面的修改方法一一改之。
※注:有些版本对应不上也可以通过编译,这里建议,把libraries.property中的版本号都和hadoop/share/hadoop/common/lib下的jar文件修改一致。
※下面这个错误比较特殊,之前用的是htrace-core-x.y.z.jar现在版本是htrace-core4-x.y.z-incubating.jar↓
※所以这次要修改的文件有2处,libraries.properties文件和build.xml文件如下:
这里有一个坑,因为build.xml文件中有2处关于htrace-core的配置,而ant编译时,只需要上面129行的这里配置正确就会编译成功,但是eclipse启动后则需要用到下面的lib/htrace-core....,仔细核对了N次才发现:还有一点要注意,那就是修改之后需要重新编译!!!
编译成功:如下信息。
根据说明,编译成功后,当build/contrib/eclipse-plugin/目录下会生成一个hadoop-eclipse-plugin-x.y.z.jar文件。
3、将此jar包复制到eclipse的plugins或dropins目录(我用的是eclipse-jee-2019-03-R-linux-gtk-x86_64.tar.gz已测,两个目录都可以)。
4、以debug模式启动eclipse并配置:
/opt/tools/eclipse/eclipse -clean -consolelog -debug
配置Hadoop安装路径
Window→Show View→Other,选择Map/Reduce Locations
点击蓝色小象定义Hadoop location,这里的DFS Master的端口号,要与core-site.xml中一致。
hdfs-site.xml中配置如下:
Map/Reduce(V2) Master为mapred-site.xml中配置的信息。(在etc/hadoop/目录下只有mapred-site.xml.template文件,复制一份并命名为mapred-site.xml进行操作:)
cp mapred-site.xml.template mapred-site.xml
mapred-site.xml内容如下:
完成后点击上图蓝色小象前面的展开图标会报错,不用理会。
5、创建新项目
创建新项目后出现上面的错误。
这里卡了我2天,最后和网上对比发现还是插件的build.xml中少引jar的问题。
解决方案:
在最下方<attribute name="Bundle-ClassPath" value="classes/,中添加 lib/hadoop-hdfs-client-${hadoop.version}.jar,然后编译并替换dropins文件夹下的jar包。
重启eclipse后状态如下:
这是由于namenode和datanode守护进程没有开启。开启方式如下:
第一步:格式化namenode
hdfs namenode -format
※注意:格式过程中会提示是否重新格式下列目录中的文件系统,如果有重要文件的话输入N。
我这里是新环境所以直接格式化。
第二步:启动hadoop
hadoop安装目录下,sbin/start-all.sh ,至此,错误解决。(至于没有进一步实测,在实际运行中会不会由于缺少其他jar包而报其他错误目前不得而知,如有其他依赖以后会陆续更新。)
当前文件夹是空的,所以我们可以利用下面两个步骤来创建input以及temp文件夹。
第三步:创建input,temp文件夹
(当运行mapreduce时,会自动创建output文件夹,如果已事先创建,则报错。)
hdfs dfs -mkdir -p /user/hadoop/{input,temp}
(hdfs dfs -mkdir -p /user/USER-NAME/{input,xxxx-name-u-want})
第四步: 编辑hadoop location 点击Advanced parameters 将hadoop.tmp.dir修改为/user/hadoop/temp(上一步创建的temp文件夹)
修改完成后如下:
最后刷新DFS Locations: