Изучаем Spark. Молниеносный анализ данных
Покупка
Тематика:
Системы управления базами данных (СУБД)
Издательство:
ДМК Пресс
Год издания: 2023
Кол-во страниц: 305
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-89818-320-2
Артикул: 635288.03.99
Доступ онлайн
В корзину
Объем обрабатываемых данных во всех областях человеческой деятельности продолжает расти быстрыми темпами. Существуют ли эффективные приемы работы с ним? В этой книге рассказывается об Apache Spark, открытой системе кластерных вычислений, которая позволяет быстро создавать высокопроизводительные программы анализа данных. C помощью Spark вы сможете манипулировать огромными объемами данных посредством простого API на Python, Java и Scala. Написанная разработчиками Spark, эта книга поможет исследователям данных и программистам быстро включиться в работу. Она рассказывает, как организовать параллельное выполнение заданий всего несколькими строчками кода, и охватывает примеры от простых пакетных приложений до программ, осуществляющих обработку потоковых данных и использующих алгоритмы машинного обучения.
- Полная коллекция по информатике и вычислительной технике
- Базы данных. Разработка и защита
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Проектирование баз и банков данных
- Системы управления базами данных (СУБД)
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Изучаем Spark МОЛНИЕНОСНЫЙ АНАЛИЗ ДАННЫХ Холден Карау, Энди Конвински, Патрик Венделл и Матей Захария
Learning Spark LIGHTNING-FAST DATA ANALYSIS Holden Karau, Andy Konwinski, Patrick Wendell & Matei Zaharia
Изучаем Spark МОЛНИЕНОСНЫЙ АНАЛИЗ ДАННЫХ Холден Карау, Энди Конвински, Патрик Венделл и Матей Захария Москва, 2023 2-е издание, электронное
УДК 004.65:004.43 Spark ББК 32.972.34 К21 К21 Карау, Холден. Изучаем Spark. Молниеносный анализ данных / Х. Карау, Э. Конвински, П. Венделл и др. ; пер. с англ. — 2-е изд., эл. — 1 файл pdf : 305 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-320-2 Объем обрабатываемых данных во всех областях человеческой деятельности продолжает расти быстрыми темпами. Существуют ли эффективные приемы работы с ним? В этой книге рассказывается об Apache Spark, открытой системе кластерных вычислений, которая позволяет быстро создавать высокопроизводительные программы анализа данных. C помощью Spark вы сможете манипулировать огромными объемами данных посредством простого API на Python, Java и Scala. Написанная разработчиками Spark, эта книга поможет исследователям данных и программистам быстро включиться в работу. Она рассказывает, как организовать параллельное выполнение заданий всего несколькими строчками кода, и охватывает примеры от простых пакетных приложений до программ, осуществляющих обработку потоковых данных и использующих алгоритмы машинного обучения. УДК 004.65:004.43 Spark ББК 32.972.34 Электронное издание на основе печатного издания: Изучаем Spark. Молниеносный анализ данных / Х. Карау, Э. Конвински, П. Венделл и др. ; пер. с англ. — Москва : ДМК Пресс, 2015. — 304 с. — ISBN 978-5-97060-323-9. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-320-2 © 2015 Databricks © Оформление, издание, ДМК Пресс, 2015
Содержание Предисловие ...........................................................10 Вступление ............................................................ 11 Глава 1. Введение в анализ данных с помощью Spark .....18 Что такое Apache Spark? ...................................................................................18 Унифицированный стек ....................................................................................19 Spark Core .........................................................................................................20 Spark SQL .........................................................................................................20 Spark Streaming ...............................................................................................21 MLlib ...................................................................................................................21 GraphX ...............................................................................................................22 Диспетчеры кластеров ..................................................................................22 Кто и с какой целью использует Spark? ......................................................22 Исследование данных ...................................................................................23 Обработка данных .........................................................................................24 Краткая история развития Spark ...................................................................24 Версии Spark .........................................................................................................26 Механизмы хранения данных для Spark ....................................................26 Глава 2. Загрузка и настройка Spark ............................27 Загрузка Spark ......................................................................................................27 Введение в командные оболочки Spark для Python и Scala .................29 Введение в основные понятия Spark ............................................................33 Автономные приложения .................................................................................35 Инициализация SparkContext ...................................................................36 Сборка автономных приложений .............................................................38 В заключение ........................................................................................................41 Глава 3. Программирование операций с RDD .................42 Основы RDD ........................................................................................................42 Создание RDD .....................................................................................................45 Операции с RDD .................................................................................................46 Преобразования ..............................................................................................46 Действия ............................................................................................................47 Отложенные вычисления ............................................................................49 Передача функций в Spark ...............................................................................50 Python ................................................................................................................50 Scala .....................................................................................................................51 Java ......................................................................................................................52
Содержание Часто используемые преобразования и действия ...................................54 Простые наборы RDD ..................................................................................54 Преобразование типов RDD .....................................................................63 Сохранение (кэширование).............................................................................65 В заключение ........................................................................................................68 Глава 4. Работа с парами ключ/значение ......................69 Вступление ............................................................................................................69 Создание наборов пар ........................................................................................70 Преобразования наборов пар ..........................................................................71 Агрегирование .................................................................................................73 Группировка данных .....................................................................................80 Соединения ......................................................................................................81 Сортировка .......................................................................................................82 Действия над наборами пар ключ/значение .............................................83 Управление распределением данных ...........................................................84 Определение объекта управления распределением RDD ...............88 Операции, получающие выгоды от наличия информации о распределении ..............................................................................................89 Операции, на которые влияет порядок распределения ....................90 Пример: PageRank ..........................................................................................91 Собственные объекты управления распределением .........................93 В заключение ........................................................................................................96 Глава 5. Загрузка и сохранение данных ........................97 Вступление ............................................................................................................97 Форматы файлов .................................................................................................98 Текстовые файлы ............................................................................................99 JSON ................................................................................................................ 101 Значения, разделенные запятыми, и значения, разделенные табуляциями ................................................................................................. 104 SequenceFiles ................................................................................................. 108 Объектные файлы ....................................................................................... 111 Форматы Hadoop для ввода и вывода ................................................ 112 Сжатие файлов ............................................................................................. 117 Файловые системы .......................................................................................... 118 Локальная/«обычная» файловая система .......................................... 118 Amazon S3 ...................................................................................................... 119 HDFS ............................................................................................................... 119 Структурированные данные и Spark SQL ............................................... 120 Apache Hive ................................................................................................... 121 JSON ................................................................................................................ 122 Базы данных ....................................................................................................... 123
Содержание 7 Java Database Connectivity ....................................................................... 123 Cassandra ........................................................................................................ 124 HBase ............................................................................................................... 127 Elasticsearch ................................................................................................... 127 В заключение ..................................................................................................... 129 Глава 6. Дополнительные возможности Spark ..............130 Введение .............................................................................................................. 130 Аккумуляторы ................................................................................................... 131 Аккумуляторы и отказоустойчивость ................................................. 135 Собственные аккумуляторы ................................................................... 136 Широковещательные переменные ............................................................. 136 Оптимизация широковещательных рассылок .................................. 139 Работа с разделами по отдельности ........................................................... 140 Взаимодействие с внешними программами ........................................... 143 Числовые операции над наборами RDD ................................................. 147 В заключение ..................................................................................................... 149 Глава 7. Выполнение в кластере ................................150 Введение .............................................................................................................. 150 Архитектура среды Spark времени выполнения ................................... 151 Драйвер ........................................................................................................... 151 Исполнители................................................................................................. 153 Диспетчер кластера .................................................................................... 153 Запуск программы ...................................................................................... 154 Итоги ............................................................................................................... 154 Развертывание приложений с помощью spark-submit ........................ 155 Упаковка программного кода и зависимостей ....................................... 158 Сборка приложения на Java с помощью Maven ............................... 159 Сборка приложения на Scala с помощью sbt ..................................... 161 Конфликты зависимостей ........................................................................ 163 Планирование приложений и в приложениях Spark .......................... 163 Диспетчеры кластеров .................................................................................... 164 Диспетчер кластера Spark Standalone .................................................. 165 Hadoop YARN ............................................................................................... 169 Apache Mesos................................................................................................. 171 Amazon EC2 ................................................................................................... 173 Выбор диспетчера кластера .......................................................................... 176 В заключение ..................................................................................................... 177 Глава 8. Настройка и отладка Spark ............................178 Настройка Spark с помощью SparkConf ................................................... 178 Компоненты выполнения: задания, задачи и стадии .......................... 181
Содержание Поиск информации ......................................................................................... 189 Веб-интерфейс Spark ................................................................................. 189 Журналы драйверов и исполнителей ................................................... 193 Ключевые факторы, влияющие на производительность ................... 195 Степень параллелизма .............................................................................. 195 Формат сериализации ............................................................................... 196 Управление памятью .................................................................................. 198 Аппаратное обеспечение ........................................................................... 199 В заключение ..................................................................................................... 201 Глава 9. Spark SQL ..................................................202 Включение Spark SQL в приложения ....................................................... 203 Использование Spark SQL в приложениях ............................................ 205 Инициализация Spark SQL ..................................................................... 205 Пример простого запроса ......................................................................... 207 Наборы данных SchemaRDD .................................................................. 208 Кэширование ................................................................................................ 210 Загрузка и сохранение данных .................................................................... 211 Apache Hive ................................................................................................... 212 Parquet ............................................................................................................. 213 JSON ................................................................................................................ 214 Из RDD........................................................................................................... 216 Сервер JDBC/ODBC ................................................................................. 217 Работа с программой Beeline ................................................................... 219 Долгоживущие таблицы и запросы ...................................................... 220 Функции, определяемые пользователем ................................................. 221 Spark SQL UDF ........................................................................................... 221 Hive UDF ....................................................................................................... 222 Производительность Spark SQL ................................................................. 223 Параметры настройки производительности ..................................... 223 В заключение ..................................................................................................... 225 Глава 10. Spark Streaming .........................................226 Простой пример ................................................................................................ 227 Архитектура и абстракция ............................................................................ 230 Преобразования ................................................................................................ 234 Преобразования без сохранения состояния ...................................... 234 Преобразования с сохранением состояния ........................................ 238 Операции вывода ............................................................................................. 244 Источники исходных данных ...................................................................... 245 Основные источники ................................................................................. 246 Дополнительные источники ................................................................... 247 Множество источников и размеры кластера ..................................... 252
Содержание 9 Круглосуточная работа ................................................................................. 252 Копирование в контрольных точках .................................................... 253 Повышение отказоустойчивости драйвера ........................................ 254 Отказоустойчивость рабочих узлов ..................................................... 255 Отказоустойчивость приемников ......................................................... 256 Гарантированная обработка..................................................................... 257 Веб-интерфейс Spark Streaming .................................................................. 257 Проблемы производительности .................................................................. 258 Интервал пакетирования и протяженность окна ............................ 258 Степень параллелизма ............................................................................. 259 Сборка мусора и использование памяти ............................................ 259 В заключение ..................................................................................................... 260 Глава 11. Машинное обучение с MLlib ........................261 Обзор .................................................................................................................... 261 Системные требования .................................................................................. 263 Основы машинного обучения ...................................................................... 263 Пример: классификация спама .............................................................. 265 Типы данных ...................................................................................................... 269 Векторы .......................................................................................................... 269 Алгоритмы .......................................................................................................... 271 Извлечение признаков .............................................................................. 271 Статистики .................................................................................................... 275 Классификация и регрессия .................................................................... 276 Кластеризация ............................................................................................. 282 Коллаборативная фильтрация и рекомендации .............................. 283 Понижение размерности .......................................................................... 285 Оценка модели ............................................................................................. 287 Советы и вопросы производительности .................................................. 288 Выбор признаков ......................................................................................... 288 Настройка алгоритмов .............................................................................. 289 Кэширование наборов RDD для повторного использования ..... 289 Разреженные векторы ............................................................................... 290 Степень параллелизма .............................................................................. 290 Высокоуровневый API машинного обучения ........................................ 290 В заключение ..................................................................................................... 292 Предметный указатель ............................................293
Предисловие За очень короткое время после появления Apache Spark – фреймворк следующего поколения для быстрой обработки больших объемов данных – получил повсеместное распространение. Spark превосходит фреймворк Hadoop MapReduce, который дал импульс революции в обработке больших объемов данных, по множеству ключевых параметров: он намного быстрее, намного проще в использовании благодаря богатому API и может применяться для создания не только приложений пакетной обработки данных разной мощности, но и интерактивных приложений, приложений потоковой обработки данных, машинного обучения и обработки графов. Я был тесно вовлечен в разработку Spark на всех этапах этого процесса, от чертежной доски до образования самого активного из современных открытых проектов и одного из самых активных проектов Apache! Мне было особенно приятно, что Матей Захария (Matei Zaharia), создатель Spark, объединился с другими давнишними разработчиками Spark – Патриком Венделлом (Patrick Wendell), Энди Конвински (Andy Konwinski) и Холденом Карау (Holden Karau), – чтобы написать эту книгу. В связи с быстрым ростом популярности Spark на передний план вышла проблема нехватки хороших справочных руководств. Авторы книги проделали длинный путь для ее решения, написав 11 глав и представив десятки подробных примеров, чтобы помочь специалистам в области анализа данных, студентам и программистам поближе узнать Spark. Она доступна читателям, не имеющим опыта работы с «большими данными», что делает ее отличной отправной точкой для начала изучения предметной области в целом. Я надеюсь, что много лет спустя читатели со светлым чувством будут вспоминать эту книгу как проводника в новый захватывающий мир. – Ион Стоика (Ion Stoica), директор Databricks и содиректор AMPlab, Калифорнийский университет Беркли
Вступление По мере вхождения в обиход анализа данных специалисты-практики во многих областях искали все более простые инструменты для решения этой задачи. Apache Spark быстро завоевал популярность как инструмент, расширяющий и обобщающий модель MapReduce. Фрейм- ворк Spark имеет три основных преимущества. Во-первых, простота в использовании – с его помощью можно создавать приложения на ноутбуке, используя высокоуровневый API, который позволяет сконцентрироваться на предметной стороне вычислений. Во-вторых, высокая скорость работы, что дает возможность создавать интерактивные приложения и использовать сложные алгоритмы. И в-третьих, обобщенность, позволяющая объединять разнотипные вычисления (например, выполнять SQL-запросы, обрабатывать текст и реализовывать алгоритмы машинного обучения (machine learning)), для чего прежде необходимо было применять разрозненные инструменты. Все это делает Spark отличной отправной точкой на пути изучения аспектов обработки «больших данных» (Big Data). Цель этого вводного руководства – помочь вам быстро настроить Spark и приступить к работе с ним. Здесь вы узнаете, как загрузить и запустить Spark на своем ноутбуке, как работать с ним в интерактивном режиме, чтобы поближе познакомиться с API. Затем мы рассмотрим особенности доступных операций и распределенных вычислений. В заключение мы совершим экскурс по высокоуровневым библиотекам, входящим в состав Spark, включая библиотеки для машинного обучения, потоковой обработки данных (stream processing) и SQL. Мы надеемся, что с этой книгой вы быстро сможете приступить к решению задач, связанных с анализом данных, как на одной, так и на сотнях машин. Кому адресована эта книга Данная книга адресована специалистам в области анализа данных (или исследователям) и инженерам-программистам. Мы выбрали эти две группы, потому что они смогут извлечь наибольшую выгоду от привлечения фреймворка Spark для решения своих задач. Богатая коллекция библиотек (таких как MLlib), входящих в состав Spark, поможет специалистам в области анализа данных решать статистические задачи, непосильные единственному компьютеру. Программис-
Вступление ты, в свою очередь, узнают, как писать распределенные программы на основе Spark и как управлять промышленными приложениями. Программисты и исследователи по-разному будут воспринимать эту книгу, но и те, и другие смогут задействовать Spark для решения больших распределенных задач в своих областях. Исследователи основное внимание уделяют ответам на вопросы и разработке моделей на основе данных. Они часто имеют математическую подготовку, и некоторые из них знакомы с такими инструментами, как Python, R и SQL. Мы постарались включить в книгу примеры программного кода на Python и, где это необходимо, на SQL, а также обзор библиотек и особенностей поддержки машинного обучения в Spark. Если вы – исследователь, специалист в области анализа данных, мы надеемся, что после прочтения нашей книги вы сможете использовать те же математические подходы для решения задач, только намного быстрее и в более широком масштабе. Вторая целевая группа данной книги – инженеры-программисты, имеющие некоторый опыт программирования на Java, Python или других языках. Если вы – программист, мы надеемся, что благодаря этой книге вы научитесь настраивать кластеры Spark, пользоваться командной оболочкой Spark и писать Spark-приложения для организации параллельных вычислений. Знакомые с фреймворком Hadoop уже знают, как взаимодействовать с HDFS и управлять кластерами, но, как бы то ни было, мы все равно опишем основные понятия распределенных вычислений. Кем бы вы ни были, исследователем или программистом, чтобы извлечь максимум из этой книги, необходимо иметь знакомство с любым из языков программирования: Python, Java, Scala или им подобным. Мы полагаем, что у вас уже реализовано решение хранилища для ваших данных, поэтому мы охватим лишь наиболее общие подходы к загрузке и сохранению данных, но не будем обсуждать вопросы их реализации. Если у вас пока нет опыта использования ни одного из перечисленных языков, не волнуйтесь: существуют великолепные книги, которые помогут в овладении ими. Некоторые из таких книг мы упомянем в разделе «Книги поддержки» ниже. Как организована эта книга Главы в этой книге следуют в порядке изучения материала. В начале каждой главы мы будем сообщать, какие ее разделы, по нашему мнению, больше подходят для исследователей, а какие – для программис-
Вступление 13 тов. При этом мы надеемся, что все разделы будут доступны читателям с любым уровнем подготовки. Первые две главы описывают порядок установки на ноутбук фрейм- ворка Spark в базовой конфигурации и демонстрируют, чего можно достичь с его помощью. После установки и знакомства с некоторыми возможностями мы погрузимся в командную оболочку Spark – инструмент, очень удобный для разработки и прототипирования. В последующих главах подробно обсуждаются программный интерфейс Spark, порядок выполнения приложений в кластерах и высокоуровневые библиотеки, доступные в Spark (такие как Spark SQL и MLlib). Книги поддержки Исследователям, не имеющим опыта использования Python, отличным введением в этот язык программирования могут послужить книги « Learning Python»1 и «Head First Python» (обе выпущены издательством O’Reilly). Имеющим некоторый опыт программирования на Python, но желающим изучить его глубже можно порекомендовать книгу «Dive into Python» (Apress). Инженерам-программистам, а также всем, кто прочтет эту книгу, для расширения познаний в области обработки данных мы рекомендуем книги «Machine Learning for Hackers» и «Doing Data Science» (обе выпущены издательством O’Reilly). Эта книга написана языком, доступным для начинающих. В дальнейшем мы предполагаем написать более подробную книгу для тех, кто пожелает глубже вникнуть во внутреннее устройство Spark. Типографские соглашения В этой книге приняты следующие типографские соглашения: Курсив Используется для обозначения новых терминов, адресов электронной почты, имен файлов и расширений имен файлов. Моноширинный шрифт Применяется для оформления листингов программ и программных элементов внутри обычного текста, таких как имена перемен- 1 Лутц М. Изучаем Python. 4-е изд. М.: Символ-Плюс, 2010. ISBN: 978-5- 93286-159-2. – Прим. перев.
Вступление ных и функций, типов данных, переменных окружения, инструкций и ключевых слов. Моноширинный жирный Обозначает команды или другой текст, который должен вводиться пользователем. Моноширинный курсив Обозначает текст, который должен замещаться фактическими значениями, вводимыми пользователем или определяемыми из контекста. Так обозначаются советы, предложения и примечания общего характера. Так обозначаются предупреждения и предостережения. Использование программного кода примеров Все примеры программного кода, что приводятся в этой книге, доступны в репозитории GitHub. Их можно получить по адресу: https:// github.com/databricks/learning-spark. Примеры кода написаны на языках Java, Scala и Python. Примеры на языке Java написаны для выполнения под управлением Java 6 и выше. В Java 8 появилась поддержка лямбда-выражений, облегчающих создание встраиваемых (inline) функций, благодаря чему код, использующий фреймворк Spark, получается намного более простым. Мы решили не использовать этот синтаксис в основных примерах, поскольку версия Java 8 пока не получила широкого распространения. Если вам интересно будет попробовать синтаксис Java 8, прочитайте статью в блоге Databricks1. Некоторые из примеров мы переписали на Java 8 и сохранили в репозитории GitHub. Данная книга призвана оказать вам помощь в решении ваших задач. Вы можете свободно использовать примеры программного кода из этой книги в своих приложениях и в документации. Вам не нужно обращаться в издательство за разрешением, если вы не собираетесь воспроизводить существенные части программного кода. Например, если вы разрабатываете программу и используете в ней несколько отрывков программного кода из книги, вам не нужно обращаться за 1 http://bit.ly/1ywZBs4.
Вступление 15 разрешением. Однако в случае продажи или распространения компакт- дисков с примерами из этой книги вам необходимо получить разрешение от издательства O’Reilly. Если вы отвечаете на вопросы, цитируя данную книгу или примеры из нее, получение разрешения не требуется. Но при включении существенных объемов программного кода примеров из этой книги в вашу документацию необходимо получить разрешение издательства. Мы приветствуем, но не требуем добавлять ссылку на первоисточник при цитировании. Под ссылкой на первоисточник мы подразумеваем указание авторов, издательства и ISBN. Например: «Learning Spark by Holden Karau, Andy Konwinski, Patrick Wendell, and Matei Zaharia (O’Reilly). Copyright 2015 Databricks, 978-1-449-35862-4». За получением разрешения на использование значительных объемов программного кода примеров из этой книги обращайтесь по адресу permissions@oreilly.com. Safari® Books Online Safari Books Online (http://www.safaribooksonline.com) – это виртуальная библиотека, содержащая авторитетную информацию1 в виде книг и видеоматериалов, созданных ведущими специалистами в области технологий и бизнеса. Профессионалы в области технологии, разработчики программного обеспечения, веб-дизайнеры, а также бизнесмены и творческие работники используют Safari Books Online как основной источник информации для проведения исследований, решения проблем, обучения и подготовки к сертификационным испытаниям. Библиотека Safari Books Online предлагает широкий выбор продуктов и тарифов2 для организаций3, правительственных4 и учебных5 учреждений, а также физических лиц. Подписчики имеют доступ к поисковой базе данных, содержащей информацию о тысячах книг, видеоматериалов и рукописей от таких издателей, как O’Reilly Media, Prentice Hall Professional, Addison- Wesly Professional, Microsoft Press, Sams, Que, Peachpit Press, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, 1 https://www.safaribooksonline.com/explore/. 2 https://www.safaribooksonline.com/pricing/. 3 https://www.safaribooksonline.com/enterprise/. 4 https://www.safaribooksonline.com/government/. 5 https://www.safaribooksonline.com/academic-public-library/.
Доступ онлайн
В корзину