windows下用eclipse连接hadoop集群

最近因实习需要开始摆弄起了hadoop和spark相关的,记录一下我踩过的坑。由于linux下不好调试程序,因此记录一下用windows下的eclipse调试MapReduce程序。

环境:虚拟机VMware搭建的Ubuntu16.0.4集群,一个master,两个slaves

windows环境:64位,eclipse版本:Oxygen JAVA SE

准备环境:三台集群都搭好,其上能跑hadoop程序,这些我都已经自己试过了,通过在windows下写好的MapReduce程序能够打成jar包发送到集群上去跑。windows下也需要准备hadoop包,eclipse连接hadoop的插件,我这里用的是2.7.3版本的插件+2.6.5版本的hadoop包,由于windows环境的和linux环境不一样,因此hadoop包必须是经过处理的。有博客说这个步骤与运行环境无关,只是在新建工程的时候能将hadoop根目录和lib目录下的所有jar包自动导入。但是我试过还是要处理一下才行。

我这里用的插件是这个,1、将这个插件放入eclipse安装目录下的plugins插件中,重启eclipse。

windows下用eclipse连接hadoop集群_第1张图片

2、此时打开eclipse,在window-->prefrences下可以发现多了一个Hadoop Map/reduce

windows下用eclipse连接hadoop集群_第2张图片

下一步需要配置hadoop的安装目录,并将hadoop加入到环境变量中去。查了很多资料说是要把winutils.exe、hadoop.dll这两个文件文件复制到hadoop/bin目录下,将lib文件中的native库替换为windows版本库,新建系统环境变量 HADOOP_HOME Path。这里我找了很久才找到,想要这个hadoop包可以留言

插件的话可以百度下载。

3、在这里选择other,找到MapReduce tools ,将其显示出来

windows下用eclipse连接hadoop集群_第3张图片

此时在如下这两个地方都会显示:

windows下用eclipse连接hadoop集群_第4张图片

在这个空白的地方选择右键新建hadoop location

windows下用eclipse连接hadoop集群_第5张图片

配置好相关的,其中location name可以自己随意,起个名字而已,下面的map/reduce master 要对应配置文件里的mapred-site.xml中mapred.job.tracker的端口一致,我这里是默认的,默认是50020,DFS master与Hadoop配置文件core-site.xml中fs.default.name的端口号一致,我这里是9000.

windows下用eclipse连接hadoop集群_第6张图片

配置好之后可以新建new -->other,选择MapReduce程序,这样就能自动把需要的jar包都导进来,这个需要在第一步中配置好hadoop的位置才会自动导入jar包,导入的包如下图所示

如果顺利的话,在这个DFS Locations中可以显示HDFS文件系统中的文件。

!!注意, 必须启动集群,并且启动dfs和yarn才能显示出文件系统下的文件

windows下用eclipse连接hadoop集群_第7张图片windows下用eclipse连接hadoop集群_第8张图片

折腾了半天,终于连接上hdfs了。。。这还只是第一步,后面编码的时候还是会遇上坑的。

把碰到的问题总结一下:

1、在连接hadoop时一直连接不上,查看error log出现了call from user-XXX/162.XX.XX.XX to master2:9000failed on connection exception,出现这个问题的原因一般是路径没配置好,默认的DFS端口号是8020,如果没有做改动的话就是8020,注意你程序里的出现的端口号也要和这个匹配。可以尝试设置绝对路径,这样一般不会出错。

2、在配置好路径之后,写好JobRun、Mapper、Reducer,提交任务可能出现的问题,见1

3、第二个错误:(null)entry in command string:null chmod 0700 这个问题一般来说是权限问题,有的博客说有两种解决方法,一种是在程序中指定hadoop.home.dir  System.setProperty("hadoop.home.dir","hadoop的文件路径" );这种方法我试过,反正没有成功。

,第二种方法参见https://ask.hellobi.com/blog/jack/5063

4、之后又出现在eclipse上传文件到dfs中内容为空的情况,这是因为我多次格式化了namenode,导致datanode没有启动成功,只要将temp下的tmp文件夹以及dfs下的data、name文件夹清空,等了一会。然后重新格式化了两遍,然后启动集群就能了。
 

 

你可能感兴趣的:(Linux,hadoop集群)