执行kylin作业报错,这个作业是要把运行结果写入到hbase的表里的,但是再写入hbase过程中报错hbase中没有表 'kylin_metadata'。
错误日志摘要——
2018-05-07 20:28:46,137 WARN [main] util.HeapMemorySizeUtil:55 : hbase.regionserver.global.memstore.upperLimit is deprecated by hbase.regionserver.global.memstore.size
2018-05-07 20:28:46,395 DEBUG [main] hbase.HBaseConnection:307 : HTable 'kylin_metadata' already exists
Exception in thread "main" java.lang.IllegalArgumentException: Failed to find metadata store by url: kylin_metadata@hbase
at org.apache.kylin.common.persistence.ResourceStore.createResourceStore(ResourceStore.java:96)
at org.apache.kylin.common.persistence.ResourceStore.getStore(ResourceStore.java:108)
at org.apache.kylin.rest.service.AclTableMigrationTool.checkIfNeedMigrate(AclTableMigrationTool.java:94)
at org.apache.kylin.tool.AclTableMigrationCLI.main(AclTableMigrationCLI.java:41)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.kylin.common.persistence.ResourceStore.createResourceStore(ResourceStore.java:90)
... 3 more
Caused by: org.apache.hadoop.hbase.TableNotFoundException: kylin_metadata
at org.apache.hadoop.hbase.client.HBaseAdmin.getTableDescriptor(HBaseAdmin.java:578)
at org.apache.hadoop.hbase.client.HBaseAdmin.getTableDescriptor(HBaseAdmin.java:551)
at org.apache.kylin.storage.hbase.HBaseConnection.createHTableIfNeeded(HBaseConnection.java:308)
at org.apache.kylin.storage.hbase.HBaseResourceStore.createHTableIfNeeded(HBaseResourceStore.java:111)
at org.apache.kylin.storage.hbase.HBaseResourceStore.<init>(HBaseResourceStore.java:92)
... 8 more
大概说的是default名称空间下的表不存在:TableNotFoundException: kylin_metadata 这个kylin_metadata的作用:存放了所有的cube元数据,包括cube描述和实例、项目信息、倒排索引描述、作业、表和字典。Kylin使用HBase而不是正常的文件系统来存放这些元数据。如果检查你的配置文件(kylin.properties)会发现这一行:
## The metadata store in hbase
kylin.metadata.url=kylin_metadata@hbase
意思是说元数据将保存在hbase中的 kylin_metadata 表里,可以在hbase shell里扫描来查看里面的数据
进到hbase shell查看default下面只有test_yhl这张表,而没有kylin_metadata,于是尝试新建一张表kylin_metadata
hbase(main):005:0> list
TABLE
nice_users:users_like
错误日志摘要——
2018-05-07 20:28:46,137 WARN [main] util.HeapMemorySizeUtil:55 : hbase.regionserver.global.memstore.upperLimit is deprecated by hbase.regionserver.global.memstore.size
2018-05-07 20:28:46,395 DEBUG [main] hbase.HBaseConnection:307 : HTable 'kylin_metadata' already exists
Exception in thread "main" java.lang.IllegalArgumentException: Failed to find metadata store by url: kylin_metadata@hbase
at org.apache.kylin.common.persistence.ResourceStore.createResourceStore(ResourceStore.java:96)
at org.apache.kylin.common.persistence.ResourceStore.getStore(ResourceStore.java:108)
at org.apache.kylin.rest.service.AclTableMigrationTool.checkIfNeedMigrate(AclTableMigrationTool.java:94)
at org.apache.kylin.tool.AclTableMigrationCLI.main(AclTableMigrationCLI.java:41)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.kylin.common.persistence.ResourceStore.createResourceStore(ResourceStore.java:90)
... 3 more
Caused by: org.apache.hadoop.hbase.TableNotFoundException: kylin_metadata
at org.apache.hadoop.hbase.client.HBaseAdmin.getTableDescriptor(HBaseAdmin.java:578)
at org.apache.hadoop.hbase.client.HBaseAdmin.getTableDescriptor(HBaseAdmin.java:551)
at org.apache.kylin.storage.hbase.HBaseConnection.createHTableIfNeeded(HBaseConnection.java:308)
at org.apache.kylin.storage.hbase.HBaseResourceStore.createHTableIfNeeded(HBaseResourceStore.java:111)
at org.apache.kylin.storage.hbase.HBaseResourceStore.<init>(HBaseResourceStore.java:92)
... 8 more
大概说的是default名称空间下的表不存在:TableNotFoundException: kylin_metadata 这个kylin_metadata的作用:存放了所有的cube元数据,包括cube描述和实例、项目信息、倒排索引描述、作业、表和字典。Kylin使用HBase而不是正常的文件系统来存放这些元数据。如果检查你的配置文件(kylin.properties)会发现这一行:
## The metadata store in hbase
kylin.metadata.url=kylin_metadata@hbase
意思是说元数据将保存在hbase中的 kylin_metadata 表里,可以在hbase shell里扫描来查看里面的数据
进到hbase shell查看default下面只有test_yhl这张表,而没有kylin_metadata,于是尝试新建一张表kylin_metadata
hbase(main):005:0> list
TABLE
nice_users:users_like