现象
Trafodion安装完成后需要通过sqlci执行”initialize trafodion”过程,此步骤用来创建一系列Trafodion的元数据表,然而在某些情况下我们会遇到initialize trafodion执行一会直接报”Killed”错误,感觉像是初始化的过程中被外部用户异常停止进程,此时可以在日志文件中找到相关错误信息,有时”initialize trafodion”执行不会报 “Killed”错误,而是直接在控制台打印错误信息,错误信息与日志文件里面的基本一致,
*** ERROR[8448] Unable to access Hbase interface. Call to ExpHbaseInterface::create() returned error HBASE_CREATE_ERROR(701). Cause: java.io.IOException: createTable exception. Unable to create table TRAF_RSRVD_1:TRAFODION._MD_.AUTHS Reason: java.io.IOException: createTable call error
org.trafodion.dtm.HBaseTxClient.callCreateTable(HBaseTxClient.java:2101) Caused by
org.apache.hadoop.hbase.DoNotRetryIOException: org.apache.hadoop.hbase.DoNotRetryIOException: Class org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint cannot be loaded Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
分析
此问题与HBase Master没有读取到hbase-trx的JAR包有关,或者是因为HBase中有多个Group导致
解决
- 将hbase-trx-xxx.jar包拷贝到HBase Master节点的hbase/lib目录下,此jar可以在trafodion的安装目录下面的$MY_SQROOT/export/lib下,拷贝之后重启HBase
- 检查HBase是否有多个Group,合并多个Group为一个,如将Group1中的RS合并到Default Group