Mam rozwiązanie, które można zsynchronizować, ale nie mam (jeszcze) doświadczenia z hadoop/nosql i nie jestem pewien, które rozwiązanie jest najlepsze dla moich potrzeb. Teoretycznie, gdybym miał nieograniczoną liczbę procesorów, moje wyniki powinny natychmiast wrócić. Tak więc każda pomoc będzie doceniona. Dzięki!w czasie rzeczywistym kwerendy/agregowanie milionów rekordów - hadoop? hbase? Kasandra?
Oto co mam:
- 1000S zbiorów danych
- klucze Dataset:
- wszystkich zbiorów danych mają takie same klucze
- 1 milion klucze (może później być 10 lub 20 milionów)
- Kolumn zestawu danych:
- każdy zbiór danych ma te same kolumny
- 10 do 20 kolumn
- większość kolumny są wartości liczbowe dla której musimy zsumować na (średnio, OdchStd i używać R obliczyć statystykę)
- kilka kolumn „type_id” kolumny, ponieważ w danym zapytaniu możemy chcą tylko zawierać pewne type_ids
- aplikacji internetowych
- użytkownik może wybrać, które dane osobowe ETS są zainteresowani (w dowolnym miejscu od 15 do 1000)
- aplikacja musi przedstawić: klucz, a zagregowane wyniki (AVG, OdchStd) każdej kolumnie
- aktualizacje danych:
- cały zestawu danych można dodać, upuścić lub wymienić/zaktualizować
- byłoby fajnie, aby móc dodawać kolumny. Ale jeśli to konieczne, może po prostu zastąpić cały zestaw danych.
- nigdy dodać wiersze/klucze do zbioru danych - więc nie potrzebny jest system z wieloma szybko pisze
- infrastruktura:
- obecnie dwie maszyny z 24 rdzeni każdy
- końcu chcą możliwość również uruchomić to na Amazon
nie mogę wcześniej obliczyć moje zagregowane wartości, ale ponieważ każdy klawisz i Niezależna, powinna być łatwo skalowalna. Obecnie mam te dane w bazie danych postgres, gdzie każdy zestaw danych znajduje się we własnej partycji.
- partycje są ładne, ponieważ można łatwo dodać/drop/wymienić partycje
- baza danych jest miłe dla filtrowania na podstawie type_id
- bazy danych nie są łatwe do pisania równoległe zapytaniami
- baz danych są dobre dla uporządkowany dane, a moje dane nie są skonstruowane
Jako dowód koncepcji starałem się Hadoop:
- stworzyliśmy kartę oddzielone plik za zbiorze danych dla danej type_id
- przesłanym do HDFS
- mapę: pobierana jest wartość/kolumny dla każdego kluczowego
- ograniczenia: obliczona średnia i odchylenie standardowe
Od mój prymitywny proof-of-concept, widzę, że to ładnie się skaluje, ale widzę, że hadoop/hdfs ma opóźnienie Czytałem, że generalnie nie jest ono używane do kwerend w czasie rzeczywistym (mimo że jestem w porządku z powrotem wyników z powrotem do użytkowników w 5 sekund).
Wszelkie sugestie dotyczące tego, jak powinienem się do tego podejść? Zastanawiałem się, czy nie spróbować HBase'a, żeby to wyczuć. Czy powinienem raczej spojrzeć na Hive? Cassandra? Voldemort?
dziękuję!
Dzięki za pomoc. Prawdopodobnie nie wiedziałem, dlaczego nie mogę wykonać obliczeń wstępnych. Szukam średniej wartości dla określonego klucza i konkretnej kolumny przez abrbitrary (określony przez użytkownika) zestaw zestawów danych. Na przykład jeden użytkownik może wybrać 500 zestawów danych, ale inny użytkownik może wybrać inne 500 zestawów danych. Mimo że obliczamy statystyki dla wszystkich tych samych kluczy i dla wszystkich tych samych kolumn, to zbiory danych (pliki w hadoopie lub partycje w mojej bazie danych) zmieniają się. Dzięki. – anish
@anish W przypadku standardowego i średniego można wstępnie obliczyć i zapisać wystarczającą ilość informacji, aby szybko połączyć zbiory - wystarczy śledzić sumę wartości, sumę kwadratów i całkowitą liczbę. – cftarnas
OK, czuję się tutaj trochę gęsty i zupełnie brakuje mi tego, jak łatwo obliczyć dane. Jestem pokorny ... czy mogę uzyskać niewielką pomoc? Jeśli mam 3 zbiory danych (A, B, C), moje możliwe kombinacje to: A, B, C, ABC, AB, BC. Czy nie potrzebowałbym wstępnego obliczenia dla wszystkich permutacji? Dzięki tysiącom zestawów danych będzie to dużo danych. Alternatywnie, zamierzałem spróbować poprawić wydajność pobierania wartości dla określonych zestawów danych wszystkich kluczy poprzez: zapytania równoległe i być może podejście zorientowane na kolumny (columns = zestawy danych i odpowiadające im wartości). David, dziękuję za powiedzenie mi, żebym spróbował HBase. dzięki! – anish