Почему вы все еще управляете кластерами обработки данных?

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

Apache Spark — это среда распределенных кластерных вычислений с открытым исходным кодом, которая намного быстрее предыдущей (Hadoop MapReduce). Это благодаря таким функциям, как обработка в памяти и ленивая оценка. Apache Spark — самый популярный инструмент в этой категории.



Механизм аналитики — это ведущая платформа для крупномасштабного SQL, пакетной обработки, потоковой обработки и машинного обучения. Для кодирования в Spark у вас есть возможность использовать разные языки программирования; включая Java, Scala, Python, R и SQL. Его можно запускать локально на одной машине или на кластере компьютеров для распределения задач.

Используя Apache Spark, вы можете обрабатывать свои данные на локальном компьютере или можете создать кластер для отправки любого количества заданий обработки.

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

Проблемы управления кластером

Если вы обрабатываете огромный объем данных и ожидаете получить результаты в разумные сроки, вашего локального компьютера будет недостаточно. Вам нужен кластер компьютеров для разделения данных и обработки рабочих нагрузок — несколько компьютеров работают параллельно, чтобы ускорить выполнение задачи.

Однако создание и управление собственным кластером компьютеров — непростая задача. Вы столкнетесь с несколькими проблемами:

Создание кластера

Создание кластера Apache Spark — сложная задача.

Во-первых, вам нужно создать кластер компьютеров и установить операционную систему, инструменты разработки (Python, Java, Scala) и т. Д.

Во-вторых, вам нужно выбрать версию Apache Spark и установить необходимые узлы (мастер и рабочие).

Наконец, вам необходимо соединить все эти узлы вместе, чтобы завершить работу над кластером Apache Spark.

В целом создание и настройка нового кластера Apache Spark может занять несколько часов.

Управление кластером

Но если у вас есть собственный кластер, ваша работа еще далека от завершения. Ваш кластер работает хорошо? Каждый ли узел здоров?

Вот вторая проблема: справиться с болью управления кластером!

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

Достаточно ли на узлах дискового пространства для новых задач? Одна из ключевых проблем, с которыми сталкиваются кластеры Apache Spark, заключается в том, что некоторые задачи записывают большой объем данных в локальное дисковое пространство узлов, не удаляя их. Дисковое пространство — распространенная проблема, и, как вы, возможно, знаете, нехватка дискового пространства исключает возможность выполнения большего количества задач.

Вам нужно запускать несколько заданий Spark одновременно? Иногда одно задание занимает все ресурсы ЦП и ОЗУ в вашем кластере и не позволяет другим заданиям запускаться и выполняться одновременно.

Это лишь некоторые из проблем, с которыми вы столкнетесь при работе с собственными кластерами.

Безопасность кластера

Теперь о третьем испытании! Что может быть даже важнее, чем бесперебойная работа кластера?

Как вы уже догадались: безопасность. В конце концов, Apache Spark — это инструмент для обработки данных. И данные очень чувствительны.

Где в вашем кластере безопасность имеет наибольшее значение?

А как насчет связи между узлами? Связаны ли они с безопасным (и быстрым) соединением? У кого есть доступ к серверам вашего кластера?

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

Версия Spark

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

Вы мало что можете сделать, чтобы изменить ожидания пользователей кластера, но вот типичный пример, который поможет вам подготовиться:

Ваши пользователи любят тестировать свои коды с разными версиями Apache Spark? Или им нужна последняя функция из последней ночной версии Spark?

Когда вы создаете кластер Apache Spark, вы должны выбрать одну версию Spark. Весь ваш кластер будет связан с ним, и это в одиночку. Это означает, что несколько версий не могут сосуществовать в одном кластере.

Итак, вам придется либо изменить версию Spark для всего кластера, либо создать еще один отдельный кластер. И, конечно же, если вы решите это сделать, вам нужно создать в кластере время простоя для внесения изменений.

Эффективность кластера

И последний вызов: масштабирование!

Как получить максимальную выгоду от ресурсов кластера, за которые вы платите? Вы платите за свой кластер, но чувствуете, что используете его неэффективно? Ваш кластер слишком велик для ваших пользователей? Он работает, но в праздничные дни там нет рабочих мест?

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

Решение OVHcloud для обработки данных (ODP)

В OVHcloud мы создали новую службу данных под названием OVHcloud Data Processing (ODP) для решения всех проблем управления кластером, упомянутых выше.

Предположим, у вас есть некоторые данные для обработки, но у вас нет желания, времени, бюджета или навыков для решения этих проблем. Возможно, вы не хотите или не можете просить помощи у коллег или консультантов для создания кластера и управления им. Как вы все еще можете использовать Apache Spark? Здесь на помощь приходит служба ODP!

Используя ODP, вам нужно написать свой код Apache Spark, а все остальное сделает ODP. Он создаст одноразовый выделенный кластер Apache Spark в облаке для каждого задания всего за несколько секунд, а затем удалит весь кластер после завершения задания. Вы платите только за запрошенные ресурсы и только на время вычисления. Нет необходимости оплачивать часы работы облачных серверов, пока вы заняты установкой, настройкой кластера или даже отладкой и обновлением версии движка.



