注:官网对这块的介绍非常简洁,在实际工作过程当中也没有成功,但还是把使用过程记录在此,待以后补充(生产中的问题通过hbase原生的API-checkandput解决了,因此暂时对这块的需求没那么强烈)。
在每一个regionServer的hbase-site.xml中加入如下的属性:
<property>
<name>phoenix.transactions.enabled</name>
<value>true</value>
</property>
在每一个Master的hbase-site.xml中加入如下的属性:
<property>
<name>data.tx.snapshot.dir</name>
<value>/tmp/tephra/snapshots</value>
</property>
<property>
<name>data.tx.timeout</name>
<value>60</value>
<description> set the transaction timeout (time after which open transactions become invalid) to a reasonable value.</description>
</property>
名称 | 默认 | 描述 |
data.tx.bind.port | 15165 | 要绑定的端口 |
data.tx.bind.address | 0.0.0.0 | 要监听的服务器地址 |
data.tx.server.io.threads | 2 | 套接字IO的线程数 |
data.tx.server.threads | 20 | 处理程序线程的数量 |
data.tx.timeout | 30 | 交易完成超时(秒) |
data.tx.long.timeout | 86400 | 长时间运行的事务完成超时(秒) |
data.tx.cleanup.interval | 10 | 检查超时交易的频率(秒) |
data.tx.snapshot.dir |
| HDFS目录用于存储tx状态的快照 |
data.tx.snapshot.interval | 300 | 写入新快照的频率 |
data.tx.snapshot.retain | 10 | 要保留的旧事务快照的数量 |
data.tx.metrics.period | 60 | 指标报告频率(秒) |
启动事务管理器:
tephra start
查看tephra状态
查找pid文件:
日志路径:
/tmp/tephra-root/tephra-service-root-z1.y.log
日志中报错:
2018-04-17 15:45:49,556 INFO [main] inmemory.InMemoryTransactionService: Configuring TransactionService, address: 0.0.0.0, port: 15165, threads: 20, io threads: 2, max read buffer (bytes): 16777216
2018-04-17 15:45:49,559 INFO [main] tephra.TransactionServiceMain: Starting TransactionServiceMain
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/util/concurrent/Service$Listener
at org.apache.tephra.distributed.TransactionService.doStart(TransactionService.java:87)
at com.google.common.util.concurrent.AbstractService.start(AbstractService.java:90)
at com.google.common.util.concurrent.AbstractService.startAndWait(AbstractService.java:129)
at org.apache.tephra.TransactionServiceMain.start(TransactionServiceMain.java:118)
at org.apache.tephra.TransactionServiceMain.doMain(TransactionServiceMain.java:85)
at org.apache.tephra.TransactionServiceMain.main(TransactionServiceMain.java:49)
Caused by: java.lang.ClassNotFoundException: com.google.common.util.concurrent.Service$Listener
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
提示找不到类文件:com/google/common/util/concurrent/Service
而这个文件在hbase的lib中/opt/hbase/hbase-1.3.2/lib/guava-12.0.1.jar
即,hbase中有此包,但是没加载到,说明classpath不正确。
未完待续