2017-01-11 15 views
5

Я использую HBase (0.98 в клиенте с сервером как HBase 1.1.2) с базовым хранилищем данных как HDFS.Как очистить таблицу в HBase

Я попытался очистить таблицу, используя следующий код, и могу видеть данные, сброшенные в местоположение HFile в Hadoop.

  htable.put(puts); 
      htable.close(); 
      admin.flush(tableName); 

расположение данных в Hadoop

./hadoop fs -du /hbase/data/default/tableName/ 

Когда я власть выключить и перезапустить узел, перезапущен Hadoop и HBase могу видеть данные испортился в HDFS.

Если данные правильно очищены до HFile, то почему он поврежден во время отключения питания.

Нужно ли внести какие-либо изменения в код для промывки стола?

Спасибо, Har

+0

Несколько вопросов: 1. Это кластер или установка одного узла? 2. Вы изящно отключите службы namenode перед отключением машины? 3. Как вы знаете, что данные повреждены? – Venkat

ответ

0

я получил что-то подобное лет назад, и это было связано с sync problem. Я вижу резолюцию для этого. Here - это еще одно описание, с диаграммой последовательности для операции ввода.

Что происходит в вашем случае? Возможно, это очень мало и заканчивается в памяти, а не в HFile, где вы хотите проверить, не поврежден ли он или нет.

Попробуйте написать 25 МБ или более - поскольку это размер страницы для hadoop, и это вызовет все записи. Таким образом, вы можете просто устранить другие проблемы. Если это сработает - тогда вы можете играть с сохранением политики или просто ждать больше. Глупый совет, но обратите внимание, что в обычной системе будет больше записей, поэтому в любом случае будет вызвана полная запись в HFile. Другой вариант - заставить его, но ваше производство может ухудшиться при слишком большом количестве записей.