Создание кластера ODP

Когда вы отправляете свою работу, ODP создаст искровой кластер apache, посвященный этой работе, всего за несколько секунд. Этот кластер будет иметь количество ЦП и ОЗУ, а также количество рабочих, указанных в форме отправки задания. Все необходимое программное обеспечение будет установлено автоматически. Вам не нужно вообще беспокоиться о кластере, о том, как его установить, настроить или защитить. ODP сделает все это за вас.

Управление кластером ODP


Когда вы отправляете свою работу, управление и мониторинг кластера настраиваются и обрабатываются ODP. Все механизмы и инструменты ведения журналов и мониторинга будут установлены автоматически. У вас будет панель управления Grafana для мониторинга различных параметров и ресурсов вашей работы, а также у вас будет доступ к официальной панели инструментов Apache Spark.

Вам не нужно беспокоиться об очистке локального диска каждого узла, потому что каждое задание будет начинаться со свежих ресурсов. Следовательно, одно задание не может отложить другое задание, поскольку каждое задание имеет новые выделенные ресурсы.

Безопасность кластера ODP


ODP также позаботится о безопасности и конфиденциальности вашего кластера. Во-первых, все коммуникации между узлами Spark зашифрованы. Во-вторых, ни один из узлов вашей работы не доступен извне. ODP позволяет открывать только ограниченные порты для вашего кластера, так что вы по-прежнему можете загружать или передавать свои данные.

Версия ODP Cluster Spark


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

Эффективность кластера ODP

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



Как начать?

Если вы хотите попробовать ODP, вы можете проверить: www.ovhcloud.com/en/public-cloud/data-processing/ или вы можете легко создать учетную запись на www.ovhcloud.com и выбрать « обработка данных »в разделе публичного облака. Также можно задать вопросы непосредственно от команды разработчиков в общедоступном канале Gitter ODP gitter.im/ovh/data-processing.

Вывод

С ODP проблемы, связанные с запуском кластера Apache Spark, устраняются или упрощаются (мы по-прежнему мало что можем поделать с ожиданиями пользователей!). Вам не нужно беспокоиться о нехватке ресурсов, необходимых для обработки ваших данных, или необходимо создать, установить и управлять собственным кластером.

Сосредоточьтесь на своем алгоритме обработки, а остальное сделает ODP.

Повышение качества данных с Apache Spark

Сегодня мы предлагаем вам гостевой пост от Хьюберта Стефани, директора по инновациям и соучредителя Novagen Conseil.



Как консультанты по данным и активные пользователи Apache Spark, для нас большая честь стать первыми последователями OVHcloudData Processing. В качестве первого варианта использования для тестирования этого предложения мы выбрали наш процесс оценки качества.

Как консалтинговая компания, базирующаяся в Париже, мы разрабатываем комплексные и инновационные стратегии обработки данных для наших крупных корпоративных и государственных клиентов: ведущих банков состояния, государственных органов, розничных торговцев, индустрии моды, лидеров транспорта и т. Д. Мы предлагаем им крупномасштабную бизнес-аналитику, озеро данных создание и управление, бизнес-инновации с наукой о данных. В нашей лаборатории данных мы выбираем лучшую в своем классе технологию и создаем то, что мы называем «ускорителями», то есть готовые к развертыванию или настраиваемые активы данных.

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

  • Инновации и эволюционность : глубина функциональности, дополнительная ценность и удобство использования
  • Производительность и рентабельность : внутренние характеристики, но также и техническая архитектура, адаптируемая к потребностям клиентов.
  • Открытые стандарты и управление : для поддержки облачных или мультиоблачных стратегий наших клиентов мы предпочитаем полагаться на открытые стандарты для развертывания на различных объектах и ​​сохранения обратимости.


Apache Spark, наш швейцарский армейский нож

Около месяца назад Бастьен Вердебаут, менеджер по продуктам OVHcloud по данным и ИИ, обратился к нам с просьбой протестировать свой новый продукт OVHcloud Data Processing, созданный на основе Apache Spark. Конечно, да!

Одна из причин, по которой мы так стремились открыть эту обработку данных в качестве сервисного решения, заключалась в том, что мы широко используем Apache Spark; это наш швейцарский армейский нож для обработки данных.

  • Он работает с очень большим объемом данных,
  • Он отвечает потребностям инженерии данных и науки о данных,
  • Это позволяет обрабатывать данные в состоянии покоя и передавать данные в потоковом режиме.
  • Это де-факто стандарт для рабочих нагрузок с данными в локальной среде и в облаке,
  • Он предлагает встроенные API для Python, Scala, Java и R.

Мы постоянно разрабатываем программные активы на базе Apache Spark для решения повторяющихся проблем, таких как:

  • Обработка ETL в среде озера данных,
  • KPI качества поверх источников озера данных,
  • Алгоритм машинного обучения для обработки естественного языка, прогнозы временных рядов…

Идеальный вариант использования: оценка качества данных

