Hadoop0.20更新筆記
本節(jié)向大家介紹一下Hadoop0.20更新的內(nèi)容,在學(xué)習(xí)Hadoop的過(guò)程中你可能會(huì)遇到這方面的問(wèn)題,在這里和大家分享一下,相信通過(guò)本節(jié)的介紹大家對(duì)Hadoop0.20更新有一定的認(rèn)識(shí)。下面是詳細(xì)介紹。
Hadoop0.20更新筆記
最近學(xué)習(xí)hadoop0.20.1,網(wǎng)上找到一篇文章《What’sNewinHadoopCore0.20》,非完整的給翻譯了一下,為以后檢索方便,發(fā)上來(lái)保存一份。如果能讀懂英文的,千萬(wàn)不要看下面的中文。
HadoopCore0.20.0在2009年4月22日發(fā)布。這一發(fā)布相對(duì)0.19發(fā)布,有很多用戶使用層面上的改變。
Core
Hadoop中兩個(gè)主要的組件是分布式文件系統(tǒng)(HDFS)和MapReduce,那兩個(gè)組件分別挪入各自的子項(xiàng)目中,因此他們能擁有自己的發(fā)布周期,并且更容易對(duì)開(kāi)發(fā)進(jìn)行管理。但是在0.20發(fā)布中,這兩個(gè)組件還是在一起發(fā)布。在這次發(fā)布中,hadoop-size.xml被拆分成三個(gè)配置文件:core-site.xml、hdfs-site.xml和mapred-site.xml(HADOOP-4631)。你也可以繼續(xù)使用單一的hadoop-site.xml,hadoop僅僅會(huì)提出一個(gè)警告而已。默認(rèn)配置文件已經(jīng)移出conf文件夾,轉(zhuǎn)而放到.jar文件中,其內(nèi)容可以看docs文件夾中的html文件。不贊成start-all.sh、stop-all.sh的使用,建議使用start-dfs.sh、start-mapred.sh、stop-dfs.sh、stop-mapred.sh來(lái)代替。
上面說(shuō)的是一些主要的變化,而允許slaves文件中加注注釋(HADOOP-4454)對(duì)實(shí)際操作更為有用。
Hadoop配置文件支持Xinclude元素,用于引入其他的配置文件(HADOOP-4944(url:https://issues.apache.org/jira/browse/HADOOP-4944))。這一機(jī)制能讓配置文件更加模塊化、更易于重用。
圍繞安全問(wèn)題,hadoop作出了一系列動(dòng)作。其中0.20.0增加了service-levelauthorization(HADOOP-4348)。開(kāi)發(fā)人員能夠限制客戶端與hadoopdaemons的通信。
LZOcompressionlibraries因?yàn)樵S可的原因移出了hadoopcore,如果你的代碼使用GPL許可證,你還是能從hadoop-gpl-compression項(xiàng)目中得到LZO。
HDFS
HSFSappend從0.19.1開(kāi)始默認(rèn)disable。
hadoop增加了一個(gè)新的管理命令:hadoopdfsadmin-saveNamespace。在安全模式下,這個(gè)命令能讓namenode轉(zhuǎn)存namespace到磁盤。
MapReduce
在Hadoop0.20更新中,***的變化是加入了一個(gè)叫“ContextObjects”的新JavaAPI。把Mapper和Reduce通過(guò)引入ContextObject變成抽象類(不是接口),是為了讓API將來(lái)更易于演進(jìn)。
1.JobConf不再存在,Job配置信息由Configuration持有;
2.現(xiàn)在在map()或reduce()方法中,更容易得到j(luò)ob配置信息。僅需要調(diào)用context.getConfiguration()。
3.新的API支持pull形式的迭代。在此之前,如果你想在mapper中遍歷一下記錄,你不得不把他們保存到Mapper類的實(shí)例變量中。在新的API中,只需要調(diào)用nextKeyValue()即可。
4.你還能覆蓋run()方法,來(lái)控制mapper如何運(yùn)行。
5.新API中不再有IdentityMapper和IdentityReducer兩個(gè)類,因?yàn)槟J(rèn)Mapper和Reducer執(zhí)行了標(biāo)識(shí)函數(shù)。
新的API并非向后兼容,所以你必須重寫你的應(yīng)用。注意,新的API在org.apache.hadoop.mapreduce包及其子包中,而舊的API在org.apache.hadoop.mapred。
Multipletaskassignment,這一優(yōu)化讓JobTracker在一次心跳周期內(nèi)能分配給tasktracker多個(gè)任務(wù),提高了利用率。同時(shí)引入mapred.reduce.slowstart.completed.maps新的配置參數(shù)(默認(rèn)0.05)。
Inputformats增加了一些有意思的改進(jìn)。FileInputFormat在選擇那個(gè)主機(jī)有更多的需要分割的文件上做的更好。在另一方面0.20引入了CombineFileInputFormat類,他能把許多小文件變成一個(gè)split。
Gridmix2是第二代MapReduce工作量基準(zhǔn)模型套件。
Contrib
兩個(gè)新捐獻(xiàn)的模塊在0.20分支中出現(xiàn):
HDFSProxy,他能暴露HDFS一個(gè)只讀的HSFTP接口,用于提供安全的、只讀的訪問(wèn)。
Vaidya,這是一個(gè)工具,用于在MapReducejob運(yùn)行后通過(guò)檢查作業(yè)歷史和配置信息來(lái)診斷錯(cuò)誤。針對(duì)常見(jiàn)的問(wèn)題能提供一些改進(jìn)意見(jiàn),使得你的代碼能避免出錯(cuò)。本節(jié)關(guān)于Hadoop0.20更新介紹到這里。
【編輯推薦】