HBase 单行事务支持中的行锁定

2023-12-22

在 HBase 中,为了提供单行事务支持,它使用行锁定概念。假设,例如

Put p=new Put("/*Row Key*/");该语句将锁定该行。

所以,直到我们完成

表.put(p)

锁不会被释放。

所以,在这之间,如果我开始一个新的看跌期权,即

Put p1=new Put("/Row Key");

p1 put 不应该工作,因为该行已经被锁定,但在 HBase 0.94 中,当我尝试它工作时。

关于行锁链接 我在哪里看到过 Row Lock http://blog.cloudera.com/blog/2013/01/apache-hbase-internals-locking-and-multiversion-concurrency-control/我的理解有什么问题吗。如果不是,单行事务支持如何在行锁定的情况下工作。


HBase 的工作方式是,当应用 Put 时,锁被保存在区域服务器(而不是客户端)中,以确保行写入原子块中,但它不提供快照隔离 http://en.wikipedia.org/wiki/Snapshot_isolation(你需要使用类似的东西omid https://github.com/yahoo/omid如果你想要的话)。

假设您的两个 put 不是从同一客户端发送的(在这种情况下,它们可能是同一事务的一部分),并且除非 HBase 将崩溃或在 put 之间的某处发生超时(例如由于压缩)。您的两个 put 将根据它们到达的顺序在 HBase 中连续应用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HBase 单行事务支持中的行锁定 的相关文章

