5 методов оптимизации Spark, о которых должен знать каждый специалист по данным

Опубликовано: 2020-06-12

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

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

Мы узнаем о методах немного позже. Давайте разберемся с основами этой программной среды.

Оглавление

Что такое Apache Spark?

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

Spark предоставляет собственные привязки для языков программирования, таких как Python, R, Scala и Java. Он поддерживает машинное обучение, обработку графов и базы данных SQL . Благодаря этим удивительным преимуществам Spark используется в банках, технологических фирмах, финансовых организациях, телекоммуникационных департаментах и ​​государственных учреждениях. Чтобы узнать больше об Apache Spark, ознакомьтесь с нашими курсами по науке о данных от признанных университетов.

Архитектура Apache Spark

Архитектура времени выполнения Apache Spark состоит из следующих компонентов:

Драйвер Spark или главный процесс

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

Менеджер кластера

Менеджер кластера Spark отвечает за запуск исполнителей и драйверов. Он планирует и распределяет ресурсы между несколькими хост-компьютерами для кластера.

Исполнители

Исполнители, также называемые подчиненными процессами, представляют собой объекты, в которых выполняются задачи задания. После запуска они работают до тех пор, пока не закончится жизненный цикл приложения Spark. Выполнение задания Spark не останавливается в случае сбоя исполнителя.

Устойчивые распределенные наборы данных (RDD)

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

Spark поддерживает следующие типы RDD:

  • Наборы данных Hadoop, созданные из файлов в распределенной файловой системе Hadoop.
  • Параллелизованные коллекции, которые могут быть основаны на коллекциях Scala.

DAG (направленный ациклический граф)

Spark создает график, как только код вводится в консоль Spark. Если срабатывает какое-то действие (инструкция по выполнению операции), этот граф передается в DAGScheduler .

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

Методы оптимизации искры

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

Наиболее популярные методы оптимизации Spark перечислены ниже:

1. Сериализация данных

Здесь объект в памяти преобразуется в другой формат, который можно сохранить в файле или отправить по сети. Это повышает производительность распределенных приложений. Два способа сериализации данных:

  • Джава сериализация — платформа ObjectOutputStream используется для сериализации объектов. java.io.Externalizable можно использовать для управления производительностью сериализации. Этот процесс предлагает легкое постоянство.
  • Сериализация Kyro Spark использует библиотеку сериализации Kryo (v4) для сериализации объектов, которая быстрее, чем сериализация Java, и является более компактным процессом. Для повышения производительности классы должны быть зарегистрированы с помощью метода registerKryoClasses.

2. Кэширование

Это эффективный метод, который используется, когда данные требуются чаще. Cache() и persist() — это методы, используемые в этой технике. Эти методы используются для хранения вычислений RDD, DataSet и DataFrame. Но cache() сохраняет его в памяти, а persist() сохраняет на определяемом пользователем уровне хранения.

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

Читать: Dataframe в Apache PySpark: подробное руководство

3. Настройка структуры данных

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

  • Используйте перечисляемые объекты или числовые идентификаторы вместо строк для ключей.
  • Избегайте использования множества объектов и сложных вложенных структур.
  • Установите для флага JVM значение xx:+UseCompressedOops, если размер памяти меньше 32 ГБ.

4. Оптимизация сбора мусора

Для оптимизации сборщиков мусора необходимо использовать G1 и GC для запуска приложений Spark. Коллектор G1 справляется с растущими кучами. Настройка GC необходима в соответствии с сгенерированными журналами, чтобы контролировать непредвиденное поведение приложений. Но перед этим нужно изменить и оптимизировать логику и код программы.

G1GC помогает сократить время выполнения заданий за счет оптимизации времени паузы между процессами.

5. Управление памятью

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

Когда исполнительная память не используется, память для хранения может использовать пространство. Точно так же, когда память для хранения простаивает, оперативная память может использовать пространство. Это один из самых эффективных методов оптимизации Spark .

Читайте также: 6 особенностей Apache Spark, меняющих правила игры

Заключение

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

Если вам интересно узнать об оптимизации искры , науке о данных, ознакомьтесь с программой IIIT-B & upGrad Executive PG по науке о данных , которая создана для работающих профессионалов и предлагает более 10 тематических исследований и проектов, практические практические семинары, наставничество в отрасли. экспертов, общение один на один с отраслевыми наставниками, более 400 часов обучения и помощь в трудоустройстве в ведущих фирмах.

Что такое методы оптимизации Spark?

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

Каждый метод оптимизации искры используется для разных целей и выполняет определенные действия. Некоторые из широко используемых методов оптимизации искры:

1. Сериализация
2. Выбор API
3. Предварительная переменная
4. Кэшировать и сохранять
5. Работа по ключу
6. Выбор формата файла
7. Настройка сборки мусора
8. Уровень параллелизма

Когда вам не следует использовать Spark?

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

1. Низкая вычислительная мощность. Обработка по умолчанию в Apache Spark происходит в памяти кластера. Если ваши виртуальные машины или кластер имеют небольшую вычислительную мощность, вам следует использовать другие альтернативы, такие как Apache Hadoop.
2. Прием данных в модели публикации-подписки. В этом случае имеется несколько источников, а также несколько пунктов назначения, куда за короткое время перемещаются миллионы данных. Здесь вам не следует использовать Spark, а вместо этого используйте Apache Kafka.

Pandas быстрее, чем Apache Spark?

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