經(jīng)驗(yàn)總結(jié) 遷移Hadoop0.20.2問(wèn)題詳解
本節(jié)向大家介紹一下有關(guān)Hadoop0.20.2方面的知識(shí),遷移到Hadoop0.20.2后的一些感想,相信通過(guò)本節(jié)的介紹大家對(duì)Hadoop0.20.2有更深刻的認(rèn)識(shí),讓我們一起來(lái)關(guān)注Hadoop0.20.2吧。
------------------------------------------------
1.問(wèn)題:
離Hadoop0.20.2的發(fā)布也有三個(gè)月了,平時(shí)一直在用http://www.cloudera.com/提供的一個(gè)Hadoop版本,它也是基于Hadoop0.18.3開(kāi)發(fā)的,因?yàn)樗囊粋€(gè)比較穩(wěn)定的版本。但是最近在用hypertable0.9.2.7的時(shí)候發(fā)現(xiàn)我本地jni調(diào)用老是會(huì)出現(xiàn)HyperspaceCOMMalreadycommected,查了一下原因,是hyperspace的COMM被占用,連接出錯(cuò),網(wǎng)上找了一下,作者也說(shuō)有這個(gè)問(wèn)題,還說(shuō)什么修改一下也不是很難??戳艘幌滤脑创a,是socket連接拋出來(lái)的,要改的話(huà)要修改hyperspace模塊的代碼,由于hyperspace底層是用oracle的berkeleydb的,對(duì)它也不是很熟悉,所以沒(méi)去改了,想直接升級(jí)到0.9.3.1,看它有沒(méi)有解決這個(gè)問(wèn)題,但是讓我失望的是它還是沒(méi)有解決這個(gè)問(wèn)題,到是在它的thrift端做了很多改動(dòng),而且把對(duì)hypertable表的TableSplit也加入了它的thrift服務(wù)端中,也正是我想要的,呵呵,這樣也可以繞過(guò)前面的hyperspace的問(wèn)題,因?yàn)樗趖hrift的服務(wù)端只生成了一個(gè)HypertableClient,這樣就不會(huì)出現(xiàn)COMMconnected的問(wèn)題了,而且對(duì)它的Cell也做了比較大的改動(dòng),用了***的Hadoop0.20.2。沒(méi)辦法,要升就一起升吧,Hadoop0.18.3->Hadoop0.20.2;hypertable0.9.2.7->hypertable0.9.3.1,原來(lái)的TableInputFomat和TableOutputFormat看來(lái)都要做修改了,于是就有了下面的這些感想。
2.Hadoop0.20.2的一些變化
新的版本不管從目錄結(jié)構(gòu)和API上都有了比較大的變化,不管從0.18到0.19,還是從0.19到0.20目錄結(jié)構(gòu)都發(fā)生了很大的變化,***感覺(jué)就是模塊化的意識(shí)越來(lái)越強(qiáng)了,而且看起來(lái)也更清晰了。
2.1目錄結(jié)構(gòu)的變化
主要有三個(gè)目錄,core,hdfs,mapred。
◆主要是把原來(lái)共用的功能都提取到了core中,其中有conf,fs,io,ipc,net,record等。還加入了類(lèi)似于unix目錄的權(quán)限功能。
◆把hdfs單獨(dú)放入了一個(gè)目錄中,而且把hdfs的配置文件也提取了出來(lái),叫hdfs-default.xml,其中hdfs目錄又分了protocol,提供了一些Client端的通訊協(xié)議,還有server和tools目錄,其中server目錄又分成了balancer,common,datanode,namenode,protocol,這里的protocol目錄中提供了DataNode和NameNode的通訊協(xié)議,還有DataNode之間的通訊協(xié)議等。
◆把mapred也獨(dú)立出來(lái),而且也把mapred的配置文件也提取出來(lái),放入了mapred-default.xml中,它也有兩個(gè)子目錄,一個(gè)是mapred,其中放了一些mapreduce的核心類(lèi),還有一些Deprecated的類(lèi),用于向后兼容,不過(guò)一般都不提倡用這些接口和類(lèi)了。另一個(gè)目錄是mapreduce目錄,這里有一些對(duì)外的抽象類(lèi)和接口,用于進(jìn)行根據(jù)自己的需要進(jìn)行擴(kuò)展,在這個(gè)目錄中有一個(gè)叫l(wèi)ib的目錄,它提供了一些框架提供的常用的input,output,map,reduce方法。
2.2API的變化
在Hadoop0.20.2中,API的變化也是很大的,主要把一些接口變成了抽象類(lèi),以此在提高可擴(kuò)展性,進(jìn)行了一些重構(gòu),變化還是滿(mǎn)大的。下面舉一個(gè)例子來(lái)說(shuō)明這里的變化。
2.2.1Hadoop的一個(gè)example
這是Hadoop中的一個(gè)WordCount的例子,從中你可以發(fā)現(xiàn)Map和Reduce的接口變化,還有JobClient的變化。
3.Hypertable0.9.3.1的一些變化
主要感覺(jué)它的thrift的java客戶(hù)端變化很大。為了支持mapreduce,很多東西都集成到了thrift服務(wù)端。加入了MapReduceconnector,Hyperspace的replication,還有DUMPTABLE等。在它的thrift的客戶(hù)端中加入了InputFormat和OutputFormat,還有TableSplit,可以用來(lái)對(duì)Hypertable中的表進(jìn)行Key和Value對(duì)的讀取,還是很方便的。但是它沒(méi)有對(duì)TableSplit后的range_location進(jìn)行處理,只是用了“localhost“來(lái)進(jìn)行Host的連接,不知道是為什么?
看來(lái)要在Hypertable中使用kfs還是要進(jìn)行源代碼的編譯還有kfs的動(dòng)態(tài)庫(kù)。本節(jié)關(guān)于Hadoop0.20.2的相關(guān)內(nèi)容介紹到這里。
【編輯推薦】
- 專(zhuān)家推薦 Hadoop0.20.2集群配置指導(dǎo)手冊(cè)
- Hadoop0.20.2集群配置入門(mén)指導(dǎo)手冊(cè)
- Hadoop文件系統(tǒng)如何快速安裝?
- Hadoop集群搭建過(guò)程中相關(guān)環(huán)境配置詳解
- Hadoop完全分布模式安裝實(shí)現(xiàn)詳解