尽管 tablet 服务器显示 110K 条目,但执行 scan -t table returns 没有结果
Executing scan -t table returns no result despite tablet server showing 110K entries
我在尝试扫描累积时遇到问题 table。短环境摘要:
所有相关组件的本地主机单集群设置:
- 累积 1.8.0
- 动物园管理员 3.4
- hadoop 2.7.3
OS:
- Ubuntu 16.05,64 位
Java:
- 1.8.0_111-8u111-b14-2ubuntu0.16.04.2-b14
问题。
首先,我创建了一个用户,然后以该用户为所有者创建了一个 table。我能够使用 Java 客户端将数据插入 table。
后来我想检查我插入的内容,为了简单起见,我选择了累加 shell.
当我 运行 命令 scan -t <table>
时,它立即 returns,没有给我任何结果。现在有趣的是,tablet 状态 window (localhost:9995) 显示问题中的 table 有大约 110K 个条目。
tablet服务器状态截图:
接下来我检查了 hdfs 中 tablets 的大小。大小对我来说意味着有数据:
1062429 2016-12-15 23:19 /accumulo/tables/c/default_tablet/A000001t.rf
我遇到同样问题的另一个 table 有一个更大的 rf 文件(它有更多的条目):
12433646 2016-12-15 22:23 /accumulo/tables/a/default_tablet/A000000i.rf
接下来我在shell中开启调试模式:
debug on
然后我再次运行扫描命令。输出:
scan
2016-12-16 00:01:38,113 [rpc.ThriftUtil] TRACE: Opening normal transport
2016-12-16 00:01:38,114 [impl.ThriftTransportPool] TRACE: Creating new connection to connection to localhost:9997
2016-12-16 00:01:38,131 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 7130
2016-12-16 00:01:38,131 [admin.TableOperations] TRACE: tid=14 Checking if table tweets exists...
2016-12-16 00:01:38,132 [admin.TableOperations] TRACE: tid=14 Checked existance of true in 0.000 secs
2016-12-16 00:01:38,132 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,146 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 7130
2016-12-16 00:01:38,147 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,158 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 7130
2016-12-16 00:01:38,158 [admin.TableOperations] TRACE: tid=14 Checking if table tweets exists...
2016-12-16 00:01:38,159 [admin.TableOperations] TRACE: tid=14 Checked existance of true in 0.000 secs
2016-12-16 00:01:38,159 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,168 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 7130
2016-12-16 00:01:38,168 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,170 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 130
2016-12-16 00:01:38,170 [shell.Shell] DEBUG: Found no scan iterators to set
2016-12-16 00:01:38,177 [impl.TabletLocatorImpl] TRACE: tid=14 Locating tablet table=c row= skipRow=false retry=false
2016-12-16 00:01:38,178 [impl.TabletLocatorImpl] TRACE: tid=14 Located tablet c<< at localhost:9997 in 0.000 secs
2016-12-16 00:01:38,178 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,178 [impl.ThriftScanner] TRACE: tid=14 Starting scan tserver=localhost:9997 tablet=c<< range=(-inf,+inf) ssil=[] ssio={}
2016-12-16 00:01:38,374 [impl.ThriftScanner] TRACE: tid=14 Completely finished scan in 0.195 secs #results=0
2016-12-16 00:01:38,374 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 262
2016-12-16 00:01:38,374 [admin.TableOperations] TRACE: tid=14 Fetching list of tables...
2016-12-16 00:01:38,374 [admin.TableOperations] TRACE: tid=14 Fetched 6 table names in 0.000 secs
2016-12-16 00:01:38,374 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,375 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 154
2016-12-16 00:01:38,375 [admin.TableOperations] TRACE: tid=14 Fetching list of namespaces...
2016-12-16 00:01:38,375 [admin.TableOperations] TRACE: tid=14 Fetched 2 namespaces in 0.000 secs
`
对我来说,输出看起来不错,好像扫描命令找到了 table 和属于那个 table 的 tablet。但是没有显示结果。
任何关于我做错或遗漏的见解都将不胜感激。
很有可能这些记录对执行扫描的 Accumulo 用户是隐藏的。即使他们是 table 或 Accumulo 根的创建者,Accumulo 用户也必须具有与每个条目关联的适当安全标签,否则他们根本看不到任何内容。
如果您有摄取的内容或用于摄取的代码的记录,请检查是否提供了安全字段。如果是,那么您的用户需要获得适当的授权才能使用 Accumulo shell.
阅读它们
setauths -s your, permissions, here -u targetuser
我在尝试扫描累积时遇到问题 table。短环境摘要:
所有相关组件的本地主机单集群设置:
- 累积 1.8.0
- 动物园管理员 3.4
- hadoop 2.7.3
OS:
- Ubuntu 16.05,64 位
Java:
- 1.8.0_111-8u111-b14-2ubuntu0.16.04.2-b14
问题。
首先,我创建了一个用户,然后以该用户为所有者创建了一个 table。我能够使用 Java 客户端将数据插入 table。
后来我想检查我插入的内容,为了简单起见,我选择了累加 shell.
当我 运行 命令 scan -t <table>
时,它立即 returns,没有给我任何结果。现在有趣的是,tablet 状态 window (localhost:9995) 显示问题中的 table 有大约 110K 个条目。
tablet服务器状态截图:
接下来我检查了 hdfs 中 tablets 的大小。大小对我来说意味着有数据:
1062429 2016-12-15 23:19 /accumulo/tables/c/default_tablet/A000001t.rf
我遇到同样问题的另一个 table 有一个更大的 rf 文件(它有更多的条目):
12433646 2016-12-15 22:23 /accumulo/tables/a/default_tablet/A000000i.rf
接下来我在shell中开启调试模式:
debug on
然后我再次运行扫描命令。输出:
scan
2016-12-16 00:01:38,113 [rpc.ThriftUtil] TRACE: Opening normal transport
2016-12-16 00:01:38,114 [impl.ThriftTransportPool] TRACE: Creating new connection to connection to localhost:9997
2016-12-16 00:01:38,131 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 7130
2016-12-16 00:01:38,131 [admin.TableOperations] TRACE: tid=14 Checking if table tweets exists...
2016-12-16 00:01:38,132 [admin.TableOperations] TRACE: tid=14 Checked existance of true in 0.000 secs
2016-12-16 00:01:38,132 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,146 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 7130
2016-12-16 00:01:38,147 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,158 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 7130
2016-12-16 00:01:38,158 [admin.TableOperations] TRACE: tid=14 Checking if table tweets exists...
2016-12-16 00:01:38,159 [admin.TableOperations] TRACE: tid=14 Checked existance of true in 0.000 secs
2016-12-16 00:01:38,159 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,168 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 7130
2016-12-16 00:01:38,168 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,170 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 130
2016-12-16 00:01:38,170 [shell.Shell] DEBUG: Found no scan iterators to set
2016-12-16 00:01:38,177 [impl.TabletLocatorImpl] TRACE: tid=14 Locating tablet table=c row= skipRow=false retry=false
2016-12-16 00:01:38,178 [impl.TabletLocatorImpl] TRACE: tid=14 Located tablet c<< at localhost:9997 in 0.000 secs
2016-12-16 00:01:38,178 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,178 [impl.ThriftScanner] TRACE: tid=14 Starting scan tserver=localhost:9997 tablet=c<< range=(-inf,+inf) ssil=[] ssio={}
2016-12-16 00:01:38,374 [impl.ThriftScanner] TRACE: tid=14 Completely finished scan in 0.195 secs #results=0
2016-12-16 00:01:38,374 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 262
2016-12-16 00:01:38,374 [admin.TableOperations] TRACE: tid=14 Fetching list of tables...
2016-12-16 00:01:38,374 [admin.TableOperations] TRACE: tid=14 Fetched 6 table names in 0.000 secs
2016-12-16 00:01:38,374 [impl.ThriftTransportPool] TRACE: Using existing connection to localhost:9997
2016-12-16 00:01:38,375 [impl.ThriftTransportPool] TRACE: Returned connection localhost:9997 (120000) ioCount: 154
2016-12-16 00:01:38,375 [admin.TableOperations] TRACE: tid=14 Fetching list of namespaces...
2016-12-16 00:01:38,375 [admin.TableOperations] TRACE: tid=14 Fetched 2 namespaces in 0.000 secs
`
对我来说,输出看起来不错,好像扫描命令找到了 table 和属于那个 table 的 tablet。但是没有显示结果。
任何关于我做错或遗漏的见解都将不胜感激。
很有可能这些记录对执行扫描的 Accumulo 用户是隐藏的。即使他们是 table 或 Accumulo 根的创建者,Accumulo 用户也必须具有与每个条目关联的适当安全标签,否则他们根本看不到任何内容。
如果您有摄取的内容或用于摄取的代码的记录,请检查是否提供了安全字段。如果是,那么您的用户需要获得适当的授权才能使用 Accumulo shell.
阅读它们setauths -s your, permissions, here -u targetuser