Проблема с производительностью Spark Cassandra

Я новый ученик Спарка и Кассандры. Я столкнулся с серьезной проблемой производительности. Я передаю данные из Kafka каждые 5 секунд в Spark, затем выполняю анализ данных на языке R с использованием JRI и, наконец, сохраняю данные в соответствующем семействе столбцов Cassandra. Продолжительность времени (в миллисекундах) для сохранения данных в Cassandra очень быстро увеличивается с количеством входных запросов [каждый запрос составляет 200 КБ].

Искра производительности

Код искры:

 sessionData.foreachRDD(new Function<JavaRDD<NormalizedData>, Void>() {
    public Void call(JavaRDD<NormalizedData> rdd)     {
System.out.println("step-3 " + System.currentTimeMillis());
javaFunctions(rdd).writerBuilder("keyspace",normalized_data",mapToRow(NormalizedData.class)).saveToCassandra();
System.out.println("step-4 " + System.currentTimeMillis());}}

person Niharika    schedule 09.11.2015    source источник
comment
spark-default.conf:connection.spark.Cassandra.connection.keep_alive_ms 3600000 spark.Cassandra.output.batch.size.rows 2 spark.cassandra.output.concurrent.writes10 spark.cassandra.output.batch.size.bytes 2m spark .cassandra.input.split.size_in_mb 1 мбПожалуйста, дайте мне знать   -  person Niharika    schedule 09.11.2015


Ответы (3)


Я смог повысить производительность, используя Spark и Cassandra на том же сервере. Эта задержка была вызвана тем, что Spark и Cassandra находились на разных серверах, хотя и в одном регионе на AWS. Задержка в сети была основной причиной, поскольку она влияла на локальность данных. Спасибо.

person Niharika    schedule 09.01.2016

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

person Yogesh Mahajan    schedule 12.05.2017

Я также использую комбинацию Cassandra Spark для аналитики в реальном времени. Вот несколько лучших практик:

  1. Локальность данных — запуск демона Cassandra с рабочим узлом в случае автономного Spark или Node Manager в случае Yarn], рабочий Mesos в случае Mesos

  2. Увеличить параллелизм, т. е. создать больше разделов/задач.

  3. Используйте пул соединений Cassandra для повышения пропускной способности.

В вашем случае вы используете JRI для вызова R на стороне Java. Это немного медленно и снижает производительность. Поэтому используйте SparkR для интеграции R со Spark вместо прямой JRI.

person Naga    schedule 12.05.2017