gpt4 book ai didi

performance - HBase 客户端写入性能差

转载 作者:可可西里 更新时间:2023-11-01 16:23:59 30 4
gpt4 key购买 nike

我在我的应用程序服务器(-cum web 服务器)中使用 HBase 客户端和 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 客户端使用以下优化:

  1. 自动刷新=假
  2. ClearbufferOnFail=true
  3. HTable bufferSize = 12MB
  4. 设置 setWriteToWAL = false(我可以丢失 1 个数据)。

为了在读写之间保持紧密一致,我调用每 2 秒刷新一次所有缓冲表。

在我的应用程序中,我将 HBase 写入调用置于队列中(异步方式)并且使用 20 个消费者线程排空队列。在本地访问网络服务器使用 curl,我可以在 curl 完成后看到 HBase 的 TPS 为 2500,但是使用负载测试,其中请求以每秒 1200 次的高速率出现在 3 个应用程序服务器上,负责的 Consumer(drain) 线程写入 HBase 不会以与输入速率相当的速率写入数据。我是当请求速率为每秒 1200 次点击时,看到不超过 600 TPS。

谁能建议我们可以做些什么来提高性能?我试过在 3 个应用程序服务器中的每一个上将线程减少到 7 个,但仍然没有效果。专家意见会有所帮助。由于这是生产服务器,所以没有考虑交换角色,除非有人指出严重的性能优势。

[编辑]:只是为了突出/阐明我们的 HBase 写入模式,我们的第一个事务检查表 A 中的行(使用 HTable.exists)。它第一次找不到该行,因此写入三个表。随后的 4 个事务对 Table-A 进行检查,当它找到该行时,它只写入 1 个表。

最佳答案

这是一个非常古老的 HBase 版本。 截至 2013 年 8 月 18 日,我建议升级到基于 0.94.x 的版本。

除此之外,真的很难确定。有很多调谐旋钮。你应该:

  • 确保 HDFS 有足够的 xceivers。
  • 确保 HBase 有足够的堆空间。
  • 确保没有交换
  • 确保有足够的处理程序。
  • 确保您已打开压缩。 [1]
  • 检查磁盘io
  • 确保您的行键、列族名称、列限定符和值尽可能小
  • 确保您的写入在您的 key 空间中分布良好'
  • 确保您的区域已(预)拆分
  • 如果您使用的是最新版本,那么您可能需要查看编码 [2]

在处理完所有这些事情之后,您就可以开始查看日志和 jstacks。

  1. https://hbase.apache.org/book/compression.html
  2. https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.html

关于performance - HBase 客户端写入性能差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18275454/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com