Мы рассмотрели следующие характеристики обработки данных OVHCloud :

  • Механизм обработки построен на основе Apache Spark 2.4.3
  • Задания запускаются через несколько секунд (против минут для запуска кластера)
  • Возможность регулировать мощность, выделенную для различных заданий Spark : от низкого энергопотребления (1 драйвер и 1 исполнитель с 4 ядрами и 8 ГБ памяти) до крупномасштабной обработки (потенциальные сотни ядер и ГБ памяти)
  • Полное разделение вычислений и хранилищ в соответствии со стандартом облачных архитектур , включая API-интерфейсы S3 для доступа к данным, хранящимся на уровне хранилища объектов.  
  • Выполнение и мониторинг заданий через интерфейс командной строки и API 

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



Обработка данных OVHCloud на работе



Соответствующая команда, сгенерированная нашим программным обеспечением:

./ovh-spark-submit --projectid ec7d2cb6da084055a0501b2d8d8d62a1 \
  --class tech.novagen.spark.Launcher --driver-cores 4 --driver-memory 8G \
  --executor-cores 4 --executor-memory 8G --num-executors 5 \ 
  swift://sparkjars/QualitySparkExecutor-1.0-spark.jar --apiServer=5.1.1.2:80


У нас есть команда, которая очень похожа на обычную искру-отправку, за исключением пути к jar, который требует, чтобы двоичный файл находился в корзине объектного хранилища, к которой мы обращаемся с быстрой спецификацией URL-адреса. (NB: эта команда могла быть создана с помощью вызова API обработки данных OVHCloud).

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



Отображение журналов заданий в реальном времени

В конце концов, для настройки и посмертного анализа работы мы можем воспользоваться сохраненными файлами журнала. Примечательно, что OVHcloud Data Processing предлагает отображение журналов заданий в реальном времени, что очень удобно и обеспечивает дополнительный контроль через информационные панели Grafana.



Это первый, но важный тест обработки данных OVHcloud; На данный момент он отлично подходит для варианта использования процесса качества Novagen и позволил нам подтвердить несколько важных моментов, когда дело доходит до тестирования нового решения для обработки данных:



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

Хуберт Стефани, директор по инновациям Novagen Conseil

Вам нужно обработать ваши данные? Попробуйте новый сервис обработки данных OVHcloud!

Сегодня мы генерируем больше данных, чем когда-либо. 90 процентов глобальных данных были собраны за последние 2 года. По оценкам, к 2025 году объем данных в мире достигнет 175 зеттабайт. В общей сложности люди пишут 500 миллионов твитов в день, а автономные автомобили генерируют 20 ТБ данных каждый час. К 2025 году более 75 миллиардов устройств Интернета вещей будут подключены к Интернету, и все они будут генерировать данные. В настоящее время устройства и службы, генерирующие данные, есть повсюду.



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

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

Но как мы можем обработать такой огромный объем данных? Конечно, по старинке сделать это невозможно. Нам необходимо модернизировать наши методы и оборудование.

Большие данные — это наборы данных, объем, скорость и разнообразие которых слишком велики для обработки на локальном компьютере. Итак, каковы требования к обработке «больших данных»?



1- Параллельная обработка данных

Данные есть везде и доступны в огромных количествах. Во-первых, давайте применим старое правило: «Разделяй и властвуй».

Разделение данных означает, что нам потребуется распределить данные и задачи обработки по нескольким компьютерам. Их нужно будет настроить в кластере, чтобы выполнять эти различные задачи параллельно и получить разумное повышение производительности и скорости.

Предположим, вам нужно было узнать, что сейчас в твиттере. Вам придется обработать около 500 миллионов твитов на одном компьютере за час. Не все так просто, правда? И как вы выиграете, если на обработку уйдет месяц? Какая ценность в том, чтобы найти тренд дня месяц спустя?

Распараллеливание — это больше, чем просто «хорошо иметь». Это требование!

2- Обработка данных в облаке

Второй шаг — это создание и эффективное управление этими кластерами.

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

Эластичность, которую обеспечивают облачные решения, помогает компаниям быть гибкими и адаптировать инфраструктуру к своим потребностям. При обработке данных, например, нам нужно будет иметь возможность легко масштабировать наш вычислительный кластер, чтобы адаптировать вычислительную мощность к объему данных, которые мы хотим обработать, в соответствии с нашими ограничениями (время, затраты и т. Д.).

И тогда, даже если вы решите использовать облачного провайдера, у вас будет несколько решений на выбор, каждое из которых имеет свои недостатки. Одно из этих решений — создать вычислительный кластер на выделенных серверах или экземплярах общедоступного облака и отправить в кластер различные задания по обработке. Главный недостаток этого решения заключается в том, что если обработка не выполняется, вы все равно платите за зарезервированные, но неиспользуемые ресурсы обработки.

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

Местоположение данных

При создании обрабатывающего кластера также можно учитывать локальность данных. Здесь облачные провайдеры обычно предлагают несколько регионов, разбросанных по центрам обработки данных, расположенным в разных странах. У него два основных преимущества:

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

