1 下載氣象數(shù)據(jù)集部分?jǐn)?shù)據(jù)(下載地址:http://www1.ncdc.noaa.gov/pub/data/noaa/2001/),求每年的最低溫度,部署并運行之,抓圖過程
2 在linux或win下安裝eclipse,并且連接到Hadoop集群(關(guān)鍵步驟是編譯插件),運行習(xí)題1的map-reduce程序作為測試,抓圖整個過程
第3-4題為2選1(請在課程資源下載第4周作業(yè)素材和視頻素材),如能2題均完成為最佳。
3 傳遞參數(shù)問題
請閱讀Exercise_1.java,編譯并且運行。該程序從Test_1改編而來,其主要差別在于能夠讓用戶在結(jié)果文件中的每一行前面添加一個用戶自定義的字符串,而這個字符串將由參數(shù)傳遞到程序中。例如,運行
$hadoop jar Exercise_1.jar input_path output_path hadoop
之后,第三個參數(shù)“hadoop”將會在結(jié)果文件中顯示,例如附件“result_1”所顯示的。
問題:著重考慮Exercise_1.java里面”需要注意的部分“,改寫Test_2程序,得到的結(jié)果必須跟附件"resule_2"一致,并且其中hadoop必須由參數(shù)傳遞。
4 Setup函數(shù)的作用
閱讀Exercise_2.java,這是一個與Exercise_1.java有相同效果的程序,自行搜索關(guān)于setup函數(shù)的資料,回答上述兩個程序的不同。
1、
設(shè)置依賴的環(huán)境變量
[keon@h1 code]$ vim ~/.bash_profile
export HADOOP_HOME=/usr/hadoop-2.7.2
export JAVA_HOME=/usr/jdk1.8.0_101
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/s
hare/hadoop/common/hadoop-common-2.7.2.jar:$HADOOP_HOME/share/hadoop/hdfs/hadoop
-hdfs-2.7.2.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core
-2.7.2.jar:$HADOOP_HOME/share/hadoop/tools/lib/commons-cli-1.2.jar
編譯代碼
[keon@h1 wether]$ javac code/*
[keon@h1 wether]$ cd code/
[keon@h1 code]$ ls
MaxTemperature.class MaxTemperatureMapper.class MaxTemperatureReducer.class
MaxTemperature.java MaxTemperatureMapper.java MaxTemperatureReducer.java
打包class文件
[keon@h1 code]$ jar cvf ./MaxTemperature.jar ./*.class
added manifest
adding: MaxTemperature.class(in = 2665) (out= 1304)(deflated 51%)
adding: MaxTemperatureMapper.class(in = 1893) (out= 818)(deflated 56%)
adding: MaxTemperatureReducer.class(in = 1704) (out= 728)(deflated 57%)
準(zhǔn)備數(shù)據(jù)文件
[keon@h1 data]$ cat * >> wetherdata.txt
[keon@h1 data]$ ls
007026-99999-2016 008415-99999-2016 010014-99999-2001 wetherdata.txt
008411-99999-2016 010000-99999-2001 010015-99999-2001
008414-99999-2016 010010-99999-2001 010017-99999-2001
[keon@h1 hadoop-2.7.2]$ ./bin/hadoop fs -mkdir /input
[keon@h1 hadoop-2.7.2]$ ./bin/hadoop fs -put ~/hadoop/wether/data/wetherdata.txt /input
運行程序
./bin/hadoop jar ~/hadoop/wether/code/Weather.jar /input /output
2、
為項目添加hadoopjar包
添加運行參數(shù)
運行獲得結(jié)果
查看結(jié)果
3、
運行exercise_1
處理后的數(shù)據(jù)
添加reduce
結(jié)果
4、
Mapper和reducer的四個方法是setup,map(reduce),cleanup和run。其中,setup和cleanup用于管理生命周期中的資源,setup在完成構(gòu)造,即將開始執(zhí)行動作前調(diào)用,cleanup則在所有的動作完成后被調(diào)用。方法map(reduce)用于對一次輸入的key/value對進(jìn)行map(reduce)動作。run方法執(zhí)行了上面描述的過程,它調(diào)用setup,讓后迭代所有的key/value對,進(jìn)行map(reduce),最后調(diào)用cleanup。
exercise_1獲取名字是在map中進(jìn)行,每次迭代都會進(jìn)行獲取,改為使用setup后,只會獲取一次,提高效率。