gpt4 book ai didi

hadoop - HBase 异常 : org. apache.hadoop.hbase.UnknownRowLockException

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

我正在运行我为测试 HBase lockRow()unlockRow() 方法而编写的示例代码。示例代码如下:

HTable table = new HTable(config, "test");
RowLock rowLock = table.lockRow(Bytes.toBytes(row));
System.out.println("Obtained rowlock on " + row + "\nRowLock: " + rowLock);

Put p = new Put(Bytes.toBytes(row));
p.add(Bytes.toBytes("colFamily"), Bytes.toBytes(colFamily), Bytes.toBytes(value));
table.put(p);
System.out.println("put row");
table.unlockRow(rowLock);
System.out.println("Unlocked row!");

当我执行我的代码时,我得到一个 UnknownRowLockException。文档说当一个未知的行锁被传递到区域服务器时会抛出这个错误。我不确定这是怎么发生的以及如何解决它。

堆栈跟踪如下:

Obtained rowlock on row2
RowLock: org.apache.hadoop.hbase.client.RowLock@15af33d6
put row
Exception in thread "main" org.apache.hadoop.hbase.UnknownRowLockException: org.apache.hadoop.hbase.UnknownRowLockException: 5763272717012243790
at org.apache.hadoop.hbase.regionserver.HRegionServer.unlockRow(HRegionServer.java:2099)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:604)
at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1055)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.hadoop.hbase.RemoteExceptionHandler.decodeRemoteException(RemoteExceptionHandler.java:96)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.translateException(HConnectionManager.java:1268)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getRegionServerWithRetries(HConnectionManager.java:1014)
at org.apache.hadoop.hbase.client.HTable.unlockRow(HTable.java:870)
at HelloWorld.Hello.HelloWorld.main(HelloWorld.java:41)

编辑:

我刚刚意识到我应该打印 rowLock.getLockId() 而不是 rowLock。我这样做并将它与堆栈跟踪中的行锁进行比较,它们是相同的,所以我不确定为什么会发生 UnknownRowLockException

最佳答案

请更改底层系统上的“文件描述符限制”。
在 linux 上你可以用 ulimit 来做到这一点

请注意,HBase 在其日志中将其看到的 ulimit 作为第一行打印。

关于hadoop - HBase 异常 : org. apache.hadoop.hbase.UnknownRowLockException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22087319/

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