说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511


一.参考书:《hadoop权威指南--第二版(中文)》

二.hadoop环境安装

1.安装sun-jdk1.6版本

1)目前我只在一台服务器(CentOS5.5)上搭建hadoop环境,因此先卸载已安装的java1.4版本

卸载命令:yum -y remove java

2)下载sun-jdk1.6,地址:http://download.oracle.com/otn-pub/java/jdk/6u33-b04/jdk-6u33-linux-x64-rpm.bin

3)安装java(进入jdk安装文件所在目录)

添加bin文件权限:chmod a+x *

安装,sudo  ./jdk-6u33-linux-x64-rpm.bin

(若是在普通用户下安装,需要在/etc/sudoers文件下添加语句,表示当前用户可以拥有root权限,具体命令如下

a. su root

b. chmod u+w /etc/sudoers

c. vim /etc/sudoers

d.在root    ALL=(ALL)       ALL下面添加一行 “username(你要创建的sudoer用户名) ALL=(ALL)  ALL”,保存退出

e. chmod u-w /etc/sudoers

)

4)设置JAVA_HOME

编辑用户目录下的.bashrc文件,设置JAVA_HOE命令:export JAVA_HOME=/usr

2.安装hadoop

1)从http://hadoop.apache.org/common/releases.html#Download上下载相应版本的hadoop(本人下载的是1.0.3版本)

2)解压文件

命令:tar -xzf  hadoop-1.0.3.tar.gz

3)测试hadoop是否安装成功(进入hadoop安装目录,依次执行以下命令)

a. mkdir input

