phoenix_事务支持

注:官网对这块的介绍非常简洁,在实际工作过程当中也没有成功,但还是把使用过程记录在此,待以后补充(生产中的问题通过hbase原生的API-checkandput解决了,因此暂时对这块的需求没那么强烈)。

在每一个regionServerhbase-site.xml中加入如下的属性:

<property>

  <name>phoenix.transactions.enabled</name>

  <value>true</value>

</property>

 

在每一个Masterhbase-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

而这个文件在hbaselib/opt/hbase/hbase-1.3.2/lib/guava-12.0.1.jar

即,hbase中有此包,但是没加载到,说明classpath不正确。

未完待续

版权声明:本文为qq_41665356原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。