Второе преимущество — это, конечно, возможность создавать кластеры обработки в непосредственной близости от ваших данных. По оценкам, к 2025 году почти 50 процентов данных в мире будут храниться в облаке. Объем локального хранения данных сокращается.



Следовательно, использование облачных провайдеров, имеющих несколько регионов, дает компаниям преимущество наличия кластеров обработки рядом с их физическим расположением данных — это значительно сокращает время (и затраты!), Необходимое для получения данных.

Хотя обработка ваших данных в облаке может и не быть требованием сама по себе, это, безусловно, более выгодно, чем делать это самостоятельно.

3- Обработка данных с помощью наиболее подходящей технологии распределенных вычислений

Третий и последний шаг — решить, как вы собираетесь обрабатывать свои данные, то есть с помощью каких инструментов. Опять же, вы можете сделать это самостоятельно, реализовав механизм распределенной обработки на любом языке по вашему выбору. Но где в этом веселье? (хорошо, для некоторых из нас это может быть довольно весело!)

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

Apache Spark
Но есть технологии, которые были разработаны специально для этого. Они автоматически распределяют данные и обрабатывают задачи и получают результаты за вас. В настоящее время самой популярной технологией распределенных вычислений, особенно применительно к предметам Data Science, является Apache Spark.

Apache Spark — это распределенная среда кластерных вычислений с открытым исходным кодом. Он намного быстрее, чем предыдущий, Hadoop MapReduce, благодаря таким функциям, как обработка в памяти и отложенная оценка.

Apache Spark — ведущая платформа для крупномасштабного SQL, пакетной обработки, потоковой обработки и машинного обучения. Для кодирования в Apache Spark у вас есть возможность использовать разные языки программирования (включая Java, Scala, Python, R и SQL). Он может работать локально на одной машине или в кластере компьютеров для распределения своих задач.



Как видно на приведенной выше диаграмме данных тенденций Google, есть альтернативы. Но Apache Spark определенно зарекомендовал себя как лидер в области инструментов распределенных вычислений.

Обработка данных OVHcloud (ODP)

OVHcloud — лидер европейских хостинговых и облачных провайдеров с широким спектром облачных сервисов, таких как публичное и частное облако, управляемый Kubernetes и облачное хранилище. Но помимо всех услуг хостинга и облачных сервисов, OVHcloud также предоставляет ряд услуг для анализа больших данных и искусственного интеллекта, а также платформ.

Одной из услуг обработки данных, предлагаемой OVHcloud, является обработка данных OVHcloud (ODP). Это служба, которая позволяет отправлять задание на обработку, не беспокоясь о кластере, стоящем за ним. Вам просто нужно указать ресурсы, необходимые для работы, и служба абстрагирует создание кластера и уничтожит его для вас, как только ваша работа будет завершена. Другими словами, вам больше не нужно думать о кластерах. Решите, сколько ресурсов вам понадобится для эффективной обработки данных, а затем позвольте OVHcloud Data Processing сделать все остальное.

Кластеры Spark для конкретных задач по запросу

Служба развернет временный кластер Apache Spark для конкретного задания, а затем автоматически настроит и защитит его. Вам не нужно иметь никаких предварительных знаний или навыков, связанных с облаком, сетями, системами управления кластерами, безопасностью и т. Д. Вам нужно только сосредоточиться на своем алгоритме обработки и коде Apache Spark.

Эта служба загрузит ваш код Apache Spark из одного из ваших контейнеров объектного хранилища и спросит вас, сколько ОЗУ и ядер ЦП вы хотели бы использовать в своей работе. Вам также нужно будет указать регион, в котором будет выполняться обработка. И последнее, но не менее важное: затем вам нужно будет выбрать версию Apache Spark, которую вы хотите использовать для запуска вашего кода. После этого служба запустит ваше задание в течение нескольких секунд в соответствии с указанными параметрами до его завершения. Больше нечего делать с твоей стороны. Ни создания кластера, ни разрушения кластера. Просто сосредоточьтесь на своем коде.

Ресурсы вашего локального компьютера больше не ограничивают объем данных, которые вы можете обработать. Вы можете запускать любое количество заданий обработки параллельно в любом регионе и любой версии Spark. Это также очень быстро и очень просто.



Как это работает?

На вашей стороне Вам просто необходимо:

  1. Создайте контейнер в OVHcloud Object Storage и загрузите в этот контейнер код Apache Spark и любые другие необходимые файлы. Будьте осторожны, чтобы не помещать свои данные в один и тот же контейнер, так как весь контейнер будет загружен службой.
  2. Затем вам нужно определить механизм обработки (например, Apache Spark) и его версию, а также географический регион и количество необходимых ресурсов (ядер ЦП, ОЗУ и количество рабочих узлов). Есть три разных способа выполнить это (панель управления OVHcloud, API или ODP CLI)

