Linux eclipse hadoop环境配置

一、前提要求:

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:

发布了62 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Leonardy/article/details/89349257