EliseeAlex.me

«Learning Spark» — Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia

Изучаем Apache Spark и всё, что вокруг него

«Learning Spark» — Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia

Недавно прошёл на собеседовании в качестве Big Data Enineer в компанию Wrike. Там я буду заниматься созданием инфраструктуры для анализа данных и буду использовать Apache Spark. До этого, я только слышал о нём, что многие используют, но не встречал на практике и не работал с ним локально.

До выхода на работу мне нужно было узнать о Spark побольше и я взялся за эту книгу. Когда я её читал была актуальной версия спарка 1.6 и выходила версия 2.0. В книжке написано про спарк 1.2, поэтому там нет многих интересных подробностей из новых версий Спарка и есть устаревшая информация.

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

Большая часть книги посвящена настройки спарка и его взаимосвязи с внешними интсрументами, поэтому полезной информации о внутреннем устройстве спарка там не так много. В книге мне показалось интересным:

  • объяснение, что такое shuffling, когда он бывает и как оптимально работать, зная, что данные пересылаются по сети;
  • описание spark streaming;
  • поверхностный обзор spark sql и MlLib.

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

Чтобы лучше понять, как работает спарк, советую презентацию A Deeper Understanding of Spark Internals — Aaron Davidson (Databricks). Там есть обзор модели построения запросов (DAG) и он объясняет, как работает shuffling, мне стало понятнее, что Spark может оптимизировать, а что нет.

Ещё мне понравилась книга High Performance Spark By Holden Karau, Rachel Warren. Там спарк тоже рассматривается достаточно глубоко, она ещё не вышла полностью, но первые четыре главы выглядят многообещающе. Из неё я лучше понял, как работает планировка запроса. Узнал, что dataframe api и spark sql работают быстрее, чем стандартные rdd и понял почему.

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

Я продолжаю учить спарк, если что-то найду, добавлю сюда. Если знаете, что-то, что поможет понять Spark лучше, пишите в коментариях, я добавлю в статью.