Это разные шаги, которые происходят при запуске задания обработки на платформе OVHcloud Data Processing (ODP):

  1. ODP возьмет на себя управление развертыванием и выполнением вашей работы в соответствии с заданными вами спецификациями.
  2. Перед тем как начать работу, ODP загрузит все файлы, которые вы загрузили в указанный контейнер.
  3. Затем ODP выполнит вашу работу в специальной среде, созданной специально для вашей работы. Помимо ограничения на доступные порты (список доступен здесь ), ваша работа может затем подключиться к любому источнику данных (базам данных, хранилищу объектов и т. Д.) Для чтения или записи данных (если они доступны через Интернет)
  4. Когда задание завершено, ODP сохраняет журналы вывода выполнения в ваше объектное хранилище, а затем немедленно удаляет весь кластер.
  5. С вас будет взиматься плата за указанное вами количество ресурсов и только за время расчета вашего задания на поминутной основе.

Различные способы подачи заявки?

Есть три различных способа отправить задание на обработку в ODP, в зависимости от ваших требований. Этими тремя способами являются OVHcloud Manager, OVHcloud API и CLI (интерфейс командной строки).

1. OVHcloud Manager
Чтобы отправить задание с помощью OVHcloud Manager, вам необходимо перейти на OVHcloud.com и войти в свою учетную запись OVHcloud (или создать ее, если необходимо). Затем перейдите на страницу «Общедоступное облако», выберите ссылку «Обработка данных» на левой панели и отправьте задание, нажав «Начать новое задание».

Перед отправкой задания вам необходимо создать контейнер в OVHcloud Object Storage, щелкнув ссылку «Object Storage» на левой панели и загрузить свой код Apache Spark и любые другие необходимые файлы.

2. OVHcloud API
Вы можете отправить задание в ODP с помощью OVHcloud API. Для получения дополнительной информации вы можете посетить веб-страницу API OVHcloud api.ovh.com/. Вы можете создать автоматизацию отправки заданий с помощью ODP API.

3. ODP CLI (интерфейс командной строки)
ODP имеет интерфейс командной строки с открытым исходным кодом, который вы можете найти в общедоступном GitHub OVH по адресу github.com/ovh/data-processing-spark-submit ). Используя CLI, вы можете загружать свои файлы и коды и создавать кластер Apache Spark с помощью всего одной команды.

Некоторые преимущества ODP

Вы можете всегда запускать задачи обработки на локальном компьютере или создать кластер Apache Spark в своем локальном офисе с любым поставщиком облачных услуг. Это означает, что вы можете управлять этим кластером самостоятельно или используя аналогичные сервисы других конкурентов. Но у ODP есть несколько преимуществ, хорошо иметь их в виду, принимая решение:

  • Не требуется никаких навыков или опыта в управлении кластером или настройке .
  • Не ограничен в ресурсах и легко и быстро. (Единственное ограничение — это квота вашей облачной учетной записи) 
  • Модель с оплатой по мере использования с простой ценой и без скрытых затрат. (поминутная оплата)
  • Определение ресурса для каждого задания (больше ресурсов не теряется по сравнению с объединенным кластером) 
  • Простота управления версией Apache Spark (вы выбираете версию для каждого задания, и вы даже можете иметь разные задания с разными версиями Apache Spark одновременно) 
  • Выбор региона (вы можете выбрать разные регионы в зависимости от местоположения данных или политики конфиденциальности данных)
  • Начните обработку данных всего за несколько секунд
  • Журналы в реальном времени (когда ваша работа выполняется, вы будете получать журналы в реальном времени на панели клиентов)
  • Полный выходной журнал будет доступен сразу после завершения работы (некоторым конкурентам требуется несколько минут, чтобы доставить вам журналы)
  • Автоматизация отправки заданий (с помощью ODP API или CLI)
  • Конфиденциальность данных (OVHcloud — европейская компания, и все клиенты строго защищены европейским GDPR)

Вывод

С развитием новых технологий и устройств нас наводняют данные. Для бизнеса и научных исследований все более важно обрабатывать наборы данных и понимать, в чем заключается ценность. Предоставляя услугу обработки данных OVHcloud (ODP), наша цель — предоставить вам одну из самых простых и эффективных платформ для обработки ваших данных. Просто сосредоточьтесь на своем алгоритме обработки, а все остальное ODP сделает за вас.

Как выполнять массовые операции с данными быстрее, чем когда-либо, на основе Apache Spark и OVH Analytics Data Compute

Если вы читаете этот блог впервые, добро пожаловать в продолжающуюся революцию данных! Сразу после промышленной революции произошло то, что мы называем цифровой революцией, когда миллионы людей и объектов получили доступ к всемирной сети — Интернету — все они создали новый контент, новые данные.

Давайте подумаем о себе… Теперь у нас есть смартфоны, которые делают снимки и отправляют текстовые сообщения, спортивные часы, собирающие данные о нашем здоровье, учетные записи Twitter и Instagram, генерирующие контент, и многие другие варианты использования. В результате объем данных во всех их формах экспоненциально растет во всем мире.

90% всех данных в мире было создано за последние два года. Согласно IDC, объем данных в мире должен вырасти с 33 зеттабайт в 2018 году до 175 зеттабайт в 2025 году. Когда мы делаем базовое деление, это составляет примерно 34 ТБ данных на человека, включая все страны и топологии.