b. cp conf/*.xml input 
c. bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 
d. cat output/*  (显示“1      dfsadmin” 表示hadoop安装成功)

4)设置环境变量

export HADOOP_HOME=/home/username/hadoop/hadoop-1.0.3
export PATH=$PATH:$HADOOP_HOME/bin
export CLASSPATH=.:$HADOOP_HOME/hadoop-core-1.0.3.jar:$HADOOP_HOME/lib:$CLASSPATH

三.简单Map-Reduce示例

一开始按照书上20~23页(也可参考该页面http://answers.oreilly.com/topic/455-get-started-analyzing-data-with-hadoop/)上的内容运行简单的MaxTemperature示例,一直没用过。在命令行环境下,输入

% export HADOOP_CLASSPATH=build/classes

% hadoop MaxTemperature input/ncdc/sample.txt output

就显示:ClassNotFound类似的错误,然后修改,又抛出IOException,后在网上找了好久,得到一个可行的方案。

1.参考链接

http://hadoop.apache.org/common/docs/stable/mapred_tutorial.html

http://blog.endlesscode.com/2010/06/16/simple-demo-of-mapreduce-in-java/

2.主要步骤

mkdir MaxTemperature
javac -d MaxTemperature MaxTemperature.java
jar cvf MaxTemperature.jar -C MaxTemperature/ .
hadoop jar MaxTemperature.jar MaxTemperature sample.txt output

注意事项:

将map,reduce类的代码复制到MaxTemperature.java中,添加static属性,执行javac命令如遇到Iterator报错时,则添加相应包,如下

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

四.一点感想

今天第一次搭建hadoop环境,主要困难在于按照书上说明一步一步操作时,遇到了错误,这时不确定是书上的知识过时了还是我的操作失误,加之对java不太熟悉,由此浪费了好几个小时的时间。最后,找到了一个正确的方案,成功运行了Map-Reduce的简单示例(单机模式)。总体来说,走出了第一步,有点小成就感。希望能利用这个暑假深入研究hadoop。加油~

五.补充

参考书《Hadoop权威指南(中文第二版)》中第25页说明了,Hadoop从0.20.0版本开始在类型上不兼容先前的API,要重写以前的应用程序才能使新的API发挥作用。这就说明了用旧的API会报一些奇怪的类似ClassNotFound的错误了。

在这里补充下新增的API和旧的API之间的一些明显区别(摘自书中):

1.新的API倾向于使用抽象类,而不是接口,因为这更容易扩展。例如,你可以添加一个方法(用默认的实现)到一个抽象类而不需修改类之前的实现方法。在新的API中,Mapper和Reducer是抽象类。
2.新的API是在org.apache.hadoop.mapreduce包(和子包)中的。之前版本的API则是放在org.apache.hadoop.mapred中的。
3.新的API广泛使用context object(上下文对象),并允许用户代码与MapReduce系统进行通信。例如,MapContext基本上充当着JobConf的OutputCollector和Reporter的角色。
4.新的API同时支持"推"和"拉"式的迭代。在这两个新老API中,键/值记录对被推mapper中,但除此之外,新的API允许把记录从map()方法中拉出,这也适用于reducer。"拉"式的一个有用的例子是分批处理记录,而不是一个接一个。
5.新的API统一了配置。旧的API有一个特殊的JobConf对象用于作业配置,这是一个对于Hadoop通常的Configuration对象的扩展(用于配置守护进程,请参见5.1节)。在新的API中,这种区别没有了,所以作业配置通过Configuration来完成。
6.作业控制的执行由Job类来负责,而不是JobClient,它在新的API中已经荡然无存。

hadoop环境安装及简单Map-Reduce示例的更多相关文章

  1. 【Cloud Computing】Hadoop环境安装、基本命令及MapReduce字数统计程序

    [Cloud Computing]Hadoop环境安装.基本命令及MapReduce字数统计程序 1.虚拟机准备 1.1 模板机器配置 1.1.1 主机配置 IP地址:在学校校园网Wifi下连接下 V ...

  2. Hadoop简介(1):什么是Map/Reduce

    看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop整体有所了解了. Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Red ...

  3. Django学习笔记(一):环境安装与简单实例

    Django学习笔记(一):环境安装与简单实例 通过本文章实现: Django在Windows中的环境安装 Django项目的建立并编写简单的网页,显示欢迎语与当前时间 一.环境安装 结合版本兼容性等 ...

  4. Hadoop Map/Reduce 示例程序WordCount

    #进入hadoop安装目录 cd /usr/local/hadoop #创建示例文件:input #在里面输入以下内容: #Hello world, Bye world! vim input #在hd ...

  5. hadoop入门级总结二:Map/Reduce

    在上一篇博客:hadoop入门级总结一:HDFS中,简单的介绍了hadoop分布式文件系统HDFS的整体框架及文件写入读出机制.接下来,简要的总结一下hadoop的另外一大关键技术之一分布式计算框架: ...

  6. RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例

    你是否听说过或者使用过队列? 你是否听说过或者使用过消息队列? 你是否听说过或者使用过RabbitMQ? 提到这几个词,用过的人,也许觉得很简单,没用过的人,也许觉得很复杂,至少在我没使用消息队列之前 ...

  7. Hadoop环境安装和集群创建

    虚拟机使用vmware,vmware可以直接百度下载安装 秘钥也能百度到 安装很简单 CentOS 7下载: 进入官网 https://www.centos.org/download/ 这里有三种 第 ...

  8. Python之路-python环境安装和简单的语法使用

    一.环境安装 Win10(安装python3.x): 1.下载安装包     https://www.python.org/downloads/   2.安装完成后设置环境变量. 桌面-“计算机”-右 ...

  9. hadoop环境安装及错误总结

    历时N天的hadoop环境,终于配好了 主要参考 Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 1.开机默认进入字符界面或者是图形界面:http://blog.cs ...

随机推荐

  1. Android问题-XE5提示"[DCC Fatal Error] Project1.dpr(1): F1027 Unit not found: 'System.pas' or binary equivalents (.dcu/.o)"

    问题现象:Checking project dependencies...Compiling Project1.dproj (Debug, Android)dcc command line for & ...

  2. whereis 命令

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 和find相比,whereis查找的速度非 ...

  3. Flipping Parentheses(CSU1542 线段树)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1542 赛后发现这套题是2014东京区域赛的题目,看了排名才发现自己有多low  = =! 题目大意 ...

  4. HDU 5776 sum (前缀和)

    题意:给定 n 个数,和 m,问你是不是存在连续的数和是m的倍数. 析:考虑前缀和,如果有两个前缀和取模m相等,那么就是相等的,一定要注意,如果取模为0,就是真的,不要忘记了,我当时就没记得.... ...

  5. C:进制

     进制.C语言内存分配 1.对于进制 10进制 (0 - 9)16进制 (0——9 A B C D E F)硬件中的高低电平(0 和 1表示)所以计算机用 二进制 机器语言就是由 0 和 1 组成的一 ...

  6. Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口

    1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...

  7. NBearV3中文教程总目录

    1.NBearV3 Step by Step教程——ORM篇 摘要:本教程演示如何基于NBearV3的ORM模块开发一个Web应用程序的全过程.本教程演示的实体关系包括:继承.1对1关联.1对多关联, ...

  8. 如何在KVM中管理存储池

    来自:http://blog.csdn.net/my2005lb/article/details/8635661 KVM平台以存储池的形式对存储进行统一管理,所谓存储池可以理解为本地目录.通过远端磁盘 ...

  9. 设置文字在div中垂直居中,使用line-height

    (从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-02-19) line-height 行间距 详细使用方法:http://www.w3school.com.cn/css/pr ...

  10. 常见的Unix指令

    ls -1 列出当前目录下的所有内容(文件/文件夹) pwd 显示当前操作的目录 cd   改变当前操作的目录 who 显示当前用户 clear 清屏 mkdir 新建一个目录 touch 新建一个文 ...