问题描述
我相对较新,但是对RDBMS有相当的经验。我的问题基本上是在蜂巢中写饥饿。我有一些需要大量读取(未分区)的配置表,每天需要覆盖一次(它们是来自MySQL的Sqooped实体数据,因此不是特别大)。即许多共享锁,而每天一次,独占锁需要一个窗口来写。定期执行写锁定不会发生,并且需要人工干预来强制解锁表,从而使写锁定成功。
我对配置单元表锁的理解是,如果锁获取失败,它只会hive.lock.sleep.between.retries
休眠并在放弃前重试hive.lock.numretries
次。换句话说,似乎是否有机会在没有其他读取活动的情况下撞到窗口并获得成功的锁定。
相反,我对RDBMS的经验是,锁定请求以FIFO(ish)的方式排队和处理,这意味着互斥锁定最终会出手。我很难相信有人还没有想到类似的配置,所以我认为这是不可能的。
我的集群正在使用hive.lock.manager=org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager
,据我了解,var requestTelemetry = new RequestTelemetry();
requestTelemetry.Context.InstrumentationKey = "<your key>";
是我寻求澄清的逻辑的维护者,但是我发现有关此工作原理的文档非常稀疏,所以我只讲了什么我观察到了。
我的问题:
- 配置单元中是否存在排队锁定请求之类的东西?
- 如果是的话,我该怎么做?
- 如果没有,为什么不呢?
- 还有其他解决方法吗?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)