ITPub博客

首页 > 大数据 > Hadoop > Hbase和Hadoop操作文件性能测试(转)

Hbase和Hadoop操作文件性能测试(转)

Hadoop 作者:bingowoo111 时间:2011-05-24 21:22:50 0 删除 编辑

本节向大家介绍一下测试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操作文件的性能介绍完毕,请关注本节其他相关报道。
 

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22937760/viewspace-1120126/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-11-27