Гиперконвергенция Cassandra + Spark executor - PullRequest
1 голос
/ 25 января 2020

Поскольку Apache Spark - это предложенный механизм распределенной обработки для Cassandra, я знаю, что существует возможность запуска исполнителей Spark вместе с узлами Cassandra. Мой вопрос заключается в том, достаточно ли умны драйвер и соединитель Spark, чтобы понимать разбиение и распределение сегментов, чтобы данные обрабатывались гиперконвергентным образом.

Проще говоря, выполняет ли исполнители данные, хранящиеся в разделах, размещенных на узлах, на которых работает исполнитель, поэтому ненужные данные не передаются по сети, как это делает Spark при работе с HDFS?

Ответы [ 3 ]

2 голосов
/ 25 января 2020

Да, Spark Cassandra Connector может это сделать. Из исходного кода :

Метод getPreferredLocations сообщает Spark предпочитаемые узлы, из которых следует извлечь раздел, так что данные для раздела находятся на том же узле, на котором находится задача был отправлен в. Если узлы Cassandra размещаются вместе с узлами Spark, запросы всегда отправляются процессу Cassandra, выполняющемуся на том же узле, что и процесс Spark Executor, поэтому данные не передаются между узлами. Если узел Cassandra дает сбой или получает перегруженные во время чтения, запросы повторяются на другой узел.

1 голос
/ 26 января 2020

Я хотел бы добавить к ответу Алекса:

Да, Spark Cassandra Connector может это сделать. Из исходного кода:

Метод getPreferredLocations сообщает Spark о предпочтительных узлах, из которых следует извлечь раздел, чтобы данные для раздела находились на том же узле, на который была отправлена ​​задача. Если узлы Cassandra размещаются вместе с узлами Spark, запросы всегда отправляются процессу Cassandra, выполняющемуся на том же узле, что и процесс Spark Executor, поэтому данные не передаются между узлами. Если во время чтения происходит сбой или перегрузка узла Cassandra, запросы повторяются к другому узлу.

Что это плохое поведение.

В Cassandra, когда вы просите получить данные конкретного раздела, доступ только к одному узлу. Spark может получить доступ к 3 узлам благодаря репликации. Таким образом, без перетасовки у вас есть 3 узла, участвующих в работе.

Однако в случае oop, когда вы запрашиваете данные определенного раздела, обычно ко всем узлам в кластере обращаются, а затем Spark использует все узлы в кластере как исполнители.

Итак, если у вас есть 100 узлов: в Cassandra Spark будет использовать 3 узла. В случае oop Spark будет использовать 100 узлов.

Cassandra оптимизирована для операционных систем реального времени и поэтому не оптимизирована для аналитики, такой как озера данных.

1 голос
/ 25 января 2020

Теоретически да. То же самое для HDFS тоже. Однако практически я видел меньше этого в облаке, где отдельные узлы используются для искры и Cassandra, когда используются их облачные сервисы. Если вы используете IAsAS и настраиваете свои собственные Cassandra и Spark, вы можете достичь этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...