hadoop0.20.0第一个例子

 

这是Hadoop学习全程记录第2篇,在这篇里我将介绍一下如何在Eclipse下写第一个MapReduce程序。 

新说明一下我的开发环境: 

操作系统:在windows下使用wubi安装了ubuntu 10.10 
hadoop版本:hadoop-0.20.2.tar.gz 
Eclipse版本:eclipse-jee-helios-SR1-linux-gtk.tar.gz 

为了学习方便这个例子在“伪分布式模式”Hadoop安装方式下开发。 

第一步,我们先启动Hadoop守护进程。 
如果你读过我第1篇文章Hadoop学习全程记录——hadoop 入门应该比较清楚在“伪分布式模式”下启动Hadoop守护进程的方法,在这里就不多说了。 

第二步,在Eclipse下安装hadoop-plugin。 

1.复制 hadoop安装目录/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar 到 eclipse安装目录/plugins/ 下。 

2.重启eclipse,配置hadoop installation directory。 
如果安装插件成功,打开Window-->Preferens,你会发现Hadoop Map/Reduce选项,在这个选项里你需要配置Hadoop installation directory。配置完成后退出。 



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

Map/Reduce Master 

Java代码  收藏代码
  1. localhost  
  2. 9001  


DFS Master 
Java代码  收藏代码
  1. localhost  
  2. 9000  

 


配置完后退出。点击DFS Locations-->myubuntu如果能显示文件夹(2)说明配置正确,如果显示"拒绝连接",请检查你的配置。 
 


第三步,新建项目。 
File-->New-->Other-->Map/Reduce Project 
项目名可以随便取,如hadoop-test。 
复制 hadoop安装目录/src/example/org/apache/hadoop/example/WordCount.java到刚才新建的项目下面。 

第四步,上传模拟数据文件夹。 
为了运行程序,我们需要一个输入的文件夹,和输出的文件夹。输出文件夹,在程序运行完成后会自动生成。我们需要给程序一个输入文件夹。 

1.在当前目录(如hadoop安装目录)下新建文件夹input,并在文件夹下新建两个文件file01、file02,这两个文件内容分别如下: 

file01 
Java代码  收藏代码
  1. Hello World Bye World   


file02 
Java代码  收藏代码
  1. Hello Hadoop Goodbye Hadoop  


2.将文件夹input上传到分布式文件系统中。 

在已经启动Hadoop守护进程终端中cd 到hadoop安装目录,运行下面命令: 
Java代码  收藏代码
  1. bin/hadoop fs -put input input01  

这个命令将input文件夹上传到了hadoop文件系统了,在该系统下就多了一个input01文件夹,你可以使用下面命令查看: 
Java代码  收藏代码
  1. bin/hadoop fs -ls  


第五步,运行项目。 

1.在新建的项目hadoop-test,点击WordCount.java,右键-->Run As-->Run Configurations 
2.在弹出的Run Configurations对话框中,点Java Application,右键-->New,这时会新建一个application名为WordCount 
3.配置运行参数,点Arguments,在Program arguments中输入“你要传给程序的输入文件夹和你要求程序将计算结果保存的文件夹”,如: 
Java代码  收藏代码
  1. hdfs://localhost:9000/user/panhuizhi/input01 hdfs://localhost:9000/user/panhuizhi/output01  


这里面的input01就是你刚传上去文件夹。文件夹地址你可以根据自己具体情况填写。 

 

 

 

 

 

 




4.点击Run,运行程序。 

点击Run,运行程序,过段时间将运行完成,等运行结束后,可以在终端中用命令: 

Java代码  收藏代码
  1. bin/hadoop fs -ls  

查看是否生成文件夹output01。 

