The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Доступна система распределённых вычислений Apache Storm 2.0

03.06.2019 10:08

Увидел свет значительный выпуск системы распределённой обработки событий Apache Storm 2.0, примечательный переходом на новую архитектуру, реализованную на языке Java, вместо ранее применяемого языка Clojure.

Проект позволяет организовать гарантированную обработку различных событий в режиме реального времени. Например, Storm можно применять для анализа потоков данных в режиме реального времени, выполнения задач для машинного обучения, организации непрерывных вычислений, реализации RPC, ETL и т.п. Система поддерживает кластеризацию, создание отказоустойчивых конфигураций, режим гарантированной обработки данных и обладает высокой производительностью, достаточной для обработки более миллиона запросов в секунду на одном узле кластера.

Поддерживается интеграция с различными системами обработки очередей и технологиями баз данных. Архитектура Storm подразумевает приём и обработку неструктурированных постоянно обновляемых потоков данных с использование произвольных сложных обработчиков с возможностью секционирования между различными стадиями вычислений. Проект был передан сообществу Apache после поглощения Twitter компании BackType, изначально разработавшей фреймворк. На практике Storm применялся в BackType для анализа отражения событий в микроблогах, путём сопоставления на лету новых твитов и используемых в них ссылок (например, производилась оценка, как внешние ссылки или публикуемые в Twitter анонсы, ретранслируются другими участниками).

Функциональность Storm сравнивается с платформой Hadoop, при этом ключевым отличием является то, что данные не размещены в хранилище, а поступают извне и обрабатываются в режиме реального времени. В Storm нет встроенной прослойки для организации хранилища и аналитический запрос начинает применяться к поступающим данным до тех пор, пока не будет отменен (если в Hadoop используются занимающие конечное время MapReduce-работы, то в Storm применяется идея непрерывно выполняемых "топологий"). Выполнение обработчиков может быть распределено на несколько серверов - Storm автоматически распараллеливает работу с потоками на разные узлы кластера.

Изначально система была написана на языке Clojure и выполняется внутри виртуальной машины JVM. В фонде Apache была запущена инициативы по переводу Storm на новое ядро, написанное на Java, результаты которой предложены в выпуске Apache Storm 2.0. Все базовые компоненты платформы переписаны на Java. Поддержка написания обработчиков на Clojure сохранена, но теперь предлагается в виде биндингов. Для работы Storm 2.0.0 требуется наличие Java 8. Полностью переработана модель многопоточной обработки, что позволило добиться заметного прироста производительности (для некоторых топологий задержки сократились на 50-80%).

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

В планировщик запуска обработчиков добавлена поддержка учёта дополнительных ресурсов при принятии решений, не ограничивающихся CPU и памятью, таких как параметры сети и GPU. Внесено большое число улучшений, связанных с обеспечением интеграции с платформой Kafka. Расширена система контроля доступа, в которой появилась возможность создания групп администраторов и делегирования токенов. Добавлены улучшения, связанные с поддержкой SQL и метрик. В интерфейсе администратора появились новые команды для отладки состояния кластера.

Области применения Storm:

  • Обработка потоков новых данных или обновлений БД в реальном времени;
  • Непрерывные вычисления: Storm может выполнять непрерывные запросы и обрабатывать непрерывные потоки, передавая результаты обработки клиенту в режиме реального времени.
  • Распределенный удаленный вызов процедур (RPC): Storm может быть использован для обеспечения параллелизма выполнения ресурсоёмких запросов. Задание ("топология") в Storm представляет собой распределенную по узлам функцию, которая ожидает поступления сообщений, которые нужно обработать. После приёма сообщения, функция обрабатывает его в локальном контексте и возвращает результат. Примером использования распределенного RPC может быть параллельная обработка поисковых запросов или выполнение операций над большим набором множеств.

