Apache Spark: 6 фактов, которые нужно знать каждому
Об особенностях обработки данных с помощью Apache Spark рассуждает Нихиль Ранжан, старший разработчик Informatica.
Apache Spark – это технология, которая работает с Big Data. Если вы никогда не слышали об особенностях хранения и обработки больших данных, читайте сначала статью «Что такое Big Data? Азбука больших данных от А до Я».
Apache Spark – как MapReduce, но быстрее
MapReduce – компонент Hadoop для обработки данных (есть ещё HDFS для их хранения). Он проводит вычисления в два этапа. На первом этапе (Map) главный узел кластера Hadoop распределяет задачи по другим узлам (нодам). На втором – данные сворачиваются, передаются обратно на главный узел и формируется окончательный результат вычисления. Такая сложная схема приводит к задержкам в работе. Пока все процессы этапа Map не закончатся, процессы Reduce не начнутся. Замедляет работу технологии и то, что обрабатывает она в основном информацию на жёстких дисках. MapReduce прекрасно справляется с пакетной обработкой, но, когда требуется высокая скорость – низкая латентность – такая технология не подходит.
В промежутке между 2007 и 20015 появилось множество независимых проектов по разработке решения, которое могло бы проводить вычисления на Hadoop, но с высокой латентностью. В частности, появились Apache Storm, GarphLab, Apache Tez, Giraph. Они и сейчас остаются полноценными частями экосистемы Hadoop. Наибольшую популярность приобрёл Apache Spark. Он сохранил главные преимущества MapReduce. В частности – неограниченную горизонтальную масштабируемость и способность восстанавливаться даже после серьезных ошибок системы. При этом Apache Spark проводит вычисления в оперативной памяти. Благодаря технологии RDD (resilient distributed dataset) Apache Spark не проводит всех вычислений сразу, а только тогда, когда требуется вывести готовый результат. Всё это позволяет ему в 10-100 раз работать быстрее своего старшего товарища.
Apache Spark не часть Hadoop
Apache Spark – отдельное решение, которое теоретически может использоваться и для другой платформы хранения данных: для Apache Cassandra или Amazaon S3.
Apache Spark не заменит MapReduce
Apache Spark создавался для случаев, когда объёмы данных сравнительно небольшие, а латентность требуется высокая. Если у вас нет очень больших объёмов оперативной памяти, Spark не сможет обрабатывать очень большие данные.
Apache Spark подходит для интернета вещей, машинного обучения, кибербезопасности
Apache Spark был разработан так, что подходит и для пакетной и для итеративной обработки. Итеративная обработка нужна для машинного обучения (библиотека MLib), работы с графами (оптимально применять библиотеку GraphX) и обработки данных в потоковом режиме (SparkStreaming), оно активно применяется для IoT и кибербезопасности.
Писать код на Apache Spark просто
Вести разработку на Apache Spark можно с помощью множества языков, например, с помощью Java, Scala, Python и R. Писать код в Apache Spark намного проще, чем на MapReduce, а сам код получается короче и компактнее.
Apache Spark прекрасно работает с платформой Informatica, но не конкурирует с ней
Решения Informatica для Big Data прекрасно работают с технологией Apache Spark. Кейсы успешной совместной работы есть уже и на международном, и на российском рынках.
«Продукты Informatica работают с графами с помощью Apache Spark, — объясняет Сумиит Агравал, главный менеджер по продукту Informatica. — Потому что мы всегда стараемся использовать инновации open-source».
При этом, Apache Spark не может составить конкуренцию Informatica Big Data Management в области пакетной обработки данных при ETL. Исследования показали, что собственная технология Informatica на основе технологии YARN – Blaze – работает в 2-3 раза быстрее при осуществлении ETL-процессов. Он также позволяет эффективнее использовать ресурсы при проведении нескольких операций и имеет целый ряд других преимуществ.
Обновлено: 21.03.2023
Опубликовано: 19.09.2018