eclipse 配置运行hadoop 2.7 程序例子参考步骤

前提:你搭建好了hadoop 2.x的linux环境,并能够成功运行。还有就是window能够访问到集群。over

1、

hfds-site.xml 增加属性:关闭集群的权限校验,windows的用户一般与linux的不一样,直接将它关闭掉好了。记住不是core-site.xml 重启集群

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

2、hadoop-eclipse-plugin-2.7.0.jar将插件放到plugins目录下

3、复制linux master已安装好的hadoop目录到windows,然后eclipse 配置定位hadoop的目录,重启eclipse

4、打开配置,hadoop选项,定位hadoop主目录。然后打开mapreduce的view 设置配置属性:其他额外属性不要配置,用户名也不用改,此时可以链接上了。

5、新建MR工程

6、建立wordcount类(自己复制就行)

在src下面直接新建log4j.properties:

内容如下:主要是打印信息:(你可以将info改成debug,内容过多,改成info了)

log4j.rootLogger=info,stdout,R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=mapreduce_test.log

log4j.appender.R.MaxFileSize=1MB

log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

log4j.logger.com.codefutures=DEBUG

7、错误多多啊:

运行报:

1)、java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.

2)java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

解决方式1)人家提示HADOOP_HOME没有设置,那就配置windows的环境变量,定位到hadoop目录

运行报:

第一项不报了,第二项继续:

2)java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

说不能定位,看来是HADOOP_HOME没起作用,那就在main里添加代码,否则不报null:

System.setProperty("hadoop.home.dir" , "E:\\bigdata\\hadoop2" );

运行报:

Could not locate executable E:\bigdata\hadoop2\bin\winutils.exe in the Hadoop binaries.

这次变了,检查目录,的确没有winutils.exe,因为我们是从linux复制下来的

那就增加呗:

https://github.com/srccodes/hadoop-common-2.2.0-bin 下载bin目录,替换到windows中hadoop里的bin目录

运行报:

第二项不报了,又来新的了:

Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException :
Input path does not exist: file:/input

这个嘛,嘿嘿,参数设置成绝对的,hadoop1的时候不用,现在是第二代:

乖乖的设置参数为 hdfs://master:9000/input hdfs://master:9000/output

运行 继续报错:

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

说是本地库的问题,那就改改源码,将本地库的调用屏蔽掉:

拷贝源码文件org.apache.hadoop.io.nativeio.NativeIO到项目中 ,定位: 然后定位到570行(别hadoop2.2是,版本不一样现在2.7是607行还是直接搜索public static boolean access(String path,
AccessRight desiredAccess)吧,),直接修改为return
true;  不让access了。

复制麻烦,那就新建类,定位包,然后复制类内容就行了。

继续运行继续报错:

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

权限不够,linux用户是root,window默认用户是Administrator  我都将window改成root了,看来这个改法没起作用。另外我在core-site.xml也增加了不让校验权限啊,不管用。重新设置参数:换一种方式,之前是在core-site.xml设置的权限为false,改到hdfs-site.xml里试试,如果不行改源码。(所以我在第一步提示是在hdfs里而不是core里面改)

运行 继续报,别报了,出结果了:

Input split bytes=100

Combine input records=179

Combine output records=131

Reduce input groups=131

Reduce shuffle bytes=1836

Reduce input records=131

Reduce output records=131

对于: WARN - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable这个警告没事,运行在linux就不报了。

8、最后,尝试将wordcount拆成子类的形式,将mapper移出来试试,因为有的时候多个类会提示报错:

删除output目录,重新运行:OK,没问题,正确出结果了。

9、欢迎访问下hegou.me这个网站。怎么样,只是在本机搭建个测试环境。工作中就不要在正式集群里跑了。还是乖乖测试好代码先。over。

时间: 2024-11-08 21:49:37

eclipse 配置运行hadoop 2.7 程序例子参考步骤的相关文章

eclipse 配置执行hadoop 2.7 程序样例參考步骤

前提:你搭建好了hadoop 2.x的linux环境,并可以成功执行.还有就是window可以訪问到集群.over 1. hfds-site.xml 添加属性:关闭集群的权限校验.windows的用户一般与linux的不一样,直接将它关闭掉好了.记住不是core-site.xml 重新启动集群 <property> <name>dfs.permissions</name> <value>false</value> </property>

