什么影响Hbase性能
我是HBase的初学者。我目前不确定是什么影响HBase的性能。首先,我以独立模式运行Hbase。我用一台机器运行一个Mapreduce程序来处理200万条文本行,并将结果输出到存储在本地文件系统中的HBase表中。它花了大约1小时40分钟。然后我改为伪分布式模式。 Htable文件然后存储在HDFS中。包括程序在内的所有其他内容保持不变。然后花了3个多小时!我完全困惑。任何人都可以告诉我为什么会这么快乐吗?什么影响Hbase性能
另一个问题,因为我在Linux机器上创建了5个虚拟机作为虚拟机群,它不是很强大(8G ram。3GHz 4核CPU)。当我在一个月前运行Mapreduce计划时,当我在单个主服务器上运行它或使用另外5个从服务器时,我看到没有太大区别。所以我认为CPU可能是瓶颈,但我仍然不确定。任何人都可以肯定的答案,因为我不熟悉操作系统?我不确定这是IO瓶颈还是CPU瓶颈。我只需在6台机器集群上运行该程序,即可将记录插入HBase表中,并以完全分布的模式进行操作。它太慢了,所以我杀了这份工作。
对于你的问题的第一部分:
显而易见的是,伪分布式模式将运行速度比单机模式慢。独立运行时,HBase使用本地文件系统进行存储。在伪分布式模式下,HBase使用HDFS(反过来使用本地文件系统),因此您有一个额外的IO软件层。而且,在伪分布模式下,您可能在同一台计算机上有多个服务器线程,执行诸如复制(每个数据被复制几次)之类的事情,这不会在独立模式下发生。
一般来说,对于小的(足够的)数据来说,更集中的东西(就像独立的)一样,你会有更好的性能。但是分布式模式对于大规模应用来说非常重要,因为总有一天您将达到单台机器的可扩展性极限。然后在分布式模式下,我们需要处理诸如复制之类的事情,最终会降低整体性能。
关于问题的第二部分,您不应该期望在这些设置中具有良好的性能。你必须考虑到有很多软件层:HBase,HDFS,Java,虚拟机。每个层都会增加开销。使用分布式从机时,由于所有服务器共享相同的硬件,因此速度更慢。
如果您希望看到性能提高,请考虑在Linux操作系统中使用独立模式,而不是虚拟机。然后在真正的集群中使用真正的分布式模式(而不是虚拟机)(如果可以的话,甚至可以连接几台联网的消费电脑)。你应该期望每秒大约1K〜3K次。