我有10个带hadoop / hbase的节点。
我创建了包含100个区域和预定义分割键的表:001,002 ... 099
我使用hbase 001-009
命令将区域010-019
分配给第一个节点,将区域move
分配给第二个节点,依此类推。它工作正常,我在hbase ui中看到了正确的分布。
我向表中添加1M行,每行根据键哈希具有从000到099的键前缀,我可以确保每个区域的行数几乎相等。假设每个区域有10k行,总共1M行。 使用HTable api,使用map reduce从其他表中填充数据。
如果我使用hdfs dfs -du -h /hbase/data/default/my_table
检查区域大小,我发现它们几乎相同(+/- 5%)
问题是,大多数地区都有100%的数据位置,但~10个地区的地点较低(20-60%)。它们不在同一节点上,例如第一个节点上有3个坏区域,第二个节点有4个,第三个节点有3个。
为什么会这样?如何实现100%的数据本地化?
P.S。主要压缩不能解决它