Analityka i wydobywanie danych

Mamy wiele danych interakcji użytkowników z różnych stron internetowych przechowywanych w Cassandrze, takich jak pliki cookie, wizyty na stronie, wyświetlane reklamy, klikane reklamy itp.. które chcielibyśmy zgłosić. Nasz aktualny schemat Cassandra obsługuje podstawowe raportowanie i zapytania. Jednak chcielibyśmy również zbudować duże zapytania, które zazwyczaj obejmowałyby połączenia na dużych rodzinach kolumn (zawierających miliony wierszy).

Jakie podejście najlepiej się do tego nadaje? Jedną z możliwości jest wyodrębnienie danych do relacyjnych baz danych, takich jak mySQL i zrobić eksploracji danych tam. Alternatywą może być próba użycia hadoop z hive lub pig do uruchomienia map reduce queries w tym celu? Muszę przyznać, że z tym ostatnim nie mam żadnego doświadczenia.

Ktoś ma doświadczenie z różnicami w wydajności w jednym na drugim? Czy uruchamianie map reduce queries na uruchomionej instancji produkcyjnej Cassandra lub na kopii zapasowej, aby zapobiec wpływowi obciążenia zapytań na wydajność zapisu?

Author: NG Algo, 2013-01-26

2 answers

Ujawnienie: jestem inżynierem w DataStax.

Oprócz sugestii Charlesa, warto przyjrzeć się DataStax Enterprise (DSE), który oferuje miłą integrację Cassandry z Hadoop, Hive, Pig i Mahout.

Jak wspomniał Charles, nie chcesz uruchamiać analiz bezpośrednio z węzłami Cassandra, które obsługują twoje potrzeby aplikacji w czasie rzeczywistym, ponieważ mogą mieć znaczący wpływ na wydajność. Aby tego uniknąć, DSE pozwala poświęcić część klastra wyłącznie do analizy za pomocą wielu wirtualnych "centrów danych" (w znaczeniu tego terminu NetworkToplogyStrategy). Zapytania wykonywane jako część zadania Hadoop będą miały wpływ tylko na te węzły, zasadniczo pozostawiając normalne węzły Cassandra nienaruszone. Dodatkowo można skalować każdą część klastra w górę lub w dół oddzielnie w zależności od potrzeb wydajnościowych.

Jest kilka zalet podejścia DSE. Po pierwsze, nie musisz wykonywać żadnego ETL przed przetworzeniem danych; normalne mechanizmy replikacji Cassandry utrzymują węzły poświęcone analityce na bieżąco. Po drugie, nie potrzebujesz zewnętrznego klastra Hadoop. DSE zawiera zamiennik HDFS o nazwie CFS (CassandraFS), więc wszystkie dane źródłowe, wyniki pośrednie i końcowe wyniki z zadania Hadoop mogą być przechowywane w klastrze Cassandra.

 8
Author: Tyler Hobbs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-28 05:09:28

Z mojego doświadczenia wynika, że Cassandra lepiej nadaje się do procesów, w których potrzebujesz dostępu do danych w czasie rzeczywistym, szybkiego losowego odczytu i ogólnie obsługi dużych obciążeń. Jeśli jednak zaczniesz wykonywać złożone analizy, dostępność Twojego klastra Cassandra prawdopodobnie znacznie ucierpi. Z tego, co widziałem, w Twoim najlepszym interesie leży pozostawienie klastra Cassandry w spokoju, w przeciwnym razie dostępność zacznie cierpieć.

Wygląda na to, że potrzebujesz platformy analitycznej i Zdecydowanie radzę wyeksportować Twoje dane raportowe z Cassandry do wykorzystania w systemie hurtowni danych offline.

Jeśli możesz sobie na to pozwolić, posiadanie prawdziwej hurtowni danych pozwoli Ci na wykonywanie złożonych zapytań ze złożonymi połączeniami w tabelach wielokrotności. Te systemy hurtowni danych są szeroko stosowane do raportowania, oto lista, które są moim zdaniem kluczowymi graczami:

  • Netezza
  • Aster / TeraData
  • Vertica

Ostatni, który zyskuje wiele momentum to Amazon Redshift, ale jest obecnie w fazie beta, ale jeśli możesz dostać w swoje ręce, możesz spróbować, ponieważ wygląda to na solidną platformę analityczną z ceną znacznie bardziej atrakcyjną niż powyższe rozwiązania.

Alternatywy, takie jak używanie Hadoop MapReduce/Hive/Pig, są również interesujące do obejrzenia, ale prawdopodobnie nie są zamiennikiem technologii Hadoop. Polecam Hive jeśli masz tło SQL bo bardzo łatwo będzie zrozumieć czym jesteś robi i można łatwo skalować. W rzeczywistości istnieją już biblioteki zintegrowane z Hadoop, takie jak Apache Mahout , które pozwalają na eksplorację danych w klastrze Hadoop, zdecydowanie powinieneś spróbować i sprawdzić, czy pasuje do Twoich potrzeb.

Aby dać ci pomysł, podejście, które wykorzystałem, które działa dobrze do tej pory jest wstępnie agregowanie wyników w Hive, a następnie mają same raporty generowane w hurtowni danych, takich jak Netezza, aby obliczyć złożone połączenia .

 13
Author: Charles Menguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-26 01:07:28