gpt4 book ai didi

nosql - Hbase性能

转载 作者:可可西里 更新时间:2023-11-01 14:35:54 25 4
gpt4 key购买 nike

我正在使用 Spring + Datanucleus JDO + Hbase。 Hbase 是一个完全分布式的模式,有两个节点。我在这里面临严重的性能问题。

我的 webapp 可以被认为是一个 pinger,它只是不断地 ping URL 并存储他们的响应。 Hnce 我的应用程序运行多个线程以插入数据库。我观察到,一旦并发写入的数量超过 20 左右,插入就会开始花费大量时间(有些甚至需要 1000 秒)。当这种情况发生时,READS 也开始失败,我的 webapp 无法从数据库中提取任何数据(我的 webapp 挂起)。我不是 NoSQL 数据库专家,因此不知道从哪里开始寻找性能。

我的主要配置是:Zookeeper 法定人数:1Hbase 区域服务器:2数据节点:2hbase.zookeeper.property.maxClientCnxns: 400复制因子:3

我需要增加 Hbase 的堆大小吗?高 WRITE 吞吐量是否会对 READ 产生影响?

我是不是配置有问题?似乎写入文件会比将数据写入 Hbase 更快。这是我在 Hbase 上的最后一次尝试。请帮忙

最佳答案

我看到的最大问题是您在复制因子为 3 的 2 个节点上运行 HBase(实际上实际上只有 2,因为只有 2 个节点要复制到)。这意味着所有写入都必须复制到两个节点。 HBase 确实需要至少 5 个左右的节点才能运行。

听起来你正在填满你的第一个区域并且它正在 split ,在 split 期间一旦 MemStore 填满你将开始阻塞。您应该考虑将表预先拆分为多个区域,这将为您提供均匀的写入分布。

我建议看一下 HBase book's chapter on performance ,特别是关于 pre-splitting tables 的部分.

您还应该使用 compression ,确保你的本地压缩工作正常(gzip、lzo 或 snappy)——不要使用纯 Java 压缩,否则你会非常慢,链接对此进行了一些讨论。

关于nosql - Hbase性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243670/

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