Изучаем и используем Presto. Быстрый и надежный SQL-движок для анализа данных
Покупка
Новинка
Тематика:
Системы управления базами данных (СУБД)
Издательство:
ДМК Пресс
Перевод:
Комаров Владимир Иванович
Год издания: 2024
Кол-во страниц: 184
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное профессиональное образование
ISBN: 978-6-01810-343-8
Артикул: 856519.01.99
Данная книга посвящена Presto — распределенному SQL-движку с открытым исходным кодом. Авторы объясняют, как появилась эта платформа и чем она отличается от других инструментов хранения и обработки данных. Вы научитесь устанавливать и настраивать Presto, подключать его к различным источникам данных, а также использовать Presto как источник данных для построения отчетов и бизнес-аналитики. Кроме того, разберетесь с архитектурными концепциями и типичными сценариями использования Presto.
Издание предназначено аналитикам, архитекторам данных, администраторам и программистам, которые хотят научиться получать ценную информацию из разрозненных наборов данных.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Системы управления базами данных (СУБД)
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Анжелика Ло Дука, Тим Михан, Вивек Бхаратан и Ин Су Изучаем и используем Presto
Angelica Lo Duca, Tim Meehan, Vivek Bharathan, and Ying Su Learning and Operating Presto Fast, Reliable SQL for Data Analytics and Lakehouses Beijing • Boston • Farnham • Sebastopol • Tokyo
Анжелика Ло Дука, Тим Михан, Вивек Бхаратан и Ин Су Изучаем и используем Presto Быстрый и надежный SQL-движок для анализа данных 2024
УДК 004.65 ББК 32.972.134 Л68 Ло Дука А., Михан Т., Бхаратан В., Ин Су Л68 Изучаем и используем Presto / пер. с англ. В. И. Комарова. – М.: Book.kz, 2024. – 182 с.: ил. ISBN 978-6-01810-343-8 Данная книга посвящена Presto – распределенному SQL-движку с открытым исходным кодом. Авторы объясняют, как появилась эта платформа и чем она отличается от других инструментов хранения и обработки данных. Вы научитесь устанавливать и настраивать Presto, подключать его к различным источникам данных, а также использовать Presto как источник данных для построения отчетов и бизнес-аналитики. Кроме того, разберетесь с архитектурными концепциями и типичными сценариями использования Presto. Издание предназначено аналитикам, архитекторам данных, администраторам и программистам, которые хотят научиться получать ценную информацию из разрозненных наборов данных. УДК 004.65 ББК 32.972.134 Authorized Russian translation of the English edition of Learning and Operating Presto ISBN 9781098141851 © 2023 O’Reilly Media Inc. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.” Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-098-14185-1 (англ.) Copyright © 2023 O’Reilly Media Inc. ISBN 978-6-01810-343-8 (казах.) © Оформление, перевод на русский язык, издание, Books.kz, 2024
Содержание От издательства.........................................................................................................9 Предисловие.............................................................................................................10 Об авторах.................................................................................................................15 Колофон......................................................................................................................16 Глава 1. Введение в Presto...................................................................................17 Хранилища данных и озера данных .......................................................................18 Роль Presto в озере данных........................................................................................20 Происхождение и истоки архитектуры Presto........................................................21 Высокая производительность...............................................................................22 Масштабирование..................................................................................................23 Соответствие стандарту ANSI SQL.......................................................................23 Объединение данных.............................................................................................23 Запуск в облаке........................................................................................................25 Архитектура Presto и его ключевые компоненты..................................................25 Альтернативы Presto..................................................................................................26 Apache Impala..........................................................................................................27 Apache Hive..............................................................................................................27 Spark SQL..................................................................................................................27 Trino..........................................................................................................................27 Сценарии использования Presto...............................................................................28 Отчетность и информационные панели.............................................................28 Специальные (ad hoc) запросы.............................................................................28 Извлечение и загрузка данных с использованием SQL....................................28 Хранилище-озеро...................................................................................................29 Аналитика в реальном времени...........................................................................29 Введение в модельное хранилище...........................................................................30 Заключение..................................................................................................................31 Глава 2. Первые шаги в освоении Presto........................................................32 Установка Presto вручную..........................................................................................32 Запуск Presto в Docker................................................................................................32 Установка Docker.....................................................................................................33 Образ Presto.............................................................................................................33 Сборка и запуск Presto...........................................................................................39 «Песочница» для Presto..........................................................................................40
6 Содержание Развертывание Presto в Kubernetes..........................................................................40 Введение в Kubernetes............................................................................................41 Настройка Presto в Kubernetes..............................................................................41 Добавление каталога..............................................................................................46 Запуск приложения в Kubernetes.........................................................................47 Запросы к кластеру Presto.........................................................................................48 Список каталогов....................................................................................................48 Список схем.............................................................................................................49 Список таблиц.........................................................................................................49 Запрос к таблице.....................................................................................................50 Заключение..................................................................................................................52 Глава 3. Коннекторы...............................................................................................53 Концепция SPI (Service Provider Interface)..............................................................53 Архитектура коннектора...........................................................................................55 Популярные коннекторы...........................................................................................56 Thrift.........................................................................................................................56 Разработка коннектора..............................................................................................57 Предварительные требования..............................................................................58 Классы Plugin и Module..........................................................................................59 Конфигурация.........................................................................................................61 Метаданные.............................................................................................................63 Ввод-вывод..............................................................................................................65 Установка коннектора............................................................................................67 Apache Pinot.................................................................................................................68 Настройка и конфигурация Presto.......................................................................68 Запрос из Presto в Pinot.........................................................................................71 Заключение..................................................................................................................72 Глава 4. Подключение клиентов........................................................................73 Настройка окружения.................................................................................................73 Клиент Presto...........................................................................................................74 Docker-образ............................................................................................................74 Узел Kubernetes.......................................................................................................74 Подключение к Presto.................................................................................................76 REST API...................................................................................................................76 Python.......................................................................................................................77 R.................................................................................................................................78 JDBC...........................................................................................................................78 Node.js.......................................................................................................................79 ODBC.........................................................................................................................80 Прочие клиентские библиотеки для Presto........................................................81 Разработка клиентской информационной панели на Python.............................81 Настройка клиента.................................................................................................81 Разработка панели..................................................................................................83 Заключение..................................................................................................................86
Содержание 7 Глава 5. Open Data Lakehouse.............................................................................88 Появление хранилища-озера....................................................................................88 Архитектура хранилища-озера.................................................................................90 Озеро данных..............................................................................................................91 Система хранения...................................................................................................91 Форматы файлов.....................................................................................................91 Табличные форматы..............................................................................................92 Движок запросов.........................................................................................................94 Управление метаданными.........................................................................................94 Стратегическое управление данными.....................................................................95 Разграничение доступа к данным........................................................................96 Построение модельного хранилища-озера............................................................97 Настройка MinIO.....................................................................................................98 Настройка HMS......................................................................................................101 Настройка Spark....................................................................................................103 Регистрация таблиц Hudi в HMS.........................................................................104 Подключение Presto и выполнение запросов..................................................105 Заключение................................................................................................................108 Глава 6. Администрирование Presto...............................................................109 Введение в администрирование Presto.................................................................109 Конфигурирование...................................................................................................110 Конфигурационные файлы Presto......................................................................110 Настройки сеансов................................................................................................112 JVM..........................................................................................................................114 Мониторинг...............................................................................................................116 Консоль...................................................................................................................116 REST API.................................................................................................................118 Метрики мониторинга.........................................................................................120 Управление................................................................................................................122 Ресурсные группы.................................................................................................122 Верификатор.........................................................................................................125 Управление настройками сеансов.....................................................................128 Пространства имен функций..............................................................................129 Заключение................................................................................................................131 Глава 7. Безопасность Presto..............................................................................132 Введение в безопасность Presto..............................................................................132 Безопасность коммуникаций..................................................................................133 Шифрование..........................................................................................................133 Хранилище ключей..............................................................................................134 Настройка HTTPS/TLS..........................................................................................135 Аутентификация.......................................................................................................137 Аутентификация, основанная на файлах..........................................................137 LDAP........................................................................................................................139
8 Содержание Kerberos..................................................................................................................140 Создание нестандартного аутентификатора...................................................142 Авторизация..............................................................................................................143 Авторизация доступа к REST API.......................................................................143 Настройка управления доступом.......................................................................143 Авторизация при помощи Apache Ranger........................................................145 Заключение................................................................................................................146 Глава 8. Настройка производительности......................................................148 Введение в настройку производительности.........................................................148 Побудительные мотивы настройки производительности.............................149 Жизненный цикл настройки производительности........................................149 Модель выполнения запроса...................................................................................150 Подходы к настройке производительности Presto..............................................152 Выделение ресурсов.............................................................................................152 Система хранения данных..................................................................................154 Оптимизация запросов........................................................................................154 Aria Scan......................................................................................................................156 Сканирование таблицы........................................................................................156 Перераспределение задач...................................................................................157 Практическая настройка производительности....................................................157 Создание CSV-таблицы и загрузка в MinIO......................................................158 Преобразование CSV-таблицы в ORC................................................................159 Определение параметров настройки................................................................160 Нагрузочное тестирование..................................................................................160 Заключение................................................................................................................163 Глава 9. Масштабирование Presto...................................................................164 Введение в масштабирование.................................................................................164 Когда требуется масштабирование?..................................................................165 Часто возникающие проблемы...........................................................................165 Основные принципы................................................................................................166 Доступность...........................................................................................................167 Управляемость......................................................................................................168 Производительность............................................................................................169 Защита....................................................................................................................170 Настройка...............................................................................................................171 Как масштабировать Presto.....................................................................................172 Несколько координаторов...................................................................................172 Presto на Spark.......................................................................................................173 Подкачка................................................................................................................175 Использование облачных сервисов........................................................................176 Заключение................................................................................................................177 Предметный указатель........................................................................................178
От издательства Отзывы и пожелания Мы всегда рады отзывам наших читателей. Расскажите нам, что вы ду-маете об этой книге – что понравилось или, может быть, не понравилось. Отзывы важны для нас, чтобы выпускать книги, которые будут для вас максимально полезны. Вы можете написать отзыв на нашем сайте www.dmkpress.com, зайдя на страницу книги и оставив комментарий в разделе «Отзывы и рецензии». Также можно послать письмо главному редактору по адресу dmkpress@gmail. com; при этом укажите название книги в теме письма. Если вы являетесь экспертом в какой-либо области и заинтересованы в написании новой книги, заполните форму на нашем сайте по адресу http:// dmkpress.com/authors/publish_book/ или напишите в издательство по адресу dmkpress@gmail.com. Список опечаток Хотя мы приняли все возможные меры для того, чтобы обеспечить высокое качество наших текстов, ошибки все равно случаются. Если вы найдете ошибку в одной из наших книг, мы будем очень благодарны, если вы сообщите о ней главному редактору по адресу dmkpress@gmail.com. Сделав это, вы избавите других читателей от недопонимания и поможете нам улучшить последующие издания этой книги. Нарушение авторских прав Пиратство в интернете по-прежнему остается насущной проблемой. Издательство «ДМК Пресс» очень серьезно относится к вопросам защиты авторских прав и лицензирования. Если вы столкнетесь в интернете с незаконной публикацией какой-либо из наших книг, пожалуйста, пришлите нам ссылку на интернет-ресурс, чтобы мы могли применить санкции. Ссылку на подозрительные материалы можно прислать по адресу электронной почты dmkpress@gmail.com. Мы высоко ценим любую помощь по защите наших авторов, благодаря которой мы можем предоставлять вам качественные материалы.
Предисловие История хранилищ данных началась с того, что разработчики просто переносили данных из операционных баз данных в системы, более приспособленные для аналитики. Эксплуатация этих систем обходилась весьма недешево, и людям приходилось очень тщательно выбирать данные для загрузки. С годами требования к объему обрабатываемых данных росли, значительно опережая рост производительности оборудования, описанный законом Мура. Для традиционных аналитических систем анализ такого объема данных стал непосильной задачей. Рост требований коснулся всех, но некоторые компании столкнулись с проблемами роста раньше остальных. Facebook 1 стал одной из первых компаний, попытавшихся в 2012 году решить проблему производительности аналитических платформ. В то время в Facebook для интерактивной аналитики использовался Apache Hive. По мере роста объема данных выяснилось, что Hive не такой уж интерактивный, а попросту говоря – медленный. Во многом это связано с тем, что Hive является частью экосистемы Hadoop, где главным инструментом исполнения запросов является фреймворк MapReduce. Главный его недостаток в том, что он сохраняет промежуточные наборы данных на диске, что требует огромного объема ввода-вывода. Facebook разработал новый движок распределенных SQL-запросов – Presto, выполняющий промежуточные операции в памяти и не требующий дискового ввода-вывода для хранения временных данных. Такой подход позволил выполнять обработку данных на порядки быстрее: теперь многие запросы завершались в течение секунды. Пользователи – инженеры, менеджеры и аналитики – обнаружили, что анализ снова стал интерактивным и они могут выполнять множество запросов для проверки гипотез и создания графиков и диаграмм. Facebook был одной из первых, но далеко не единственной компанией, столкнувшейся с проблемой роста объемов данных, опережающего рост возможностей аппаратуры. Для решения этой проблемы была разработана архитектура «озера данных» (data lake), где обработка данных отделена от их хранения. Такая архитектура позволила хранить данные в распределенных файловых системах, построенных на базе дешевого оборудования, а поз1 Социальная сеть Facebook принадлежит компании Meta, признанной в России экстремистской организацией. Здесь и далее торговая марка Facebook употребляется исключительно в контексте созданных компанией технологий. – Прим. перев.