hadoop环境安装及简单Map-Reduce示例


 

说明:这篇博客来自我的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中已经荡然无存。

转载于:https://www.cnblogs.com/didiaoxiong/p/3228605.html

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

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

相关文章

TCP协议以及三次握手

TCP协议,传输控制协议(英语:TransmissionControl Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。 tcp通信需要经过创建连接、数据传送、终止连接三个步骤…

02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面(作业:初始化+正则化+梯度检验)

文章目录作业1:初始化1. 神经网络模型2. 使用 0 初始化3. 随机初始化4. He 初始化作业2:正则化1. 无正则化模型2. L2 正则化3. DropOut 正则化3.1 带dropout的前向传播3.2 带dropout的后向传播3.3 运行模型作业3:梯度检验1. 1维梯度检验2. 多…

C#快速导入海量XML数据至SQL Server数据库

#region 将Xml中的数据读到Dataset中,然后用SqlBulkCopy类把数据copy到目的表中using (XmlTextReader xmlReader new XmlTextReader(sourcePath)){ DataSet ds new DataSet(); ds.ReadXml(XmlReader.Create(sourcePath));//把数据读到DataSet这个过程有点慢…

LeetCode 第 34 场双周赛(385/2842,前13.5%)

文章目录1. 比赛结果2. 题目1. LeetCode 5491. 矩阵对角线元素的和 easy2. LeetCode 5492. 分割字符串的方案数 medium3. LeetCode 5493. 删除最短的子数组使剩余数组有序 medium4. LeetCode 5494. 统计所有可行路径 hard1. 比赛结果 做出来3题,最后一题动态规划&a…

TCP程序流程及服务器客户端

Tcp服务器创建: import socket # 服务器的端口号 PORT 9000 # 创建套接字socket对象,用于进行通讯 # scoket.SOCK_STREAM 表明使用tcp协议,流式协议 # 监听socket server_sock socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 为…

IOS开发之格式化日期时间

在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。例如: //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter [[NSDateFormatter alloc] init]; //设定时间格式,这里可…

LeetCode 1576. 替换所有的问号

文章目录1. 题目2. 解题1. 题目 给你一个仅包含小写英文字母和 ? 字符的字符串 s, 请你将所有的 ? 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意:你 不能 修改非 ‘?’ 字符。 题目测试用例保证 除 ‘?’ 字符…

tcp十种状态

CLOSED:表示关闭状态(初始状态)。 LISTEN:该状态表示服务器端的某个SOCKET处于监听状态,可以接受连接。 SYN_SENT:这个状态与SYN_RCVD遥相呼应,当客户端SOCKET执行CONNECT连接时,它首…

Ural 1519. Formula 1 优美的插头DP

今天早上学了插头DP的思想和最基础的应用,中午就开始敲了,岐哥说第一次写不要看别人代码,利用自己的理解一点点得写出来,这样才锻炼代码能力!于是下午慢慢地构思轮廓,一点点地敲出主体代码,其实…

TCP的2MSL问题

2MSL (Maximum SegmentLifetime) TIME_WAIT状态的存在有两个理由: 让4次挥手关闭流程更加可靠;4次挥手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN过来。若主动关闭方能够保持一个2MSL的TI…

LeetCode 1577. 数的平方等于两数乘积的方法数(双指针)

文章目录1. 题目2. 解题1. 题目 给你两个整数数组 nums1 和 nums2 ,请你返回根据以下规则形成的三元组的数目(类型 1 和类型 2 ): 类型 1:三元组 (i, j, k) ,如果 nums1[i]2 nums2[j] * nums2[k] 其中 0…

LeetCode 1578. 避免重复字母的最小删除成本

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s 和一个整数数组 cost ,其中 cost[i] 是从 s 中删除字符 i 的代价。 返回使字符串任意相邻两个字母不相同的最小删除成本。 请注意,删除一个字符后,删除其他字符的成本不会改变。 示例 1&…

hdu2709 Sumsets 递推

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid2709 感觉很经典的一道递推题 自己想了有半天的时间了。。。。比较弱。。。。 思路: 设f[n]表示和为n的组合数; 那么 当n为奇数时,很简单,相当于在f[n-1]的每一个…

python入门字符串

python 字符串str, ‘’, ‘’ ‘’, ‘’’ ‘’’;python没有字符,只有字符串hh 切片 字符串不可以修改,修改的话,类似于tuple, 修改的话, 只可以整体修改 tuple 也是可这样, 确切的说只是修改了指针…

python 经典100例(1-20)

【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 2.程序源代码&#xff1…

go ioc三方库推荐

在 Go 语言中,没有像 Spring Boot 这样的完整的 IOC(Inversion of Control)框架。Go 语言的设计哲学更倾向于简洁、轻量级的解决方案,没有像 Java 的 Spring Framework 这样重量级的 IOC 容器。 然而,Go 社区中有一些…

统一编址 独立编址 寻址空间

概念 存储器统一编址,即从存储空间中划出一部分地址给I/O端口。CPU访问端口和访问存储器的指令在形式上完全相同,只能从地址范围来区分两种操作。优点 对端口操作的指令类型多,功能全,不仅能对端口进行数据传送,还可以对端口内容进…

阿里云 超级码力在线编程大赛初赛 第4场 题目3. from start to end

文章目录1. 题目2. 解题1. 题目 样例1: 输入: "abcd" "bcda" 输出: true样例2: 输入: "abcd" "abdc" 输出: false来源:https://tianchi.aliyun.com/oj…

Codeforces Round #697 (Div.3) A~G解题报告与解法证明

题目大体概括 A #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std;typedef long long LL; const int N 500; LL a[N]; int sz; bool Check(LL n) {for (int i 0; i < sz; i ){if (n a[i])…