随机推荐

  • C# Windows 服务 - 安装时的默认参数

    我的应用程序 这是一项 Windows 服务 需要一个命令行参数 它是配置文件的位置 我希望该服务能够自动启动 填写 启动参数 值仅适用于手动启动它 并且该值在服务停止后不会保留 我尝试在注册表中手动编辑 可执行文件的路径 但 net 服务
  • 为什么 `(['1','2','3']).map(parseInt)` 无法得到正确的结果?

    1 2 3 map n gt parseInt n 将返回预期结果 1 2 3 But 1 2 3 map parseInt returns 1 NaN NaN 哪里错了 As Array map https developer mozil
  • 从 C++ 中的另一个程序重定向标准输出

    我正在编写单元测试 因此无法更改我正在测试的文件中的代码 我正在测试的代码在 cout 中有消息 我试图将其重定向到文件中以检查以确保程序输出正确的消息 有谁有办法在另一个程序中重定向标准输出而不会导致延迟 我尝试过 freopen 这导致
  • 从 C++ 调用 Java:如何捕获/检测致命 JVM 错误?

    我正在开发一个 C 程序 Win32 MS Visual Studio 2008 它通过 JNI 创建一个 Java VM 如下所示here http docs oracle com javase 6 docs technotes guid
  • Android Listview项目10秒后自动更改?

    我有两个数组列表 一个是出发列表 一个是到达列表我想显示此列表 或者表示 10 秒后列表会自动更改 前 10 秒出发列表和后 10 秒到达列表 我将把我的代码放在这里我将尝试使用可运行的但我的应用程序在运行此代码时挂起 主页活动 java
  • 将数据从子窗口传递到主窗口 TextBlock

    在这个例子中 MainWindow有一个打开的按钮Window2 Window2有一个按钮写着 Hello World 到MainWindow文本块 项目来源 https www dropbox com s jegeguhycs1mewu
  • C++ 中的 substr() 方法

    我正在尝试将一些表达式子串为单个标记 例如 等 我遇到的问题是 当我尝试使用下面的 cout 行创建 S B H S J R P 的子字符串时 我得到 S J R P 而我认为应该是 S J R 它要么超出了我所见过的范围 要么就是太简单了
  • ASP.NET MVC 中的面向方面编程

    我目前正在 ASP NET 中开发 MVC 应用程序 我正在尝试分离关注点 以便最终得到更干净 更易于维护的代码 因此 作为一个起点 我正在考虑日志记录方面 我的想法是 最初 记录每个控制器中每个方法的调用和返回 我会将这个逻辑放在一个单独
  • 改造 POST 请求 response.isSuccessful() 返回 false

    我正在努力使POST使用 Retrofit2 请求 但我现在的处境是response isSuccessful 返回 false 我不知道如何调试它 我检查了后端的日志 没有错误 什么也没有 我确保请求的 URL 正确 所有参数也正确 我做
  • 使用 gradle 构建 android,替换每个产品风味的字符串

    在我将 Android 项目构建为两个不同的付费和免费应用程序之前 我更改了每个值和字符串 所以昨天我犯了一个大错误 所以 我正在学习如何使用 gradle 来构建我的应用程序 我的应用程序有一些差异 应用程序名称 只需添加后缀 Free
  • 将 NaN 替换为 pandas 数据框中的空列表

    我正在尝试用空列表 替换数据中的一些 NaN 值 但是该列表表示为 str 并且不允许我正确应用 len 函数 无论如何 有没有办法用 pandas 中的实际空列表替换 NaN 值 In 28 d pd DataFrame x 1 2 3
  • 如何创建包含所有点的箱线图,其中对于每个组,可以手动分配点的颜色

    我有一个数据框 gt dput df2 structure list Genotype c miR 15 16 FL miR 15 16 FL miR 15 16 FL miR 15 16 FL miR 15 16 FL miR 15 16
  • 使用 ruby​​ gsub 和 regexp 进行更智能的字符替换

    我正在尝试为某些文章标题创建类似于永久链接的行为 但我不想为永久链接添加新的数据库字段 所以我决定编写一个助手 将我的文章标题从 O focoas a pornit cruciada mpotriva b rba ilor zg rci i
  • Composer 自动加载 - 找不到类

    我正在运行一个 Silex 小应用程序 试图让某种结构继续下去 这是我的composer json require silex silex 1 3 autoload psr 0 HelloWorld Controller src Hello
  • 进行布尔或可见性的最佳方法

    我有一个控件 仅当一系列属性中至少有一个返回 true 时 我才希望该控件可见 我正要实现我自己的 BooleanOrToVisibilityMultiConverter 但感觉必须有一个更好的 并且完全明显的 方法来做到这一点 请赐教 M
  • 如何声明 C# Web 用户控件但阻止其初始化?

    我有一个 C ASP NET aspx 页面 它声明了两个控件 每个控件代表一个选项卡的内容 我需要一个查询字符串参数 例如 tab 1 来确定激活两个控件中的哪一个 我的问题是 它们都经历初始化事件并填充其子控件 浪费 CPU 资源并减慢
  • 从外部禁用 Linux 程序的信号

    在 Linux 上 是否可以以某种方式禁用程序的信号发送外在地 也就是说 不修改他们的源代码 Context 我正在呼叫 C 还有一个Java 在 Linux 上的 bash 脚本中编写程序 我不希望我的 bash 脚本以及该脚本启动的其他
  • Angular 2 选择组件设置初始选择

    我正在尝试使用 ngModel 在 Angular 2 中创建一个选择组件包装器 一旦选择更改 所有事件都会正确触发 但我无法在渲染时设置初始选择 这是我的组件 Component selector my dropdown inputs s
  • 如何优化 SQLAlchemy 生成的这个查询?

    我有一个由 SQLAlchemy ORM 生成的查询 它应该检索特定课程的stream items 及其所有部分 资源 内容文本块等 以及发布它们的用户 然而 这个查询似乎非常慢 在我们的生产数据库上花费了几分钟的时间 数据库中有大约 20
  • HBase 单行事务支持中的行锁定

    在 HBase 中 为了提供单行事务支持 它使用行锁定概念 假设 例如 Put p new Put Row Key 该语句将锁定该行 所以 直到我们完成 表 put p 锁不会被释放 所以 在这之间 如果我开始一个新的看跌期权 即 Put