什么影响Hbase性能

时间:2012-07-26 22:00:40

标签: hadoop mapreduce hbase

我是HBase的初学者。我目前不确定影响HBase性能的因素。首先,我以独立模式运行Hbase。我使用一台机器运行Mapreduce程序来处理200万条文本行,并将结果输出到存储在本地文件系统中的HBase表。花了大约1小时40分钟。然后我改为伪分布式模式。 Htable文件然后存储在HDFS中。包括程序在内的所有其他内容保持不变。然后花了3个多小时!!我完全糊涂了。谁能告诉我为什么这么开心呢?

另一个问题,因为我在一台Linux机器上创建了5个虚拟机作为虚拟集群,功能不是很强大(8G内存.3GHz 4核CPU)。当我在一个月前运行Mapreduce程序时,我发现当我在一个主人或另外5个奴隶上运行它时没有太大的区别。所以我认为CPU可能是瓶颈,但我仍然不确定。任何人都可以肯定地回答,因为我对操作系统不是很熟悉吗?我不确定它是否是IO瓶颈或CPU瓶颈。我只是在6台机器集群上运行该程序,以便在完全分布式模式下将记录插入HBase表。这太慢了所以我杀了这份工作。

1 个答案:

答案 0 :(得分:2)

问题的第一部分:

很明显,伪分布式模式的运行速度比独立模式慢。在独立模式下,HBase使用本地文件系统进行存储。在伪分布式模式下,HBase使用HDFS(后者又使用本地文件系统),因此您有一个额外的IO软件层。此外,在伪分布式模式下,您可能在同一台计算机上有多个服务器线程,执行复制(每个数据被复制几次)等事情,这在独立模式下不会发生。

一般而言,集中度越高(如独立),对于小(足够)数据,您将获得更好的性能。但是分布式模式对于大规模非常重要,因为无论如何有一天你会达到单个机器的可扩展性限制。然后在分布式模式中,我们需要处理诸如复制之类的事情,最终会降低整体性能。

关于问题的第二部分,您不应期望在这些设置中有良好的表现。您必须考虑有许多软件层: HBase,HDFS,Java,虚拟机。每个层都增加了开销。对于分布式从站,由于所有服务器共享相同的硬件,因此速度更慢。

如果您希望看到一些性能提升,请考虑在Linux操作系统中使用独立模式,而不是虚拟机。然后在真实集群中使用真正的分布式模式(不在虚拟机中)(如果可以,但即使是几台联网的消费者计算机也可以)。你应该期望每秒大约1K~3K。