运行hadoop的Wordcount程序报错java.lang.ClassNotFoundException: WordCount$TokenizerMapper

在运行hadoop的官方Wordcount程序时报错 java.lang.ClassNotFoundException: WordCount$TokenizerMapper 提示信息为找不到TokenizerMapper类,但程序师官方的,应该没错. 打包到Linux上可以运行,确定不是程序的错. 然后在网上搜索一番,看到有人说可能是eclipse版本原因,试了一下就ok了 使用的eclipse版本是3.5.1. 遇到此问题的兄弟们可以试一下

JAVA 基础 / 第四课:在ECLIPSE中运行第一个 JAVA 程序以及找不到类的问题

2018-03-06 在Eclipse中运行java 程序 步骤 1 : 打开java文件 直接打开在 命令行Hello World 中创建的java 文件:HelloWorld.java 步骤 2 : 运行 点击绿色运行按钮,直接运行 在eclipse中,编译过程自动执行了 步骤 3 : 观察运行结果 一旦运行成功,会在下方出现控制台console界面 如果找不到控制台console窗口,使用如下步骤打开控制台窗口 步骤 4 : 打开控制台窗口 在默认情况下,console窗口是打开的,倘若无

HelloWorld系列(五)- 在Eclipse中运行第一个 java 程序

在Eclipse中运行java 程序 步骤1:打开java文件步骤2:运行步骤3:观察运行结果步骤4:打开控制台窗口步骤5:练习-在eclipse中运行JAVA程序步骤6:答案-在eclipse中运行JAVA程序 步骤 1 : 打开java文件 直接打开在 命令行Hello World 中创建的java 文件 HelloWorld.java 步骤 2 : 运行 点击绿色运行按钮,直接运行 在eclipse中,编译过程自动执行了 步骤 3 : 观察运行结果 一旦运行成功,会在下方出现控制台cons

eclipse配置运行环境

java开发初学者,相当于做笔记了: 新建web项目后,想要验证配置是否正确,需要配置运行环境:窗口-->首选项  如下 添加本地tomcat的安装目录: 再在web项目构建路径,添加对应的tomcat:

在Eclipse中运行hadoop程序

1.下载hadoop-eclipse-plugin-1.2.1.jar,并将之复制到eclipse/plugins下. 2.打开map-reduce视图 在eclipse中,打开window-->open perspetive-->other,选择map/reduce. 3.选择Map/Reduce Locations标签页,新建一个Location 4.在project exploer中,可以浏览刚才定义站点的文件系统 5.准备测试数据,并上传到hdfs中. liaoliuqingdeMac

如何运行Hadoop自带的例子

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount /WordCount/WordCount /WCOutput 输出文件不能实现存在,比如说/WordCount这样是不行的 虽然他是第一级文件夹 但是已存在了,不可用 原来提示我,日志冲突,我美观,我以为是不是hadoop native造成的,后来吧多余的mahout的jar删了,里面也有slf4j,然后竟然运行成功了额,虽然也不

[hadoop]命令行编译并运行hadoop例子WordCount

首先保证JDK.Hadoop安装设置成功 可以参考[linux]ubuntu下安装hadoop [linux]ubutnu12.04 下安装jdk1.7 使用hadoop版本为1.2.1,jdk为1.7 在hadoop-1.2.1\src\examples\org\apache\hadoop\examples找到WordCount.java 源码如下: 1 /** 2 * Licensed under the Apache License, Version 2.0 (the "License&q

Windows下使用Eclipse运行C、C++程序

相信大家都想在Eclipse下运行C.C++程序,可又无奈不知道怎么配置,谷歌了好长时间也只是百度到了gcc环境下的配置方式,下了三四个软件包,到最后还是配置失败了. 那么我现在介绍的这种方式呢,不是基于GCC编译器,而是基于VC的. 步骤一: 你需要下载Eclipse for C++版本的包,当然你也可以自己装插件(我是不推荐,除非你闲的蛋疼,有现成的干嘛不用,装逼啊?) 下载地址: 官方下载地址:   http://www.eclipse.org/downloads/ 那么下载完后呢,解压就