windows eclipse远程连接hadoop集群并提交任务运行

被刻印的时光 ゝ 提交于 2019-12-04 17:26:48

1 下载插件

hadoop-eclipse-plugin-2.5.1.jar

从网上下载对应版本的插件,http://download.csdn.net/detail/tondayong1981/7920973

2 配置插件 

把插件放到..\eclipse\plugins目录下,重启eclipse,配置Hadoop installation directory, 如果插件安装成功,打开Windows—Preferences后,在窗口左侧会有Hadoop Map/Reduce选项,点击此选项,在窗口右侧设置Hadoop安装路径。(windows下只需把hadoop-2.5.1.tar.gz解压到指定目录)

3 配置Map/Reduce Locations

在Window-->Show View中打开Map/Reduce Locations,点击OK,控制台会出现:

在Map/Reduce Locations中新建一个Hadoop Location。在这个View中,右键-->New Hadoop Location。在弹出的对话框中你需要配置Location name,如Hadoop,还有Map/Reduce Master和DFS Master。这里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口。

点击"Finish"按钮,关闭窗口。

4 查看是否连接成功

点击左侧的DFSLocations—>master (上一步配置的location name),如能看到user,表示安装成功

 

 5 新建MapReduce项目并运行
   1.右击New->Map/Reduce Project
   2.新建WordCount.java(在Hadoop的share目录下找到mapreduce的案例,copy过来)
   3.在hdfs用命令行创建一个test目录(输出目录可以不能创建,运行MR是会自动创建),并上传一个word.txt文件(随便写几个单词)
       hadoop fs -mkdir   /test/
       hadoop fs -copyFromLocal word.txt /test/word.txt

   4.点击WordCount.java右击-->Run As-->Run Configurations   设置输入和输出目录路径,如图所示:

5.点击WordCount.java右击-->Run As-->Run on Hadoop

这时候会遇到很多问题:

问题一:空指针错误

1.下载winutils的windows版本
GitHub上,有人提供了winutils的windows的版本,项目地址是:https://github.com/srccodes/hadoop-common-2.2.0-bin ,直接下载此项目的zip包,下载后是文件名是hadoop-common-2.2.0-bin-master.zip,随便解压到一个目录,不要顾虑它的版本,下载好后,把winutils.exe加入你的hadoop-x.x.x/bin下,把hadoop.dll放入从C:/wondwos/system32下面,如果没有解决则在bin目录下也放一份。

2.配置环境变量
增加用户变量HADOOP_HOME,值是下载的zip包解压的目录,然后在系统变量path里增加$HADOOP_HOME\bin 即可。
重启电脑,再次运行程序,正常执行。不想重启电脑可以在程序里加上:

System.setProperty("hadoop.home.dir", "F:\\hadoop\\hadoop-2.5.1");

注:F:\\hadoop\\hadoop-2.5.1是我本机解压的hadoop的路径。

问题二:winutils.exe错误

如果第一个错误完全解决,第二个错误就不会出现,这个错误出现的原因或者是没有将winutils.exe放到hadoop目录的bin下面,或者是配置环境变量没有生效。

问题三:权限问题

问题原因:本地用户administrator(本机windows用户)想要远程操作hadoop系统,没有权限引起的。

1、在hdfs的配置文件中,将dfs.permissions修改为False,重启hadoop集群
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>
If "true", enable permission checking in HDFS.
If "false", permission checking is turned off,
but all other behavior is unchanged.
Switching from one parameter value to the other does not change the mode,
owner or group of files or directories.
</description>
</property>
2、执行这样的操作 hadoop fs -chmod -R 777 /user/hadoop

3、把计算机名改为hadoop用户的用户名
对于上面的第一个和第三个方法,我没有尝试,不知道是否有用,第二个方法可行。第二个方法是让我们来修改HDFS中相应文件夹的权限,后面的/user/hadoop这个路径为HDFS中的文件路径,这样修改之后就让我们的administrator有在HDFS的相应目录下有写文件的权限(所有的用户都是写权限)

问题四:日志输出问题

在复制了hadoop.dll后,运行WordCount,发现运行一会没有任何信息输出就结束了
  解决:可以写一个log4j日志文件,放在项目的src下面,查看一下日志的输出,可能从输出的日志中发现问题。

更多请参考http://my.oschina.net/muou/blog/408543

http://www.cstor.cn/textdetail_8030.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!