最近在写硕士论文时,遇到一个以前从没有注意的问题,那就是hbase备份数。一直以为HBase的备份数就是HDFS的备份数,hbase-site.xml中有一项配置 dfs.replication,一直都是和hdfs-site.xml文件中的dfs.replication配的一样的,但是当测试结果并不是我想的那样时,才发现这两者是不同的。情况如下:
我需要测试,集群的结点数和数据源完全相同的情况下,改变集群的备份数,观察系统的性能变化,当然数据都是存在hbase中的。按理说,当备份数增加时,系统的性能是不断提高的。可结果并不是这样,让我很疑惑,后来怀疑到HBase的备份数与Hadoop的备份数不同这个事实上。
原因是,我改变集群中数据的备份数,采用的方法是:在命令行执行hadoop dfs -setrep [-R] <path> 。而这个命令改变的只是hdfs的备份数,并没有改变hbase备份数。在网上寻找答案,有人也遇到这个问题(http://eclecl1314-163-com.iteye.com/blog/991691)。于是更加确定,hbase的备份数一直没有被改变,导致系统的性能变化不按照常理发展。
最终,关闭hbase与hdfs,重新更改了一次配置文件,把hdfs和hbase的备份数都改变成一样的,启动hdfs和hbase,再执行hadoop dfs -setrep [-R] <path>,观察系统的存储情况,备份数增加时系统存储的数据量也在增加。再次测试,系统的性能变化正常了。