Подтвердить что ты не робот

Аналитика и добыча данных на Кассандре

У нас есть много пользовательских данных взаимодействия с различных сайтов, хранящихся в Кассандре, таких как файлы cookie, посещения страниц, просмотр объявлений, клики по объявлениям и т.д., на которые мы хотели бы сделать отчетность. Наша нынешняя схема Cassandra поддерживает базовые отчеты и запросы. Однако мы также хотели бы создавать большие запросы, которые обычно включают Joins в больших Column Families (содержащие миллионы строк).

Какой подход лучше всего подходит для этого? Одна из возможностей - извлечь данные в реляционную базу данных, такую ​​как mySQL, и провести там интеллектуальный анализ данных. Альтернативным может быть попытка использовать hadoop с ульем или свинью для запуска сокращения карты запросов для этой цели? Я должен признать, что у меня нет опыта с последним.

У кого-нибудь есть опыт различий в производительности в одном, а другой? Будете ли вы запускать запросы с уменьшением размера на реальном экземпляре Cassandra или на резервной копии, чтобы предотвратить нагрузку на запрос на производительность записи?

4b9b3361

Ответ 1

Раскрытие информации: Я инженер в DataStax.

В дополнение к предложениям Чарльза вам может потребоваться изучить DataStax Enterprise (DSE), который предлагает приятную интеграцию Cassandra с Hadoop, Hive, Pig, и Махут.

Как упоминал Чарльз, вы не хотите запускать свою аналитику напрямую против узлов Cassandra, которые обрабатывают ваши приложения в реальном времени, потому что они могут оказать существенное влияние на производительность. Чтобы этого избежать, DSE позволяет выделять часть вашего кластера строго аналитике с помощью нескольких виртуальных "центров обработки данных" (в смысле термина NetworkToplogyStrategy). Запросы, выполняемые как часть задания Hadoop, будут влиять только на эти узлы, по существу оставляя ваши обычные узлы Cassandra незатронутыми. Кроме того, вы можете масштабировать каждую часть кластера вверх или вниз отдельно в зависимости от ваших потребностей в производительности.

Существует несколько сторон подхода DSE. Во-первых, вам не нужно выполнять какой-либо ETL до обработки ваших данных; Механизмы обычной репликации Кассандры постоянно обновляют узлы, посвященные аналитике. Во-вторых, вам не нужен внешний кластер Hadoop. DSE включает в себя замену HDFS под названием CFS (CassandraFS), поэтому все исходные данные, промежуточные результаты и конечные результаты задания Hadoop могут храниться в кластере Cassandra.

Ответ 2

По моему опыту, Cassandra лучше подходит для процессов, где вам необходим доступ в реальном времени к вашим данным, быстрые случайные чтения и просто обработка больших трафика. Однако, если вы начнете выполнять сложную аналитику, доступность вашего кластера Cassandra, вероятно, будет заметно заметна. В общем, из того, что я видел, в ваших интересах оставить кластер Cassandra самостоятельно, в противном случае доступность начинает страдать.

Похоже, вам нужна платформа для аналитики, и я бы определенно посоветовал экспортировать ваши данные из Cassandra для использования в автономной системе хранения данных.

Если вы можете себе это позволить, наличие реального хранилища данных позволит вам выполнять сложные запросы со сложными объединениями в таблицах с несколькими значениями. Эти системы хранилищ данных широко используются для отчетности, вот список, на мой взгляд, ключевых игроков:

  • Netezza
  • Aster/Teradata​​li >
  • Vertica

Недавняя, которая набирает обороты, - Amazon Redshift, но в настоящее время она находится в стадии бета-тестирования, но если вы можете ее взять, вы можете дать это попытка, поскольку она похожа на прочную платформу аналитики с ценой, гораздо более привлекательной, чем вышеупомянутые решения.

Альтернативы, такие как использование Hadoop MapReduce/Hive/Pig, также интересны, но, вероятно, не заменяют технологии Hadoop. Я бы рекомендовал Hive, если у вас есть фон SQL, потому что будет очень легко понять, что вы делаете, и можете легко масштабировать. На самом деле уже есть библиотеки, интегрированные с Hadoop, например Apache Mahout, которые позволяют выполнять интеллектуальную обработку данных в кластере Hadoop, и вы должны обязательно попробовать это и посмотреть, это соответствует вашим потребностям.

Чтобы дать вам представление, подход, который я использовал, который хорошо работает до сих пор, представляет собой предварительную агрегацию результатов в Hive, а затем собственные отчеты создаются на складе данных, таком как Netezza, для вычисления сложных объединений.