Особенности Storm:

  • Простая модель программирования, значительно упрощающая обработку данных в режиме реального времени;
  • Поддержка любых языков программирования. Имеются модули для языков Java, Ruby и Python, адаптация для других языков не вызывает сложности благодаря очень простому коммуникационному протоколу, для реализации поддержки которого требуется около 100 строк кода;
  • Отказоустойчивость: для запуска задания по обработке данных требуется сформировать jar-файл с кодом. Storm самостоятельно распространит данный jar-файл по узлам кластера, подключит связанные с ним обработчики и организует мониторинг. При завершении задания код будет автоматически отключен на всех узлах;
  • Горизонтальная масштабируемость. Все вычисления производятся в параллельном режиме, при возрастании нагрузки к кластеру достаточно просто подключить новые узлы;
  • Надежность. Storm гарантирует, что каждое поступающее сообщение будет полностью обработано как минимум один раз. Один раз сообщение будет обработано только в случае отсутствия ошибок при прохождении всех обработчиков, если возникли проблемы, то неудачные попытки обработки будут повторены.
  • Скорость. Код Storm написан с оглядкой на высокую производительность и использует для быстрого асинхронного обмена сообщениями систему ZeroMQ.


  1. Главная ссылка к новости (http://storm.apache.org/2019/0...)
  2. OpenNews: Twitter открыл код системы анализа потоков данных Storm
  3. OpenNews: Twitter заявил о скором открытии кода системы Storm
  4. OpenNews: Незащищённые Hadoop-серверы отдают более 5 Пб данных без аутентификации
  5. OpenNews: Выпуск СУБД ScyllaDB 3.0, совместимой с Apache Cassandra
  6. OpenNews: Релиз платформы для распределённой обработки данных Apache Hadoop 3.2
Лицензия: CC-BY
Тип: Программы
Ключевые слова: apache, storm, stream
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (31) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.1, Вася (??), 10:47, 03/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Наконец-то на норм язык переписали, Java годный язык.
     
     
  • 2.8, Аноним (8), 11:17, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    $2,50 за рабочее место в месяц. Спасибо, не нужно.
     
     
  • 3.9, Аноним (9), 11:24, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Если рабочее место не приносит даже 2.5$ дохода в месяц, то скорее всего рабочие процессы организованы неправильно.
     
     
  • 4.18, Michael (??), 13:40, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    а как же швободно, открыто и для всех?
     
  • 4.20, Аноним (20), 14:02, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > не приносит даже 2.5$ дохода в месяц

    Под 2.5$ вы, конечно, подразумеваете 2.5$+работа бухгалтера по оформлению этих оплат, возможные консультации юристов по оформлению договора, постоянный мониторинг, сколько сотрудников появилось а сколько уволилось, постоянная головная боль на тему того, когда заканчивается месяц и пора оплачивать, работу админов по взаимодействию с ними по поводу предоставления новых лицензий/отключения ненужных старых и по поводу ввода этих ключей сотрудникам.

     
  • 3.21, jOKer (ok), 14:46, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то в IT, при сравнении различных реализаций одной и той же системы, принято оперировать общей стоимостью владения, а вовсе даже не стоимостью одного рабочего места.
     
  • 3.28, Аноним (28), 10:19, 04/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это если вам сертификат нужен, и бумажка что-бы снять с себя ответственность на случай "если что-то пойдёт не так", но в таком варианте 2.5$ это очень не дорого...
     
  • 3.33, MVK (??), 16:14, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    OpenJDK бесплатно
     

  • 1.2, Анонимус2 (?), 10:54, 03/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >ZeroMQ

    Оно ещё шевелится? Вроде никому оказалось не нужным и загнулось.

     
     
  • 2.11, загибатор (?), 11:32, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну судя по википедии, последний релиз был ажно в январе сиего года. Пациент скорее жив, чем мёртв.
     

  • 1.3, Anonymoustus (ok), 10:56, 03/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > реализованную на языке Java, вместо ранее применяемого языка Clojure

    А что ж так? Не зашла хипсторам модная, стильная, молодёжная Clojure?

     
     
  • 2.5, Ordu (ok), 11:06, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    clojure -- это лисп-машина в jvm, на фоне него java выглядит детским хипстерством.
     
  • 2.15, freehck (ok), 13:03, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее всего, просто пользователи не осилили кложу -- и шторм переориентировали на массового пользователя. Оно так часто с лиспами бывает. )
     
     
  • 3.22, Anonymoustus (ok), 14:51, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Скорее всего, просто пользователи не осилили кложу -- и шторм переориентировали на
    > массового пользователя. Оно так часто с лиспами бывает. )

    Это-то понятно: всякому работодателю надо, чтобы кумары работу работали, а не в лиспы игрались в рабочее время. Видимо, на пресловутом рынке труда таки нет нужного количества специалистов нужной квалификации, что бы это ни значило в каждом конкретном случае.


    Ага, вот и ссылочку ниже в комментах пишут и статью цитируют. Всё так и есть.

     
  • 2.29, Аноним (29), 11:57, 04/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    На нём пишет 2 с половиной задр..та.
     
     
  • 3.32, Anonymoustus (ok), 15:03, 04/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > На нём пишет 2 с половиной задр..та.

    «…язык Clojure требует изменить взгляды на разработку и в итоге это окупится» — так они говорят.

     

  • 1.4, Аноним (4), 11:00, 03/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > гарантированную обработку различных событий в режиме реального времени

    Если на тачку поставить, хруста или кеглю распознать успеет?

     
     
  • 2.16, пох. (?), 13:14, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    угу, и выведет тебе на экран ачивку.

     

  • 1.7, proninyaroslav (ok), 11:16, 03/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересна причина перехода с clojure.
     
     
  • 2.10, Аноним (10), 11:29, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В статье написано, что Clojure долгие годы работал исправно и реальная причина смены языка разработки - привлечь больше контрибьюторов.
     
  • 2.23, Wilem (?), 14:52, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Надо обладать специфическим устройством головы, что бы писать на чём-либо лиспоподобном. Другими словами, никому это не нужно.
     
  • 2.25, Junior frontend developer (?), 15:54, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Логика понятна, но на практике как-то сомнительно, что переход на джаву заинтересует кого-то.
     
     
  • 3.27, proninyaroslav (ok), 20:06, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну позиции явы в корпоративной разработке всё ещё сильны, на то и расчитано.
     

  • 1.12, Аноним (10), 11:39, 03/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Взято отсюда: https://yahoodevelopers.tumblr.com/post/185258393008/apache-storm-20-improveme

    Один из главных разработчиков Storm пишет, что кложа лучше  java по множественным параметрам.

    Clojure is a wonderful language with many advantages over pure Java, but its prevalence in Storm became a hindrance for many developers who weren’t very familiar with it and didn’t have the time to learn it. Due to this, the community decided to port all of the daemon processes over to pure Java.

     
     
  • 2.13, Аноним (13), 11:55, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > didn’t have the time to learn it

    Теперь я знаю, как по-английски будет "уяк-уяк и в продакшон"

     
  • 2.17, Смузийная (?), 13:18, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Надо было на JS переписать.
     
  • 2.19, anonymous (??), 13:44, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    похоже головастым ребятам, которые поднимали проект используя продвинутый инструмент, стало неинтересно, или может даже их попросили
    а теперь передают обычным энтерпрайз-обезьянкам на зарплате, которым никакая clojure очевидно неинтересна
     
     
  • 3.24, Wilem (?), 14:56, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Нормальные разработчики пишут не на жаве конечно, а на котлине. Лисп это из разряда brainfuck, никому кроме энтузиастов не нужный.
     
     
  • 4.30, Аноним (28), 12:10, 04/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    т.е. только на андроиде есть нормальные разработчики, я вас правильно понял?
     

  • 1.14, Аноним (14), 12:49, 03/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >реализованную на языке Java, вместо ранее применяемого языка Clojure

    Что-то подсказывает, что от перестановки слагаемых...

     
     
  • 2.26, Антонио (??), 15:59, 03/06/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "Сумма" меняется от перестановки слагаемых - Теорема Римана. Это общее правило, напр. действует в химии и т.д... От перестановки слагаемых "сумма" не меняется в частных случаях, напр. в школьной математике.
     

  • 1.31, InuYasha (?), 12:31, 04/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > реализованную на языке Java
    > организовать гарантированную обработку различных событий в режиме реального времени
    > реализованную на языке Java
    > в режиме реального времени
    > Java
    > реального времени

    nnnnnnnoooooooooooooo........wav

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    MIRhosting
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру