2012-11-01 13 views
6

Niedawno natknąłem się na przypadek, w którym Cassandra doskonale pasuje do przechowywania wydarzeń opartych na czasie z niestandardowymi ttami na typ wydarzenia (innym rozwiązaniem byłoby zapisanie go w hadoopie i ręczne wykonanie ksiąg (ttls i inne), IMHO to bardzo złożony pomysł) lub przejść na hbase). Pytanie brzmi, jak dobra obsługa Kasandra MapReduce działa po wyjęciu z pudełka bez edycji Datastax Enterprise.Cassandras Map Reduce Support

Wygląda na to, że zainwestowali dużo w CassandraFS, ale zadaję sobie pytanie, czy normalna świnia CassandraLoader jest aktywnie utrzymywana i faktycznie skalowana (jak się wydaje, nie robi nic więcej niż iterować po rzędach w plasterkach). Czy to działa dla setek milionów wierszy?

Odpowiedz

-2

Dlaczego nie hbase? Hbase jest bardziej odpowiedni dla danych Timeseries. Możesz łatwo umieścić miliardy wierszy w bardzo małych klastrach i uzyskać do 500 tys. Wierszy na sekundę w małym klastrze 3-krotnym (do 50 MB/s) z włączoną opcją WAL. Cassandra ma kilka wad:

  1. W Cassandra faktycznie ograniczone ilości kluczy (wyobraź sobie, że w przypadku miliardów wierszy Twój naprawa będzie działać zawsze). Więc zaprojektujesz schemat, który "odrzuci" cię o, powiedzmy, godzinę, a aktualny znacznik czasu zostanie umieszczony w kolumnach. Jednak taki system nie jest skalowany ze względu na wysokie ryzyko "wielkich kolumn".
  2. Inny problem - nie można zmapować zakresu danych w kassandra, z wyjątkiem korzystania z uporządkowanego partycjonera, co nie jest opcją ze względu na jego niezdolność do prawidłowego bilansowania.
+0

To dlatego, że już używam kassandra w projekcie i nie chcę wprowadzać nowej technologii ... – Tobias

+0

Dobrze. Jeśli przetwarzanie wszystkich danych jest w porządku przez cały czas - To powinno zadziałać, ale jeśli dane będą rosły, zalecam ponowne rozważenie użycia bardziej dostosowanego do przechowywania danych z pamięcią masową. – octo

+0

Co to za nonsens? Wiele (najbardziej?) Klastrów Cassandra obsługuje miliardy wierszy całkiem dobrze. Wspomniałeś o naprawie, ale oczywiście jest ona również dystrybuowana. – jbellis

1

Możesz mapować/zmniejszać używając losowego partycjonera, ale oczywiście otrzymane klucze są w losowej kolejności. prawdopodobnie będziesz chciał użyć CL = 1 w Kasandra, więc nie musisz czytać od 2 węzłów za każdym razem, robiąc mapę/zmniejszaj i powinieneś czytać lokalne dane. Nie używałem jednak świni.

+0

Obsługa Pig dla Cassandry używa ColumnFamilyInputFormat i -OutputFormat. Więc cokolwiek możesz lub czego nie możesz zrobić w mapach hadoop całkiem dobrze do tego, co możesz zrobić i nie możesz zrobić z Cassandrą i Pig. –

+0

i czy jest on rzeczywiście szybki przy użyciu losowego partycjonera? Chyba po prostu robi coś takiego? http://stackoverflow.com/questions/8418448/cassandra-hector-how-to-retrieve-all-rows-of-a-column-family - Próbowałem iterować 100-milionowy CF ręcznie raz i to nigdy się nie zaczęło po tym, jak wysłał pierwszą rangelicequery. – Tobias

+0

ten link nie wygląda jak mapa/zmniejsz jako mapę/zmniejsz narzędzia do mappera i reduktora lub coś w tym stylu ... Muszę je szybko skonfigurować i nie mam kodu z mojego poprzedniego projektu ... tak, to szybko ponieważ wszystkie one działają równolegle ... początek jest powolny, podobnie jak przyduszenie, ponieważ dostarcza kod do każdego śledzącego zadania. –