Это открывает множество новых концепций и применений, но, конечно же, и новые проблемы. Как мы храним эти данные? Как обеспечить безопасность и конфиденциальность? И последнее, но не менее важное: как мы можем извлечь пользу из этих данных, если эта новая гигантская сфера данных нуждается в обработке? Другими словами, его нужно использовать для извлечения значений.

Возможные результаты и возможности применения безграничны: улучшение сельскохозяйственного поля путем анализа прогнозов погоды, глубокое понимание клиентов, исследование новых вакцин, изменение определения городской среды путем анализа пробок… Список можно продолжить.

Сначала это кажется простым, но для этого требуются три основных элемента:

  1. Во-первых, нам нужны данные. Иногда эти источники данных могут быть разнородными (текст, аудио, видео, изображения и т. Д.), И нам может потребоваться «очистить» их, прежде чем они смогут эффективно использоваться.
  2. Далее нам потребуется вычислительная мощность. Подумайте еще раз о себе: наш мозг может выполнять множество вычислений и операций, но невозможно разделить одну задачу между несколькими мозгами. Попросите друга сделать с вами умножение, и вы убедитесь в этом сами. Но с компьютерами все возможно! Теперь мы можем распараллеливать вычисления на нескольких компьютерах (например, в кластере), что позволяет нам получать желаемые результаты быстрее, чем когда-либо.
  3. Наконец, нам нужна структура, представляющая собой набор инструментов, которые позволят вам использовать эту базу данных и эффективно вычислять мощность.



Шаг 1. Найдите подходящую структуру


Как вы увидите из названия этого поста, не секрет, что Apache Spark  — наш предпочтительный инструмент в OVH.

Мы выбрали Apache Spark, потому что это распределенная универсальная среда кластерных вычислений с открытым исходным кодом, которая имеет самое большое сообщество разработчиков открытого исходного кода в мире больших данных и работает до 100 раз быстрее, чем предыдущая среда кластерных вычислений. Hadoop MapReduce благодаря приятным функциям, таким как обработка в памяти и отложенная оценка. Apache Spark — это ведущая платформа для крупномасштабного SQL, пакетной обработки, потоковой обработки и машинного обучения с простым в использовании API, а для кодирования в Spark у вас есть возможность использовать разные языки программирования, включая Java, Scala., Python, R и SQL .

Другие инструменты, такие как Apache Flink и Beam, также выглядят очень многообещающими и будут частью наших будущих услуг.

Различные компоненты Apache Spark:

  • Apache Spark Core , который обеспечивает вычисления в памяти и составляет основу других компонентов
  • Spark SQL , который обеспечивает абстракцию структурированных и полуструктурированных данных.
  • Spark Streaming , который выполняет потоковый анализ с использованием преобразования RDD (Resilient Distributed Datasets).
  • MLib (библиотека машинного обучения) , которая представляет собой распределенную платформу машинного обучения над Spark.
  • GraphX , который представляет собой среду обработки распределенных графов поверх Spark.

Принцип архитектуры Apache Spark

Прежде чем идти дальше, давайте разберемся, как Apache Spark может работать так быстро, проанализировав его рабочий процесс.

Вот пример кода на Python, где мы будем читать файл и подсчитывать количество строк с буквой «a» и количество строк с буквой «b».

Прежде чем идти дальше, давайте разберемся, как Apache Spark может работать так быстро, проанализировав его рабочий процесс.

Вот пример кода на Python, где мы будем читать файл и подсчитывать количество строк с буквой «a» и количество строк с буквой «b».


Этот код является частью вашего приложения Spark, также известного как ваша программа драйвера.

Каждое действие ( count()в нашем примере) запускает задания. Затем Apache Spark разделит вашу работу на несколько задач, которые можно вычислить отдельно.

Apache Spark хранит данные в RDD (устойчивые распределенные наборы данных), которые представляют собой неизменяемую распределенную коллекцию объектов, а затем делит их на разные логические разделы, чтобы можно было обрабатывать каждую часть параллельно на разных узлах кластера.



Параллелизм задач  и вычисления в памяти  — вот ключ к сверхбыстости. Вы можете углубиться в официальную документацию .

Шаг 2. Найдите необходимую вычислительную мощность

Теперь у нас есть инструменты, но они нуждаются в вычислительной мощности (мы в основном говорим о ЦП и оперативной памяти) для выполнения таких массовых операций, и они должны быть масштабируемыми.

Поговорим о создании кластера компьютеров. Старомодным способом является покупка физических компьютеров и сетевого оборудования для их соединения, установка ОС и всего необходимого программного обеспечения и пакетов, установка Apache Spark на все узлы, затем настройка автономной системы управления кластером Spark и подключение всех рабочих к системе. главный узел.

Очевидно, это не лучший способ. Это занимает много времени и требует квалифицированных инженеров, чтобы все сделать. Также предположим, что вы выполнили эту сложную работу, а затем закончили обработку больших данных… Что вы собираетесь делать с кластером после этого? Просто оставить там или продать на вторичном рынке? Что, если вы решили выполнить некоторую крупномасштабную обработку и вам нужно добавить больше компьютеров в свой кластер? Вам нужно будет выполнить все программное обеспечение, установку и настройку сети для новых узлов.

