phoenix_事务支持

本文档记录了在HBase中启用Phoenix事务支持的步骤,包括在regionServer和Master节点的配置,以及启动事务管理器的过程。在尝试启动时遇到了类加载错误,具体为'com.google.common.util.concurrent.Service$Listener'未找到。尽管hbase的lib目录下存在对应的guava库,但由于classpath设置不正确导致加载失败。解决这个问题需要检查并确保正确的类路径设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:官网对这块的介绍非常简洁,在实际工作过程当中也没有成功,但还是把使用过程记录在此,待以后补充(生产中的问题通过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不正确。

未完待续
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值