Дэйв Хирко - управляющий директор и соучредитель B23. До того, как стать соучредителем B23, Дэйв был менеджером по работе с клиентами в Amazon Web Services.

Часть III - Масштабирование в экономике данных

Итеративная разработка искры

Ранее мы обсуждали, как Apache Spark и его модуль SparkSQL были ключевым компонентом для приема различных источников данных с использованием DataSources и DataFrame API для клиентского проекта. Когда мы начали отбирать отдельные источники данных, количество заданий Spark начало значительно увеличиваться. Мы экспериментировали с меньшим количеством более крупных работ и, наоборот, с большим количеством более мелких работ. Все задания были написаны на Scala, а версия контролировалась в корпоративной среде GitHub. Мы развернули задания в производственной среде, используя нашу любимую технологию автоматизации, на данный момент отказавшись от Jenkins. Понимание различий между Spark Resilient Distributed Dataset (RDD) и DataFrames было довольно трудным, поскольку некоторые из нас работали с библиотекой Python Panda в прошлом, и все мы знали концепции RDD Spark. С тех пор мы стали хорошо разбираться в DataFrame и DataSources API, поскольку читаем, объединяем и записываем данные с различных платформ, включая MySQL, AWS Aurora, Kafka, Hive, HDFS и Amazon Redshift.

Мы особенно рады нашей специально разработанной программе приема SQL, написанной на Scala, которая способна принимать данные из более чем 40 различных баз данных с различными схемами. Он записывает данные непосредственно в Hive на несколько порядков быстрее, чем предыдущая реализация Apache Sqoop. Эта библиотека «обнаруживает» схему в реляционном хранилище данных, создает соответствующую таблицу Hive и выполняет чтение-запись данных в параллельном режиме с использованием выбираемого столбца раздела. Настройка распараллеливания многих исполнителей Spark была критически важна для успеха. Основной код составляет примерно 25 строк Scala и может использовать драйверы JDBC MySQL и MariaDB. Наш код Scala для записи из Hive в Redshift еще меньше и чрезвычайно эффективен при распараллеливании между многими исполнителями Spark.

Масштабирование с помощью YARN

Мы ожидаем, что в периоды пиковой нагрузки сотни параллельных заданий Spark будут выполняться и управляться YARN. Запуск Spark на YARN был очевидным выбором, учитывая базовую инфраструктуру Hadoop, которую мы уже создали. Мы не достигли нирваны динамического распределения с Spark on YARN, и нам все еще нужно явно выделять ресурсы кластера для различных заданий Spark. Для некоторых из нас это было похоже на настройку программ на C для выделения и освобождения памяти, только в другом масштабе. С другой стороны, мы наблюдали значительный прирост производительности благодаря относительно новой возможности Spark, поддерживающей поддержку стойки, что было приятным сюрпризом.

Apache Airflow

Запуск сотен заданий Spark, понимание их зависимостей, мониторинг производительности и перехват исключений - логистическая задача для любого предприятия. Мы стандартизировали планировщик заданий, созданный на Airbnb, под названием Apache Airflow. Мы оценили несколько планировщиков заданий и ранее работали с Azkaban и обнаружили, что Airflow обладает наибольшим потенциалом для удовлетворения наших разнообразных потребностей. Как разработчики, моделирование вашей группы доступности базы данных в виде кода Python, а не языка разметки было привлекательным. Масштабирование Airflow было сложной задачей, поскольку мы не могли найти никакой документации ни на форумах пользователей, ни в Интернете. С момента внедрения Airflow он стал частью экосистемы Apache, что, как мы считаем, принесет проекту огромную пользу. Мы обнаружили множество недокументированных «уловок» при выполнении задач и настройке Airflow, реализуемых только методом проб и ошибок. Мы надеемся, что у нас будет возможность поделиться ими с сообществом Airflow. С тех пор мы масштабировали нашу реализацию Airflow, чтобы использовать библиотеку сельдерея Python для распределенного выполнения задач и использовать серверный экземпляр Amazon RDS в качестве хранилища данных.

Платформа данных B23 - масштабирование процесса производства

Все передовые практики, которые мы разработали и внедрили в наши решения, основаны на реальном опыте внедрения. Кодифицируя эти передовые методы в нашем программном обеспечении для автоматизации, мы усиливаем процесс «продуктивности», делая его более уязвимым. Помогая нескольким нашим клиентам перейти на уровень Elite Data, мы решили, что необходимо новое масштабируемое программное решение, чтобы помочь клиентам создавать решения. Нам требовалось программное обеспечение, чтобы делать то, что уже делали наши инженерные службы - создавать масштабируемые системы аналитической обработки с надежными конвейерами данных. Нам нужно было программное обеспечение, которое делало бы это быстрее и стабильнее, чем человек. Из этой идеи родилась платформа B23 Data Platform. B23 Data Platform - это платформа для оркестровки программного обеспечения, доступная любому пользователю в Интернете, но с той особенностью, что данные и ресурсы расположены в среде наших клиентов. Платформа данных B23 обменивается данными только через стандартные облачные API и стандартные методы автоматизации для безопасной оркестровки всей аналитической среды. Данные о клиентах никогда не выходят за рамки контроля среды наших клиентов. Каждый аспект этих согласованных решений доступен клиентам. Это обеспечивает полную прозрачность в отношении безопасности и доступа к данным, что является обязательным в рамках экономики данных.

B23 Data Platform также является торговой площадкой для безопасного запуска масштабируемых решений распределенной обработки, таких как Apache Spark, Apache Zeppelin, Apache Hadoop, Elasticsearch, H2o, Streamsets и ряда других инструментов, всего за несколько минут и всего несколькими щелчками мыши.

Как только эти стеки запущены, принять данные так же просто, как еще несколькими щелчками мыши с помощью возможности B23 EasyIngest. EasyIngest автоматически создает функциональные конвейеры данных для различных источников данных и типов данных и позволяет пользователям выбирать, в какие текущие стеки должны передаваться данные. Это чрезвычайно мощный и удобный процесс для создания, настройки и эксплуатации некогда сложных систем.

Когда вы закончите анализ данных в своей среде, просто остановите стек и прекратите платить за неиспользуемые ресурсы. Когда вы будете готовы начать резервное копирование, достаточно всего нескольких щелчков мыши и минут, чтобы создать совершенно новую среду.

Наши передовые методы были разработаны не на пустом месте или в результате наблюдения за другими, а благодаря очень разнообразному кругу клиентов и сценариев использования, в которых возникли общие проблемы и решения. Платформа B23 Data Platform упрощает для наших клиентов более эффективную конкуренцию, используя свои данные.

Убедитесь сами без дополнительных затрат на platform.b23.io.