Cloud Dataflow is available

Apr 18, 2015 11:32

Пару дней назад Cloud Dataflow перешел в стадию "beta", что фактически эквивалентно полному запуску, разве что без SLA и без гарантий backward compatibility. В общем, можно пробовать. Есть free trial.

Напомню немного, что это за продукт.

Это фреймворк для пакетной или потоковой обработки данных с API, похожим на FlumeJava (на который, в свою очередь, похожи Spark, Flink и другие): вы пишете программу, которая конструирует схему обработки, манипулируя логическими "коллекциями" (PCollection) и всячески преобразуя и комбинируя их с помощью "преобразований" (PTransform), а затем программа говорит "схема, запустись!" и наш сервис запускает от вашего лица нужное количество ресурсов, оптимизирует схему, оптимально распределяет ее по ресурсам, мониторит и т.п.

Например:



Продукт создан объединением команд, ранее создавших MapReduce, FlumeJava и FlumeC++, Pregel и Millwheel, на основе всего полученного опыта, и вырос из попытки создать объединяющую эти продукты внутреннюю технологию.

Вот ключевые отличительные особенности:
  • Ноль администрирования и настройки. Не нужно ничего устанавливать; не нужно поддерживать никаких кластеров; не нужно выбирать, сколько машин вы хотите запустить; не нужно даже контролировать шардинг.
  • Крутой мониторинг. Показывает схему вашей программы, сколько где летает данных в секунду, сколько времени потрачено на чтение/обработку/запись, и т.п.
  • Новая модель обработки, объединяющая batch и streaming. Это действительно круто - почитайте тут про эту модель, и в частности про Windowing и Triggering. Ключевое отличие от других streaming фреймворков - бескомпромиссное отношение к consistency и явный учет "поздних" данных. Один из моих коллег уже несколько раз выступал на тему того, как эта технология делает Lambda Architecture ненужной.
  • SDK в опенсорсе и позволяет исполнять программу не только на нашем сервисе, а и на других платформах. Существуют движки, исполняющие Dataflow на Spark и на Flink. Можно и локально (на своей машине).
  • Мы хорошо интегрированы с другими продуктами GCP - само собой, с Cloud Storage и Cloud Pub/Sub, но также и с BigQuery, с Cloud Logging (там можно смотреть логи ваших виртуалок) и т.п. - more to come.
  • У нас решена проблема stragglers. В то время, как другие фреймворки пытаются предсказывать, какие шарды будут медленными, и шедулить их в правильном порядке или вовремя бекапить, мы просто разрезаем уже запущенные отстающие шарды на куски, не теряя сделанной работы, и перебалансируем оставшееся. Это очень интересная проблема, на несколько порядков более сложная, чем кажется (я надеюсь, что у нас найдется время написать про это статью в обозримом будущем) - поэтому, вероятно, нигде больше она пока и не решена - но в результате у нас она решена, по сути, окончательно (за исключением некоторых патологических случаев). Интересующиеся могут посмотреть соответствующие куски в Java SDK - например, некоторые вопросы семантики этого дела затронуты в документации к классам BoundedReader и FileBasedReader. Эта техника публично называется "dynamic work rebalancing", но внутри мы ласково именуем ее "liquid sharding".
  • У нас есть auto-scaling. Пока простенький, но мы точно знаем, что нужно сделать, чтобы он был намного точнее - stay tuned. В комбинации с динамический перебалансировкой это означает, что мы можем начать с малого числа машин и очень грубого шардинга, а затем довольно быстро осознать, что нам нужно намного больше машин, и перераспределиться по ним.
Я из этого в основном вложился в: "dynamic work rebalancing", поддержку пользовательских форматов ввода-вывода, комбинацию этих двух вещей, внутренние тулы для отладки производительности, и многие части движка на бэкенде - фичи, производительность, просто code health, итп.

Ну и повторюсь, уже в который раз. Я очень счастлив быть в этой команде. Все больше свидетельств, что она исключительна даже по гугловским стандартам. Тут не только феноменальная концентрация людей уровня Staff+, ресерчеров и бывших профессоров computer science из крутых университетов, но люди крайне дружелюбны, искренне делают the right thing, и полностью отсутствует политика, эгоизм, попытки присвоить себе чужие заслуги и т.п. Классная культура тестирования и code health. Нашего engineering director'а другие директора спрашивают "как получается, что в вашей команде не бывает конфликтов?" (хотя команда-то уже под 80 человек). Это дорогого стоит и совершенно меняет динамику принятия решений и их качество.

В общем - используйте продукт и пишите, если что не так. Основной канал поддержки - StackOverflow (по тегу #google-cloud-dataflow), но можете и мне лично писать.

Ссылки:
Previous post Next post
Up