我在HBase的应用服务器(-cum web-server)中使用HBase客户端 使用CDH3u4(HBase-0.90)对6个节点进行集群设置。 HBase / Hadoop服务 在群集上运行是:
NODENAME-- ROLE
Node1 -- NameNode
Node2 -- RegionServer, SecondaryNameNode, DataNode, Master
Node3 -- RegionServer, DataNode, Zookeeper
Node4 -- RegionServer, DataNode, Zookeeper
Node5 -- RegionServer, DataNode, Zookeeper
Node6 -- Cloudera Manager, RegionServer, DataNode
我正在为我的HBase客户端使用以下优化:
为了在读写之间保持一致,我正在打电话 每2秒对所有缓冲表进行flush-commit。
在我的应用程序中,我将HBase写入调用置于队列(异步方式)和 使用20个消费者线程排空队列。在本地点击Web服务器 使用curl,我能够在卷曲完成后看到HBase的TPS为2500,但是 使用Load-test,请求以每秒1200次点击的高速率发出 在3个应用程序服务器上,负责的消费者(排水)线程 写入HBase不会以与输入速率相当的速率写入数据。我 当请求率为每秒1200次点击时,看到的TPS不超过600。
有人可以建议我们可以做些什么来提高性能?我试过了 在3个应用服务器的每一个上将线程减少到7但仍然没有效果。专家 意见会有所帮助。由于这是一个生产服务器,所以不要思考 交换角色,除非有人指出严重的性能优势。
[编辑]: 为了突出/澄清我们的HBase写入模式,我们的第一个事务检查表-A中的行(使用HTable.exists)。它无法第一次找到行,因此写入三个表。后续的4个事务使表A上存在检查,并且当它找到该行时,它只写入1个表。
答案 0 :(得分:4)
所以这是一个相当古老的HBase版本。 截至2013年8月18日,我建议升级到基于0.94.x的内容。
除此之外,确实很难告诉你。有很多调音旋钮。你应该:
在完成所有这些事情后,您可以开始查看日志和jstack。