Лучшим способом создания кластера является использование поставщика публичного облака. Таким образом, ваши серверы будут развернуты очень быстро, вы будете платить только за то, что потребляете, и сможете удалить кластер после завершения задачи обработки. Вы также сможете получить доступ к своим данным намного проще, чем при использовании локального решения. Не случайно, согласно IDC, к 2025 году половина всех данных в мире будет храниться в публичном облаке [3].



Но основная проблема сохраняется: вам по-прежнему нужно установить все программное обеспечение и пакеты на каждом из серверов в вашем виртуальном кластере, затем настроить сеть и маршрутизаторы, принять меры безопасности и настроить брандмауэр и, наконец, установить и настроить Apache Spark. система управления кластером. Это займет время и будет подвержено ошибкам, и чем дольше это займет, тем больше с вас будет взиматься плата из-за того, что эти серверы развернуты в вашей облачной учетной записи.

Шаг 3. Отдохните и откройте для себя OVH Analytics Data Compute

Как мы только что видели, создание кластера можно выполнить вручную, но это скучная и трудоемкая задача.

В OVH мы решили эту проблему, представив службу кластерных вычислений под названием Analytics Data Compute, которая на лету создаст готовый, полностью установленный и настроенный кластер Apache Spark. Используя эту услугу, вам не нужно тратить время на создание сервера, сети, брандмауэры и настройки безопасности на каждом узле вашего кластера. Вы просто сосредотачиваетесь на своих задачах, и нужный вам вычислительный кластер появится как по волшебству!

На самом деле, в этом нет ничего волшебного… просто автоматизация, созданная OVH для упрощения как нашей, так и вашей жизни. Нам понадобился такой инструмент для внутренних вычислений, и мы превратили его в продукт для вас.

Идея довольно проста: вы запускаете задание Apache Spark как обычно через командную строку или API, и полный кластер Apache Spark будет построен на лету, специально для вашей работы. После завершения обработки мы удаляем кластер, и вам выставляется счет за использованные ресурсы (на данный момент на почасовой основе).

Таким образом, мы можем быстро масштабироваться от одной до тысяч виртуальных машин, позволяя использовать тысячи ядер ЦП и тысячи ГБ оперативной памяти.



Чтобы использовать Analytics Data Compute, вам необходимо загрузить небольшой пакет клиентского программного обеспечения с открытым исходным кодом из репозитория OVH, который называется ovh-spark-submit.

Этот клиент был создан с целью сохранения официального синтаксиса командной строки Spark-submit Apache Spark. Большинство параметров и синтаксиса одинаковы, хотя в версии OVH есть еще несколько параметров, связанных с управлением инфраструктурой и кластером. Таким образом, вы просто запрашиваете запуск своего кода над своими данными в кластере определенных узлов, и инструмент создаст кластер с указанным количеством узлов, установит все пакеты и программное обеспечение (включая Spark и его систему управления кластером)., а затем настройте сеть и брандмауэр. После создания кластера OVH Analytics Data Compute запустит ваш код Spark, вернет результат пользователю, а затем удалит все, как только это будет сделано. Намного эффективнее!

Приступим… Почувствуй силу!

Хорошая новость заключается в том, что если вы уже знакомы с командной строкой Spark-submit Apache Spark, вам не нужно изучать какие-либо новые инструменты командной строки, поскольку ovh-spark-submit использует почти те же параметры и команды.

Давайте посмотрим на пример, в котором мы вычислим десятичные дроби знаменитого числа Пи, сначала с использованием исходного синтаксиса Apache Spark, а затем с помощью клиента ovh-spark-submit:

./spark-submit \
	--class org.apache.spark.examples.SparkPi \
	--total-executor-cores 20 \
	SparkPI.jar 100

./ovh-spark-submit \
	--class org.apache.spark.examples.SparkPi \
	--total-executor-cores 20 \
	SparkPI.jar 100


Вы можете видеть, что единственная разница — это «ovh-» в начале командной строки, а все остальное такое же. И, запустив ovh-spark-submitкоманду, вы запустите задание на кластере компьютеров с 20 ядрами, а не только на своем локальном компьютере. Этот кластер полностью посвящен этому заданию, так как он будет создан после выполнения команды, а затем удален по завершении.

Другой пример — популярный вариант использования подсчета слов. Предположим, вы хотите подсчитать количество слов в большом текстовом файле, используя кластер из 100 ядер. Большой текстовый файл хранится в хранилище OpenStack Swift (хотя это может быть любая онлайн-система или облачная система хранения). Код Spark для этого вычисления в Java выглядит так:

JavaRDD<String> lines = spark.read().textFile("swift://textfile.abc/novel.txt").javaRDD();

JavaRDD<String> words = lines.flatMap(s -> Arrays.asList(SPACE.split(s)).iterator());
JavaPairRDD<String, Integer> ones = words.mapToPair(s -> new Tuple2<>(s, 1));
JavaPairRDD<String, Integer> counts = ones.reduceByKey((i1, i2) -> i1 + i2);
List<Tuple2<String, Integer>> output = counts.collect();


