Eclipse 运行WordCount实例 (连接Linux下的Hadoop集群)

在Eclipse连接运载在Linux上的Hadoop之前,请先保证Hadoop是运行状态。
本人的hadoop配置文件:
core-site.xml

 19 <configuration>
 20     <property>
 21         <name>hadoop.tmp.dir</name>
 22         <value>file:/usr/local/hadoop-2.8.0/tmp/dfs/name</value>
 23         <description>Abase for other temporary directories.</description>
 24     </property>
 25     <property>
 26         <name>fs.defaultFS</name>
 27         <value>hdfs://192.168.244.129:9001</value>
 28     </property>
 29 </configuration>

mapred-site.xml

 19 <configuration>
 20     <property>
 21         <name>mapred.job.tracker</name>
 22         <value>http://192.168.244.129:9001</value>
 23     </property>
 24 </configuration>

本人是在windows上使用的Eclipse,所以请先保证机器上已经有了如下环境:

Java 1.8 (1.6以上)
Hadoop 2.8.0 (2.6.0以上)

上面两个需要自行去下载文件,并且在系统中添加环境变量。


1.安装插件

首先需要去下载一个eclipse-hadoop-plus插件,其实就是一个简单的jar包,把这个jar放在,eclipse安装目录下的plusings中即可,刷新后打开Windows->perferences里面看到hadoop-map/reduce说明插件安装成功。
这里写图片描述


2.配置Eclipse环境

在Eclipse中选择–>Windows–>Perferences–>Hadoop Map/Reduce 选择你自己的Hadoop安装目录
这里写图片描述
然后在Eclipse中选择–>Windows–>ShowViews–>Other..选择MapReduce–>OK
这里写图片描述


新建Hadoop location

按照上面的步骤完成之后会在Eclipse的中央下方的位置有一个MadRedece Locations 选择它,新建一个:
这里写图片描述
这里有个类似新建主机联系的地方:
这里写图片描述

Location name: 这里是本地的连接名,叫什么无所谓
Host: 这里写你的集群主机Ip地址,namenode
Port: 这里写你的集群端口

User name:就是你登录名

以下是我配好的:
这里写图片描述

在Advanced parameters当中需要修改这个地方: hadoop.tmp.dir
这里写图片描述
是你的临时文件的地址


运行WordCount实例

在Eclipse当中新建工程,就像你平时做的一样:
记住选择MapReduce
这里写图片描述

接着在创建的工程下创建一个class,这里的代码就是我们需要用到的WorcCount代码:
我用的是官网的代码:官网代码

在CLass中选择Rus as configurations ,在当中添加:

这里写图片描述

其中选择我们刚刚创建的Class,
填入对应的HDFS, input 文件夹和当中的LICENSE.txt都是我们给他的!
完成后,RUN!

结果如图:

File System Counters
        FILE: Number of bytes read=68620
        FILE: Number of bytes written=744043
        FILE: Number of read operations=0
        FILE: Number of large read operations=0
        FILE: Number of write operations=0
        HDFS: Number of bytes read=198506
        HDFS: Number of bytes written=25627
        HDFS: Number of read operations=13
        HDFS: Number of large read operations=0
        HDFS: Number of write operations=4
Map-Reduce Framework
        Map input records=1801
        Map output records=14550
        Map output bytes=155815
        Map output materialized bytes=34111
        Input split bytes=122
        .......

很多我就不写了。。。


你可能遇到的问题:

Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblems
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:716)

提示:环境变量没有, win+R –> cmd –> hadoop -version 查看环境
发现出错,在我的电脑中添加环境变量 HADOOP_HOME 指向 Hadoop文件夹,在Path中中添加%Hadoop_HOME%/bin,必须是指向bin文件夹。

再次Hadoop -version

找不到加载类或者对象
JAVA_HOME is incorrectly set
Please update hadoop-env.cmd

打开文件后发现这个东西:

export JAVA_HOME=${JAVA_HOME}
set JAVA_HOME=${JAVA_HOME}

JAVA_HOME指向出错,环境出了问题,修改:

set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_73\

注意:使用 C:\Program Files\Java\jdk1.8.0_73\ 是不行的,文件当中有一个空格,机器不能识别后面的部分。


7/07/19 18:17:10 WARN mapred.LocalJobRunner: job_local647852980_0001
org.apache.hadoop.security.AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="/user/hadoop":root:supergroup:drwxr-xr-x
    at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:310)

windows的用户,权限不够导致的,
在集群中的namenode下运行:

hadoop chmod 777 /user/hadoop

给了文件的读写权


Eclipse只出现了这些:

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.

在刚才新建的工程中没有添加日志信息:
将/etc/hadoop/下的log4j.properties文件拷贝到eclipse下的项目中,不用做任何修改


ERROR security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://hadoop:8010/user/root/output already exists  

output已经存在

解决:
在你的hdfs中删除output文件夹,mapreduce都是自己生成输出文件,不允许自己建!


Could not locate Hadoop executable: E:\hadoop-2.8.0\bin\winutils.exe

这个问题困扰了我很久,至今没有想明白,在老外的stackover上有对应的讨论:
https://wiki.apache.org/hadoop/WindowsProblems
解决:
GIt上下载对应版本的bin,替换自己的,再次运行就可以:
下载地址

结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值