Hbase和Hadoop操作文件性能測試
本節向大家介紹一下測試Hbase和Hadoop操作文件的性能的方法,主要有六個方面的內容,希望通過本節簡單的介紹大家能夠掌握測試Hbase和Hadoop操作文件的性能的方法,下面就讓我們一起來學習吧。
測試Hbase和Hadoop操作文件的性能
1:單線程hbase的文件存入
StringparentPath="F:/pic/2003-zhujiajian";
File[]files=getAllFilePath(parentPath);
HBaseConfigurationconfig=newHBaseConfiguration();
HTabletable=newHTable(config,newText("offer"));
longstart=System.currentTimeMillis();
for(Filefile:files){
if(file.isFile()){
byte[]data=getData(file);
createRecore(table,file.getName(),"image_big",data);
}
}
longend=System.currentTimeMillis();
System.out.println("timecost="+(end-start));
108037206bytes,303個fileswritefromlocalwindowstoremotehbase,cost23328or21001milliseconds
2:單線程hadoop的文件存入
Configurationconf=newConfiguration();
FileSystemfs=FileSystem.get(conf);
Pathsrc=newPath("F:/pic/2003-zhujiajian");
Pathdst=newPath("/user/zxf/image");
longstart=System.currentTimeMillis();
fs.copyFromLocalFile(src,dst);
longend=System.currentTimeMillis();
System.out.println("timecost="+(end-start));
108037206bytes,303fileswritefromlocalwindowstoremotehdfs,cost26531or32407milliseconds
3:單線程hbase的文件讀取
108037206bytes,303filesreadfromhdfstolocalcost479350milliseconds
4:單線程hadoop的文件讀取
108037206bytes,303filesreadfromhdfstolocalcost14188milliseconds
5:深入測試Hbase和Hadoop操作文件性能
取幾個文件對比
fileSize(byte)hdfstime(ms)hbasetime(ms)
12341140131314688
708474634359
82535153907
5529616125
6思考
測試Hbase和Hadoop操作文件性能期間發生了一個regionoffline的錯誤,重啟服務也還是報錯,后然重新formatnamenode,deletedatanode上數據,重啟發現還有datanode沒有起來,ssh上去發現java進程死了
浪費了1個多小時,仔細想了一下HTable分散到各個HRegionServer上的各子表,一臺datanode掛了,當有數據請求時,連不上,所以報regionoffline錯誤
為什么hbase讀取的performance那么差?我單個讀取11m的文件需要14000milliseconds,而hdfs真個文件目錄的讀取才14188milliseconds
DBMSorHBase-butdousallafavorandjustkeepthepathinthemetadata,看來,hbase不合適存放二進制文件,存放圖片這樣的application還是hdfs更合適了。
a:重新測試了幾遍,包括重啟hbase,hdfs,hbase的讀取速度還是和原先沒大差別
b:刪除原有數據,重新寫入后,再測試讀發現,小文件的讀取效率搞了很多
fileSize(byte)1(ms)2(ms)3(ms)
12341140117501110911718
708474625610672
82535787878
55296476247
這樣就是說讀cache有較大的性能提升,在data數量不是非常大的時候,瓶頸是在讀取速度上,100k一下的數據讀取效率還是可以的,花費時間基本上和要讀取的data的長度成正比
但是之前的效率為什么沒有變?難道不能cache從磁盤讀取的數據?
然后試著讀取了最先放入的一批文件中的幾個,現在還是很慢,重復b的操作后效率提升了。原因可能是系統在創建row'sclunmdata的時候打上了cache標志,cache適合clunm系統綁定在一起的,hbase啟動的時候會把打了cache標志的colunm數據讀到memory中.
所以在我執行altertableofferchangeimage_bigIN_MEMORY之前所創建的數據都沒有cache標志,此cache不是像其他的cache,啟動的時候不做load,訪問后再cache,這樣一來,cache的數據愈多必然造成啟動速度的加慢。本節關于測試Hbase和Hadoop操作文件的性能介紹完畢,請關注本節其他相關報道。
【編輯推薦】
- Hdoop/Hbase文件配置方法詳解
- HadoopHBase實現配置簡單的單機環境
- Hadoop集群與Hadoop性能優化
- Hadoop 從Yahoo向Google的技術轉折
- 深入剖析Hadoop HBase