hadoop环境安装及简单Map-Reduce示例
?
說(shuō)明:這篇博客來(lái)自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511
?
一.參考書(shū):《hadoop權(quán)威指南--第二版(中文)》
二.hadoop環(huán)境安裝
1.安裝sun-jdk1.6版本
1)目前我只在一臺(tái)服務(wù)器(CentOS5.5)上搭建hadoop環(huán)境,因此先卸載已安裝的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(進(jìn)入jdk安裝文件所在目錄)?
添加bin文件權(quán)限:chmod a+x *
安裝,sudo ?./jdk-6u33-linux-x64-rpm.bin
? ? ? ? (若是在普通用戶下安裝,需要在/etc/sudoers文件下添加語(yǔ)句,表示當(dāng)前用戶可以擁有root權(quán)限,具體命令如下
a. su root
b. chmod u+w /etc/sudoers
c. vim /etc/sudoers
d.在root??? ALL=(ALL)?????? ALL下面添加一行?“username(你要?jiǎng)?chuàng)建的sudoer用戶名) ALL=(ALL)? ALL”,保存退出
e. chmod u-w /etc/sudoers
? ? ? ? )
4)設(shè)置JAVA_HOME
編輯用戶目錄下的.bashrc文件,設(shè)置JAVA_HOE命令:export JAVA_HOME=/usr
2.安裝hadoop
1)從http://hadoop.apache.org/common/releases.html#Download上下載相應(yīng)版本的hadoop(本人下載的是1.0.3版本)
2)解壓文件
命令:tar -xzf ?hadoop-1.0.3.tar.gz
3)測(cè)試hadoop是否安裝成功(進(jìn)入hadoop安裝目錄,依次執(zhí)行以下命令)
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)設(shè)置環(huán)境變量
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
三.簡(jiǎn)單Map-Reduce示例
一開(kāi)始按照書(shū)上20~23頁(yè)(也可參考該頁(yè)面http://answers.oreilly.com/topic/455-get-started-analyzing-data-with-hadoop/)上的內(nèi)容運(yùn)行簡(jiǎn)單的MaxTemperature示例,一直沒(méi)用過(guò)。在命令行環(huán)境下,輸入
?
% export HADOOP_CLASSPATH=build/classes% hadoop MaxTemperature input/ncdc/sample.txt output就顯示:ClassNotFound類(lèi)似的錯(cuò)誤,然后修改,又拋出IOException,后在網(wǎng)上找了好久,得到一個(gè)可行的方案。
?
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
注意事項(xiàng):
將map,reduce類(lèi)的代碼復(fù)制到MaxTemperature.java中,添加static屬性,執(zhí)行javac命令如遇到Iterator報(bào)錯(cuò)時(shí),則添加相應(yīng)包,如下
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
四.一點(diǎn)感想
今天第一次搭建hadoop環(huán)境,主要困難在于按照書(shū)上說(shuō)明一步一步操作時(shí),遇到了錯(cuò)誤,這時(shí)不確定是書(shū)上的知識(shí)過(guò)時(shí)了還是我的操作失誤,加之對(duì)java不太熟悉,由此浪費(fèi)了好幾個(gè)小時(shí)的時(shí)間。最后,找到了一個(gè)正確的方案,成功運(yùn)行了Map-Reduce的簡(jiǎn)單示例(單機(jī)模式)。總體來(lái)說(shuō),走出了第一步,有點(diǎn)小成就感。希望能利用這個(gè)暑假深入研究hadoop。加油~
五.補(bǔ)充
參考書(shū)《Hadoop權(quán)威指南(中文第二版)》中第25頁(yè)說(shuō)明了,Hadoop從0.20.0版本開(kāi)始在類(lèi)型上不兼容先前的API,要重寫(xiě)以前的應(yīng)用程序才能使新的API發(fā)揮作用。這就說(shuō)明了用舊的API會(huì)報(bào)一些奇怪的類(lèi)似ClassNotFound的錯(cuò)誤了。
在這里補(bǔ)充下新增的API和舊的API之間的一些明顯區(qū)別(摘自書(shū)中):
1.新的API傾向于使用抽象類(lèi),而不是接口,因?yàn)檫@更容易擴(kuò)展。例如,你可以添加一個(gè)方法(用默認(rèn)的實(shí)現(xiàn))到一個(gè)抽象類(lèi)而不需修改類(lèi)之前的實(shí)現(xiàn)方法。在新的API中,Mapper和Reducer是抽象類(lèi)。
2.新的API是在org.apache.hadoop.mapreduce包(和子包)中的。之前版本的API則是放在org.apache.hadoop.mapred中的。
3.新的API廣泛使用context object(上下文對(duì)象),并允許用戶代碼與MapReduce系統(tǒng)進(jìn)行通信。例如,MapContext基本上充當(dāng)著JobConf的OutputCollector和Reporter的角色。
4.新的API同時(shí)支持"推"和"拉"式的迭代。在這兩個(gè)新老API中,鍵/值記錄對(duì)被推mapper中,但除此之外,新的API允許把記錄從map()方法中拉出,這也適用于reducer。"拉"式的一個(gè)有用的例子是分批處理記錄,而不是一個(gè)接一個(gè)。
5.新的API統(tǒng)一了配置。舊的API有一個(gè)特殊的JobConf對(duì)象用于作業(yè)配置,這是一個(gè)對(duì)于Hadoop通常的Configuration對(duì)象的擴(kuò)展(用于配置守護(hù)進(jìn)程,請(qǐng)參見(jiàn)5.1節(jié))。在新的API中,這種區(qū)別沒(méi)有了,所以作業(yè)配置通過(guò)Configuration來(lái)完成。
6.作業(yè)控制的執(zhí)行由Job類(lèi)來(lái)負(fù)責(zé),而不是JobClient,它在新的API中已經(jīng)蕩然無(wú)存。
轉(zhuǎn)載于:https://www.cnblogs.com/didiaoxiong/p/3228605.html
總結(jié)
以上是生活随笔為你收集整理的hadoop环境安装及简单Map-Reduce示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一对一语音视频直播双端原生+php后台源
- 下一篇: 商务与经济统计学 第五章案例题