1

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

另一个问题,因为我在不是很强大的 Linux 机器上创建了 5 个虚拟机作为虚拟集群(8G ram。3GHz 4 核 CPU)。一个月前我运行 Mapreduce 程序时,我发现在单个主服务器或 5 个以上从服务器上运行它时没有太大区别。所以我认为 CPU 可能是瓶颈,但我仍然不确定。由于我对操作系统不太熟悉,任何人都可以肯定地给出答案吗?我不确定这是 IO 瓶颈还是 CPU 瓶颈。我只是在 6 台机器集群上运行程序,以完全分布式模式将记录插入 HBase 表。它太慢了,所以我放弃了这份工作。

4

1 回答 1

2

对于您问题的第一部分:

很明显,伪分布式模式会比独立模式运行得慢。在独立环境中,HBase 使用本地文件系统进行存储。在伪分布式模式下,HBase 使用 HDFS(反过来使用本地文件系统),因此您有一个额外的 IO 软件层。此外,在伪分布式模式下,您可能在同一台机器上有多个服务器线程,执行诸如复制之类的事情(每个数据都被复制几次),这在独立时不会发生。

一般来说,对于小(足够)数据,越集中的东西(如独立),您将拥有更好的性能。但是分布式模式对于大规模来说很重要,因为总有一天你会达到单台机器的可扩展性极限。然后在分布式模式下,我们需要处理诸如复制等最终会降低整体性能的事情。

关于问题的第二部分,您不应该期望在这些设置中具有良好的性能。您必须考虑到有许多软件层:HBase、HDFS、Java、虚拟机。这些层中的每一层都会增加开销。对于分布式从站,这会变得更慢,因为所有服务器共享相同的硬件。

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

于 2012-07-28T16:53:38.693 回答