Как принудительно отключить регион в RegionServer? - PullRequest
0 голосов
/ 22 июня 2019

Последний выпуск сборки вызвал проблему, когда некоторые регионы оставались в автономном состоянии.HBase не переназначил их автоматически, и человеческое вмешательство было необходимо, чтобы привести их.Я пытаюсь исследовать эту проблему, и мне нужно было воспроизвести ситуацию, в которой мне нужно принудительно назначить некоторые регионы в автономном режиме без автоматического запуска HBase Master.

Используемая версия HBase - 0,98.Я знаю, что есть метод offline, который я пробовал, но регион все еще остается активным.По сути, я хочу перевести его в автономный режим, а затем использовать функцию unassign, чтобы мастер узнал об этом и назначил ему регион случайным образом.

private void bringRegionOffline(HBaseAdmin admin, HRegionInfo hri) {
    Random rand = new Random();
    if (rand.nextBoolean()) {
        try {
            admin.offline(hri.getRegionName());
        } catch (IOException e) {}
    }
}

// The following code snippet is what gets executed on a daemon thread every 30 seconds. I set it up so it only runs once.
for (TableName tn : admin.listTableNames()) {
        for (HRegionInfo hri : admin.getTableRegions(tn)) {
            bringRegionOffline(admin, hri);
            LOGGER.info("{} bought offline. Status now is: {}", hri.getRegionNameAsString(), hri.isOffline());
        }
}

Я проверил вывод из журналов, и он принеснесколько регионов в автономном режиме, но значение hri.isOffline() всегда ложно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...