IDEA 搭建 Apache Omid 源码 DEBUG 环境
Apache Omid 在 Apache HBase 之上提供了多行分布式事务的能力,支持全局 MVCC 功能。简单介绍编译过程。
1.下载 HBase2 并启动
https://dlcdn.apache.org/hbase/
配置环境变量
shell
export HBASE_HOME=/xxx/hbase-2.4.18
export PATH=$PATH:$HBASE_HOME/bin:
2.编译
代码编译
shell
git clone https://github.com/apache/phoenix-omid
基于最新的 master af8e377affcd76b1cbde5cab3513731b23bd51fc
编译。
maven 依赖处理
有几处编译报错,处理如下:
根 pom 里添加:
xml
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.1-b06</version>
</dependency>
hbase-common 里添加:
xml
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.1-b06</version>
<scope>test</scope>
</dependency>
timestamp-storage 模块里添加依赖:
xml
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>5.1.0</version>
<scope>compile</scope>
</dependency>
shell
# 编译
mvn clean install -Phbase-2 -DskipTests
# 查看 tso-server/target/tso-server-<VERSION>-bin.tar.gz 编译产物并解压
# 进入编译产物的 tso-server-<VERSION> 目录
cd tso-server-<VERSION>
创建 Omid tables
shell
bin/omid.sh create-hbase-commit-table -numRegions 16
bin/omid.sh create-hbase-timestamp-table
3. 启动 TSO server
方式 1:bin/omid.sh tso
方式 2:运行 org.apache.omid.tso.TSOServer#main
4.Demo 验证
运行工程 examples 下的 org.apache.omid.examples.BasicExample 和 org.apache.omid.examples.SnapshotIsolationExample,结果运行成功。
sql
-- 运行 demo 前,先通过 habase shell 创建对应的表
create 'MY_TX_TABLE', {NAME => 'MY_CF', VERSIONS => '2147483647', TTL => '2147483647'}
BasicExample: 在 HBase 中执行包含多行修改的事务,保证原子性
SnapshotIsolationExample: 展示 Omid 在并发事务访问共享数据时如何保证快照隔离
ConfigurationExample: 展示 Omid 客户端配置选项的基本示例