hadoop学习之HDFS(2.5):windows下eclipse远程连接linux下的hadoop集群并测试wordcount例子

windows下eclipse远程连接linux下的hadoop集群不像在linux下直接配置eclipse一样方便,会出现各种各样的问题,处处是坑,连接hadoop和运行例子时都会出现问题,而网上的帖子讲的都很支离破碎,下面我们来一步一步解决,亲测有效。

注意!注意!注意!

windows下eclipse运行mr程序时是用的windows本地环境,毕竟跟linux有很大差异,所以不建议使用win来做开发,可以使用本地模式(要想使用yarn模式的话,要改源码,很麻烦)做测试。


前提是在linux上配置好了hadoop开发环境(不管是伪分布式还是完全分布式),下面介绍详细步骤:


1,首先windows下安装好jdk,eclipse。


2,下载文件hadoop-eclipse-plugin-2.7.2.jar和hadoop-2.7.2.tar.gz,

将hadoop-2.7.2.tar.gz解压(里面的文件不用修改),并将.../hadoop-2.7.2/bin目录添加到环境变量中;

将hadoop-eclipse-plugin-2.7.2.jar文件添加到eclipse/plugin目录下。


3,重新打开eclipse,左侧Peoject Explorer下会看到DFS Locations,点击window-->preferences

会显示hadoop map/reduce选项,点击该选项再选择hadoop的安装路径。

注意:可能会存在.jar文件放进去了但显示不出来DFS的情况,那么要么是.jar的问题,重新找一个,要么是eclipse的问题,重新安装一个,我遇到的就是需要重新安装eclipse的问题。


4,设置右上角显示MR图标:eclipse > window > perspective > open perspective > other > Map/Reduce > OK


5,点击下方”Map/Reduce Location“,右键 》new hadoop location。


6,下图是具体配置,其中,Location name可以随便起名字。但是,Map/Reduce Master和DFS Master下的Host主机名必须要和core-site.xml中设置的一样,这里我们设置为linux的主机ip地址,两个端口号分别是:9001,9000。尤其注意:User name是node1下配置hadoop的用户名,这里是root,windows下默认不是root,记得要改过来。



注意:若Host你写的是主机名,发现连不上,问题可能出在:windows下的hosts文件只能替换,不能修改。


7,新建map reduce工程,将wordcount代码拷贝到项目中。

将代码中的路径(不管是控制台输入还是直接在代码中呈现)中的ip地址localhost改为真实的ip地址。

执行过程中会出现一些错误,常见错误如下:

(0)控制台不显示log信息,而是打印3行红字,这是由于缺少log4j文件。

log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

针对(0)的解决方法:在project的src目录下新建文件:log4j.properties,包括如下内容:

hadoop.root.logger=DEBUG, console
log4j.rootLogger = DEBUG, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n

保存再运行程序。


(1)java.io.IOException: Could not locate executable D:\hadoop-2.7.2\bin\winutils.exe in the Hadoop binaries.

(2)Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio. NativeIO $Windows.access0 (Ljava/lang/String;I)Z             

针对(1)(2)的解决方法:下载两个文件,hadoop.dll和winutils.exe(可以在github上找到),将这两个文件拷贝到D:\hadoop-2.7.2\bin目录下,即可。


(3)org.apache.hadoop.security.AccessControlException: Permission denied: user=XXXX, access=WRITE, inode="/user/XXXX/output/_temporary/0":XXXX:supergroup:drwxr-xr-x

针对(3)有两种解决方法:

a,修改hdfs-site.xml,修改条目为:

<name>dfs.permissions.enabled</name>
<value>false</value>

保存,重启hdfs即可。

b,执行命令:bin/hadoop fs -chmod 777 /user/你的用户名


(4)name node is in safe mode:hdfs刚启动的时候会进入到安全模式,此时无法从hdfs读写数据,过一段时间后会退出safe mode。

针对(4),hdfs刚启动会进入安全模式,无法读写,启动后会离开安全模式,你可以耐心等一会,等不了的可执行命令:bin/hadoop dfsadmin -safemode leave 离开安全模式。


(5)Exception in thread "main" Java.lang.NullPointerException

针对(5),跟(1)(2)问题一样,都是缺少windows运行时需要的组件,加进了hadoop.dll和winutils.exe后,问题可以解决,如果还出线这个问题,可以重启下机器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值