Мы также можем выбрать желаемую версию Spark. В этом примере мы выбрали Spark версии 2.4.0, и командная строка для запуска этого задания Spark выглядит так:

./ovh-spark-submit \
	--class JavaWordCount \
	--total-executor-cores 100 \
	--name wordcount1 \
	--version 2.4.0 \
	SparkWordCount-fat.jar 


Для создания кластера Spark мы используем узлы с четырьмя виртуальными ядрами и 15 ГБ ОЗУ. Следовательно, при выполнении этой команды будет создан кластер из 26 серверов (один для главного узла и 25 для рабочих), поэтому у нас будет 25 × 4 = 100 виртуальных ядер и 25 × 15 = 375 ГБ ОЗУ.

После запуска командной строки вы увидите процесс создания кластера и установки всего необходимого программного обеспечения.

После создания кластера вы можете взглянуть на него с помощью официальной панели управления Spark и проверить, все ли в вашем кластере запущены и работают:



Кроме того, если вы перейдете на панель управления OpenStack Horizon в своей облачной учетной записи OVH, вы увидите все 26 серверов:



Задание Apache Spark будет выполнено в соответствии с файлом java-кода в jar, который мы отправили в кластер Spark, и результаты будут показаны на экране. Кроме того, результаты и полные файлы журнала будут сохранены как на локальном компьютере, так и в хранилище Swift пользователя.



Когда вы закончите, вы увидите сообщение о том, что кластер удален, а также адреса журналов в хранилище OpenStack Swift и на локальном компьютере. На следующем снимке экрана видно, что создание полностью установленного и настроенного кластера Spark с 26 серверами заняло менее пяти минут.



Еще немного о вычислении данных OVH Analytics

Если вам интересно, вот некоторые дополнительные сведения о вычислении данных Analytics:

  • Все построено на публичном облаке OVH, а это значит, что все работает на OpenStack.
  • Вы можете выбрать версию Apache Spark, которую хотите запустить, прямо в командной строке. Вы также, конечно, можете запускать несколько кластеров с разными версиями.
  • Для каждого запроса будет создан новый выделенный кластер, который будет удален после завершения задания. Это означает, что нет проблем с безопасностью или конфиденциальностью, вызванных наличием нескольких пользователей в одном кластере.
  • У вас есть возможность оставить кластер после завершения работы. Если вы добавите параметр keep-infra в командную строку, кластер не будет удален, когда вы закончите. Затем вы можете отправить больше заданий в этот кластер или просмотреть более подробную информацию в журналах.
  • Компьютеры кластера создаются в вашем собственном проекте OVH Public Cloud, поэтому вы имеете полный контроль над компьютерами кластера.
  • Результаты и журналы вывода будут сохранены в Swift в вашем проекте OVH Public Cloud. Только у вас будет доступ к ним, и у вас также будет полная история всех ваших заданий Spark, сохраненных в папке, с сортировкой по дате и времени выполнения.
  • Ввод и вывод данных могут быть любого источника или формата. Когда дело доходит до хранилища, нет привязки к поставщику, поэтому вы не обязаны использовать только облачное хранилище OVH для хранения ваших данных и можете использовать любую онлайн-платформу или платформу облачного хранилища в общедоступном Интернете.
  • Вы можете получить доступ к панелям мониторинга Cluster и Spark и веб-интерфейсу через HTTPS.

Сосредоточимся на системах управления кластером

В кластерах Apache Spark на всех узлах кластера есть независимые процессы, называемые «исполнителями», которые координируются программой драйвера. Для распределения ресурсов кластера между приложениями программа драйвера должна подключиться к системе управления кластером, после чего она будет отправлять код приложения и задачи исполнителям.

Когда дело доходит до систем управления кластером, есть несколько вариантов, но, чтобы все было быстро и просто, мы выбрали автономную систему управления кластером Spark. Это дает нашим пользователям свободу выбора любой версии Spark, а также ускоряет установку кластера по сравнению с другими вариантами. Если, например, мы выбрали Kubernetes в качестве нашей системы управления кластером, наши пользователи были бы ограничены Spark версии 2.3 или выше, а установка кластера потребовала бы больше времени. В качестве альтернативы, если бы мы хотели развернуть готовый к использованию кластер Kubernetes (например, OVH Managed Kubernetes), мы бы потеряли масштабируемость, потому что инфраструктура нашего кластера Apache Spark была бы по своей сути ограничена инфраструктурой кластера Kubernetes.. Но с нашим текущим дизайном,

Попробуй сам!

Чтобы начать работу с Analytics Data Compute, вам просто нужно создать облачную учетную запись на www.ovh.com, затем загрузить программное обеспечение ovh-spark-submit и запустить его, как описано на странице документации OVH . Кроме того, если вы примете участие в небольшом опросе на нашей странице OVH Labs , вы получите ваучер, который позволит вам протестировать Analytics Data Compute из первых рук с 20 евро на бесплатный кредит.
Если у вас есть какие-либо вопросы или вы хотите получить дополнительные объяснения, с нашей командой можно связаться через наш канал Gitter.