Команда разделения HBase выдает ошибку NOT splittable - PullRequest
2 голосов
/ 25 мая 2020

Я попытался принудительно разделить регион и получил следующую ошибку.

ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: 3dd9ec2b32c98131b39fbfa8266881f9 NOT splittable                                                                                       
        at org.apache.hadoop.hbase.master.assignment.SplitTableRegionProcedure.checkSplittable(SplitTableRegionProcedure.java:193)                                                          
        at org.apache.hadoop.hbase.master.assignment.SplitTableRegionProcedure.<init>(SplitTableRegionProcedure.java:115)                                                                   
        at org.apache.hadoop.hbase.master.assignment.AssignmentManager.createSplitProcedure(AssignmentManager.java:750)                                                                     
        at org.apache.hadoop.hbase.master.HMaster$3.run(HMaster.java:1859)                                                                                                                  
        at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:134)                                                                       
        at org.apache.hadoop.hbase.master.HMaster.splitRegion(HMaster.java:1851)                                                                                                            
        at org.apache.hadoop.hbase.master.MasterRpcServices.splitRegion(MasterRpcServices.java:808)                                                                                         
        at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)                                                             
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:413)                                                                                                                   
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:130)                                                                                                                  
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:324)                                                                                                        
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:304)

Кто-нибудь знает об этой ошибке?

Я использую Cloudera 6.1.1 и HBase 2.1.0.

1 Ответ

0 голосов
/ 01 июля 2020

Это ошибка, возвращаемая при попытке разбить:

  • регион meta таблицы
  • регион, который в состоянии ЗАКРЫТО / ЗАКРЫТО
  • регион имеет ссылки в другой регион (регион, который является результатом недавнего разделения другого региона)

Думаю, вы столкнулись с последним случаем. Когда HBase разделяет регион, он создает 2 новых региона (дочерних) и связывает их с областью, которая в настоящее время разделяется (родительская). Создание дочерних регионов более или менее «мгновенная» операция, требующая немного времени. Это связано с тем, что файлы, содержащие данные родительской области ( хранилище файлов), не были затронуты во время разделения: HBase задерживает реальное разделение файлов данных до сжатия. Перед уплотнением каждая дочерняя область содержит только специальную ссылку на данные родительской области. Пока эта ссылка не существует, регион считается «не разделяемым».

...