Публікації

Показано дописи з міткою "Kafka"

Real-time cохранение данных в SOLR с помощью Kafka + Flume

   Для заливки данных в колекцию SOLR можно использовать сочетание Kafka  + Flume MorphlineSolrSink. Это позволяет быстро настроить добавление новых данных в SOLR даже без необходимости писать код.     Предварительно сохранённая в формате json информация в Kafka topic читается, преобразовывается и сохраняется в SOLR с помощью MorphlineSolrSink. При этом все нюансы предподготовки данных перед сохранением в документ SOLR можно описать в конфигурационном файле для morphline.conf. Файл конфигураций для flume: tier1.sources = source1 tier1.channels = channel1 tier1.sinks = solrSink1 tier1.sources.source1.channels = channel1 tier1.sources.source1.type = org.apache.flume.source.kafka.KafkaSource tier1.sources.source1.zookeeperConnect = 127.0.0.1:2181 Zookeeper client port tier1.sources.source1.topic = test_topic tier1.sources.source1.kafka.auto.offset.reset = smallest tier1.sources.source1.groupId = flume_source_test_topic tier1.sources.source1.batch...

Как исправить ошибку "NoClassDefFoundError"

Бывает, что при запуске кода через "spark-submit" возникает ошибка "maven Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils".    Суть ошибки в том, что spark-submit по умолчанию не включает все зависимости. Это также относится и к KafkaUtils. Вам нужно добавить в конфигурационный файл maven -a плагин "maven-assebly" для сборки архива со всеми зависимостями: <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass></mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </...

Оптимизация Apache Spark Streaming с помощью rdd.cache и настройки сериализации данных.

Зображення
   Одним из эффективных способов существенного ускорения вашего Spark Streaming приложения, являвляется применения кеширования RDD а также конфигурация способа кеширования ваших данных.    При использовании rdd.cache первая операция по rdd будет занимать тоже время что и без применения кешированя, но все последующие операции будут занимать значительно меньше времени. Это может быть удивительно, ведь Spark стараеться делать все операции с данными в памяти. Это сложно понять, но приминение rdd.cache имеет значимый эффект..    Тесты показывают, что если DStream или RDD используется несколько раз, то их кеширование значительно увеличивает скорость их обработки. Возможно это будет являться тем изменением, что принесёт вам наибольшее улучшнеием производительности. Пример применения rdd.cache: dstream.foreachRDD{rdd => rdd.cache() // cache the RDD before iterating! rdd.foreach{ key => rdd.filter(elem=> key(elem) == key).saveAsFooBar(....

Apache Kafka - краткое описание

Apache Kafka - это распределённая, легко маштабируемая система обмена сообщениями c высокой пропускной способностью(Kafka быстрее  RabbitMQ раз в  5-20 ). Пишет сразу на диск сообщения и хранит там их указанный период времени. Kafka является единственным проектом, который на уровне архитектуры решает вопрос импорта большого объёма данных. Проблемы: Теоретически может выдерживать любые объёмы данных, но на практике показатели сильно преувеличены. От версии к версии интерфейс может полностью изменится, что очень мешает. Не работает ряд функций: группы потребителей, сдвиги для пользователей.  Простой рецепт, это запускать по одному потребителю на партицию очереди (topic, в терминологии Kafka) и вручную контролировать сдвиги.  Приемущества: Легко маштабируется Высокая производительность как для паблишеров так и для подписчиков Отказоустойчивая и автоматическо балансируется в случае отказа Полезные ссылки: Документация Next Generation Distributed Me...