用下面命令查看生成的文件内容: 
Java代码  收藏代码
  1. bin/hadoop fs -cat output01/*  


如果显示如下,恭喜你一切顺利,你已经成功在eclipse下运行第一个MapReduce程序了。 
Java代码  收藏代码
  1. Bye 1  
  2. Goodbye 1  
  3. Hadoop  2  
  4. Hello   2  
  5. World   2  

 

 

 

可能遇到的问题

  1、如果遇到这个错误:org.apache.hadoop.security.AccessControlException: Permission denied: user=administrator, access=EXECUTE, inode="job_201111031322_0003":heipark:supergroup:rwx-

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

  解决办法:

  a、如果是测试环境,可以取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改为false(默认为true)OK了。

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

  b、修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改为启动hadoop的用户名即可。

  注意第一次设置的时候可能没有hadoop.job.ugi参数,报错后在去看就有了。

  2、运行例子时出现:IOException: Cannot run program "chmod": CreateProcess error=2,

  问题原因:没有安装cygwin 或 没有配置环境变量;
       解决办法:安装并配置环境变量 bin到 path下 重启 eclipse   问题解决;

  3、如果出现下面问题

  11/11/03 12:21:31 WARN mapred.LocalJobRunner: job_local_0001
             java.lang.OutOfMemoryError: Java heap space
              at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:781)
              at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:350)
              at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
              at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
             11/11/03 12:21:31 INFO mapred.JobClient:  map 0% reduce 0%
             11/11/03 12:21:31 INFO mapred.JobClient: Job complete: job_local_0001
             11/11/03 12:21:31 INFO mapred.JobClient: Counters: 0
             Exception in thread "main" java.io.IOException: Job failed!
              at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1252)
              at mapred.WordCount.main(WordCount.java:110)

  问题原因:客户端程序运行时java虚拟机内存分配不够

  解决办法:修改run configuration,选择Arguments选项卡,在VM arguments栏中加入-Xmx1024m,保存即可解决问题。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA 修改JavaWeb的访问路径

问题描述 对于我这个刚刚使用IDEA不久的新手来说&#xff0c;能够正常运行就不错了,不过到了后面&#xff0c;可能会觉得IDEA给你分配的默认访问路径很不顺手&#xff0c;比如访问的时候需要通过: http://localhost:8080/web_war_exploded/ 来访问&#xff0c;对于web_w…

防撞库基本要求

专用安全要求 口令要求 设计要求说明 要求 是否满足 密码长度至少 8位字符&#xff0c;密码复杂性要求至少包含以下4种类别中的2种&#xff1a;大写字母、小写字母、数字、特殊符号 必选 满足 系统应具备对口令强度检测的能力&#xff0c;并对用户进行提示&#xff08;尽量不要…

odoo10 继承(扩展)、模块数据

一&#xff1a;继承 在不改变底层对象的时候添加新的功能——这是通过继承机制来实现的&#xff0c;作为在现有对象之上的修改层&#xff0c;这些修改可以发生在所有级别&#xff1a;模型&#xff0c;视图和业务逻辑。不是直接修改现有模块&#xff0c;而是创建一个新模块以添加…

做一个vue的todolist列表

<template><div id"app"><input type"text" v-model"todo" ref"ip"/><button click"add()">新增</button><br/><br/><hr/><ul><li v-for"(item,key) in li…

hadoop+hive-0.10.0完全分布式安装方法

hadoophive-0.10.0完全分布式安装方法 1、jdk版本&#xff1a;jdk-7u60-linux-x64.tar.gz http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html 2、hive版本&#xff1a;hive-0.10.0.tar.gz https://archive.apache.org/dist/hive/hive-0…

关于gitgithub的操作

先马克&#xff0c;回头细看&#xff0c;然后整理一下 https://linux.cn/article-4292-1.html转载于:https://www.cnblogs.com/mengjie1001/p/10076530.html

一种解决 MacBook 里的 App Store 无法登录的问题

刚刚买回来的 2018 款带有 touchbar 的 MacBook Pro 15 inc 在用 App Store 安装 app 时一直无法登录成功&#xff08;网络链接都是好的&#xff09;&#xff0c;导致软件都无法更新&#xff0c;折腾了挺一会的。 后来发现是要退出设置里的 iCloud 登录&#xff0c;然后重新登录…

第二次冲刺

1、今日各个成员的问题 组员问题张晋誌对mui的API看得不是很懂&#xff0c;无法顺利的使用袁庆杰基础不牢,编写困难周建峰eclipse没法创建web项目&#xff0c;按照网上的方法&#xff0c;check for updates 和 install new software 之后也没用许家烨给单一功能知道如何实现但项…

牌类游戏使用微服务重构笔记(八): 游戏网关服务器

网关服务器 所谓网关&#xff0c;其实就是维持玩家客户端的连接&#xff0c;将玩家发的游戏请求转发到具体后端服务的服务器&#xff0c;具有以下几个功能点&#xff1a; 长期运行&#xff0c;必须具有较高的稳定性和性能对外开放&#xff0c;即客户端需要知道网关的IP和端口&a…

配置独立于系统的PYTHON环境

配置独立于系统的PYTHON环境 python 当前用户包 一种解决方案是在利用本机的python环境的基础上&#xff0c;将python的包安装在当前user的.local文件夹下 一共有两种方式来实现pip的时候安装到当前user 设置pip配置文件 pip.conf 一种是在~/.pip文件夹下的pip配置文件pip.conf…

好程序员技术教程分享JavaScript运动框架

好程序员技术教程分享JavaScript运动框架&#xff0c;有需要的朋友可以参考下。 JavaScript的运动&#xff0c;即让某元素的某些属性由一个值变到另一个值的过程。如让div的width属性由200px变到400px&#xff0c;opacity属性由0.3变到1.0&#xff0c;就是一个运动过程。 实现运…

linux 下mysql等php的安装 lnmp

访问https://lnmp.org/install.html按照步骤安装 当下载执行完 wget -c http://soft.vpser.net/lnmp/lnmp1.3.tar.gz && tar zxf lnmp1.3.tar.gz && cd lnmp1.3 && ./install.shlnmp 要到.install.sh下改一下下载地址&#xff0c;把http直接更换成…

单纯形法

单纯形法 如果目标函数中所有系数都非正&#xff0c;那么显然这些变量直接取0是最优的&#xff0c;所以此时答案为即为常数项。 我们要做的就是通过转化把目标函数的系数全部搞成非负。 思路就是用非基变量替换基变量。 先找到一个目标函数中系数为正的变量&#xff0c;在所有限…

洛谷P1828 香甜的黄油 Sweet Butter

香甜的黄油 Sweet Butter 黄油真的是这么做的吗&#xff1f;&#xff01;&#xff01;&#xff01;[惶恐] 这道题是Dijkstra算法的简单变形 通过题意我们要找到一个点使奶牛所在点的路程和最短。通过Dijkstra的模板我们可以求的一点到其他任一点的最短路径&#xff0c;那么我们…

JAVA List集合转Page(分页对象)

/*** version 1.0* author: fwjia*/ import java.util.List;public class PageModel<T> {/**** 当前页*/private int page 1;/**** 总页数*/public int totalPages 0;/**** 每页数据条数*/private int pageRecorders;/**** 总页数*/private int totalRows 0;/**** 每页…

分区分表实验用的语句

--查看索引 select * from DBA_IND_PARTITIONS &#xff54;; select status,t.* from dba_indexes t where t.OWNERGANSUSC; select count(*) from ACT_HI_VARINST SELECT ALTER INDEX || TABLE_OWNER || . || INDEX_NAME || UNUSABLE; UNUSABLE_INDEX FROM ALL_INDEX…

分布式数据库数据一致性的原理、与技术实现方案

http://youzhixueyuan.com/the-principle-and-technology-realization-of-distributed-data-consistency.html 背景 可用性&#xff08;Availability&#xff09;和一致性&#xff08;Consistency&#xff09;是分布式系统的基本问题&#xff0c;先有著名的CAP理论定义过分布式…

模块之re模块 —— 正则

#‘match’只匹配从左向右第一个值是否在中括号的范围内&#xff0c;如果没有就返回None 如果有就直接打印一个对象&#xff0c;加上.group()就可以返回你要找的区间里面的值&#xff0c;如果没有找到对应的值&#xff0c;加上‘.group()’会报错 #‘search’ 默认是从整个st…

centos7 docker

Docker 是一个开源工具&#xff0c;它可以让创建和管理 Linux 容器变得简单。容器就像是轻量级的虚拟机&#xff0c;并且可以以毫秒级的速度来启动或停止。Docker 帮助系统管理员和程序员在容器中开发应用程序&#xff0c;并且可以扩展到成千上万的节点。 容器和 VM&#xff08…

批处理ping指定ip列表

for /f in (filename) do (command) for /f %i in (C:\ip.txt) do (ping %i -n 1 && echo %i 通 >>IP.txt || echo %i 不通 >>IP1.txt) 有返回写入ip.txt 没有写入ip1.txt转载于:https://blog.51cto.com/2216859/2384188