- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 Hbase 的新手,我的以下问题可能看起来很愚蠢!我提前道歉:)
我们有一个用例,我们需要在 Hbase 中存储一些大数据,每行将近 30MB,我们将其存储在 6 列中,每列 5MB,一些元数据的 2 列都在一个列族中。我们有两种类型的数据,我们使用 Hbase 作为一些大队列!
我们在 Hbase 中创建了两个表,分别命名为 TableA 和 TableB。我们必须插入数据(来自 A 或 B 类型),我们有一个 pull 函数,它应该获取一行(A 或 B 类型),返回它并从表中删除它。
我们有三个具有 4GB RAM 和足够存储空间的集群节点。
对于这项工作,在 Java 中,我制作了一个 ResultScanner
,获取第一行的键,然后使用 Get
检索整行,如下所示
Scan scanA = new Scan();
scanA.addColumn(familyByteArray, oneSmallColumnByteArray);
ResultScanner scanner = tblA.getScanner(scanA);
// The big problem is here, this blows region servers and takes too long
// to respond
Result r = scanner.next();
// no problem here
Get get = new Get(r.getRowKey());
r = tblA.get(get);
scanner.next()
的第一次调用打击了 regionServers(即使存储的数据几乎很小(8k 行))并且通过增加 hbase.rpc.timeout
我防止 SocketTimeoutException
,但 regionServers 有时仍会在第一个 next()
中关闭。
首先,scanner.next()
需要 60 秒,但下一个 scanner.next()
会很快回答(比如 1 秒)。
正如我之前提到的,我不关心返回哪一行,我只想获取一行并返回它。
您是否知道如何提高 scanner.next()
的速度并防止它杀死 regionServers?
最佳答案
首先,3簇是什么意思?我认为您的意思是 3 节点集群。
现在至于解决方案 4Gb(是 Node 的总内存吗?)ram 根本不够 Hbase,除非它是本地 VM。
分配给 HBase 的理想堆不应小于 8Gb。现在我建议对代码进行一些修改
关于java - Hbase ResultScanner.next() 第一次响应需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32578392/
我是 Hbase 的新手,我的以下问题可能看起来很愚蠢!我提前道歉:) 我们有一个用例,我们需要在 Hbase 中存储一些大数据,每行将近 30MB,我们将其存储在 6 列中,每列 5MB,一些元数据
我是一名优秀的程序员,十分优秀!