2017-01-11 11 views
5

Korzystam z HBase (0,98 w Client with server jako HBase 1.1.2) z bazowym magazynem danych jako HDFS.Jak przepłukać tabelę w HBase

Próbowałem przepłukać tabelę za pomocą następującego kodu i jestem w stanie zobaczyć dane przepłukiwane do lokalizacji HFile w Hadoop.

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

lokalizacja danych w Hadoop

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

Kiedy zrobić moc zamknąć i ponownie uruchomić węzeł, wznowił Hadoop i HBase jestem w stanie zobaczyć dane został uszkodzony w HDFS.

Jeśli dane zostały poprawnie przepłukane do HFile, to dlaczego ulegają uszkodzeniu podczas wyłączania zasilania.

Czy muszę wprowadzić jakiekolwiek zmiany w kodzie do płukania stołu?

Dzięki Har

+0

Kilka pytań: 1. Czy jest to instalacja klastrowa czy pojedyncza instalacja? 2. Czy wdzięcznie wyłącza się usługi namenode przed wyłączeniem urządzenia? 3. Skąd wiadomo, że dane są uszkodzone? – Venkat

Odpowiedz

0

mam coś takiego rok temu, a to ze względu na sync problem. Widzę na to rozwiązanie. Here to kolejny opis ze schematem sekwencji dla operacji put.

Co dzieje się w twoim przypadku? Być może ten układ jest dość mały i kończy się w pamięci, a nie w HFile, gdzie chcesz sprawdzić, czy jest "uszkodzony", czy też nie.

Spróbuj napisać 25 MB lub więcej - ponieważ jest to rozmiar strony dla hadoop, a to spowoduje wyzwolenie wszystkich zapisów. W ten sposób możesz po prostu wyeliminować inne problemy. Jeśli to działa - możesz grać z zachowaniem polityki lub po prostu poczekać dłużej. Głupia rada, ale zauważ, że w normalnym systemie będzie więcej zapisów, więc i tak pełne zapisy do HFile będą uruchamiane. Inną opcją jest wymuszenie tego, ale twoja produkcja może pójść źle przy zbyt wielu zapisach.