Slide 1

Slide 1 text

Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum

Slide 2

Slide 2 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Вся информация в этой презентации основана на моем личном мнении, основанном на личном опыте, знаниях и заблуждениях ;-) Не является официальной позицией работодателя и не истина в последней инстанции. Используя этот подход вы действуете на свой страх и риск и можете винить только себя… Личное мнение 11/25/2020 2010 DB Blue template 2

Slide 3

Slide 3 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Какие данные мы обрабатываем 11/25/2020 2010 DB Blue template 3 3D сканер iTero – один из источников. https://habr.com/company/aligntechnology/blog/283470/

Slide 4

Slide 4 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum «Слои» данных 11/25/2020 2010 DB Blue template 4 ● Сырые данные ● Data curation ● Песочницы

Slide 5

Slide 5 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Зачем нужно «озеро» ученым по данным? 11/25/2020 2010 DB Blue template 5 Не надо ждать разработки ETL процессов месяцами. Доступ к «сырым» данным других систем для обучения ML моделей. Проверка и дообучение ML моделей. Помощь в расследование инцидентов в других системах компании. Кросс-проверка исходных данных. Отчеты по клиническим данным и дополнительным мерам – без программирования на python, только SQL.

Slide 6

Slide 6 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Что было нужно? 11/25/2020 2010 DB Blue template 6 «Сырые данные» из различных систем, необходимые для обогащения клинических данных в MPP Redshift и доступные через тот же PG wire протокол и соединение. Аутентификация в Azure Active Directory. Источники: PostgreSQL, MSSQL, Azure Synapse Analytics SQL: внутреннее/внешнее соединение, предикаты, UNION, INTERSECT, EXCEPT Пакетный режим выгрузки данных устраивает. Возможность перенести решение в другое «облако».

Slide 7

Slide 7 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Ограничения 11/25/2020 2010 DB Blue template 7 ● Сохранить систему c AWS Redshift ● Использовать S3 хранилище в AWS,так как большая часть данных уже там. ● Отсутствие отдельного проекта, бюджета и ресурсов ● Минимум администрирования и разработки ● Невозможность покупки нового решения и тарификация только в AWS аккаунте. ● Ограниченность бюджета на стоимость хранения «сырых» данных в Redshift.

Slide 8

Slide 8 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Озера данных: языки запросов и типы данных 11/25/2020 2010 DB Blue template 8 Модель данных Язык запросов Реляционная SQL Внешние реляционные таблицы(CSV,Parquet,ORC,Avro) SQL Слабоструктурированная (JSON, XML, YAML) xQuery(XPath), JSONiq(JsonPath), SQL/JSON path language Графовая Cypher QL, Gremlin, SPARQL Двоичные данные Программы,скрипты ETL/MR

Slide 9

Slide 9 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum AWS Glue Apache Sqoop Apache NiFi / Apache Airflow Presto Databricks AWS Dremio OSS Альтернативы 11/25/2020 2010 DB Blue template 9

Slide 10

Slide 10 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio 11/25/2020 2010 DB Blue template 10 Распределенное решение для запроса к данным в формате parquet и JSON в S3, HDFS, ADLS Gen1/2, NAS.

Slide 11

Slide 11 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio 11/25/2020 2010 DB Blue template 11 Возможно установить в собственном ЦОД Можно использовать как сервис в Azure, AWS Почти все операции и настройки возможно выполнять через web UI Не буду дублировать обучающие материалы, которых достаточно много, как и официальной документации, и сосредоточусь на задаче репликации данных в S3 в формате parquet.

Slide 12

Slide 12 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio 11/25/2020 2010 DB Blue template 12 ● Виртуализация данных из различных источников ● Data Reflections – отображает реляционные данные в parquet объект ● JDBC/ODBC драйвер и протокол реализованный с помощью Apache Calcite ● Использует библиотеку Apache Arrow для представление колоночных данных в памяти и выполнения операций над ними

Slide 13

Slide 13 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio. Источники данных 11/25/2020 2010 DB Blue template 13 Реляционные: ● PostgreSQL ● MySQL ● Oracle ● Microsoft SQL Server ● Amazon Redshift ● Teradata (Beta)

Slide 14

Slide 14 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio. Источники данных 11/25/2020 2010 DB Blue template 14 NoSQL: ● Elasticsearch ● Amazon Elasticsearch Service ● Hive ● HBase ● MongoDB

Slide 15

Slide 15 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio. Подключение источника данных 11/25/2020 2010 DB Blue template 15 https://www.dremio.com/tutorials/high-performance-parallel-exports/

Slide 16

Slide 16 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Компоненты Озера данных 11/25/2020 2010 DB Blue template 16

Slide 17

Slide 17 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio. Запись parquet в S3 11/25/2020 2010 DB Blue template 17 /opt/dremio/conf/dremio.conf paths: { # the local path for dremio to store data. local: "/var/lib/dremio" # the distributed path Dremio data including job results, downloads, uploads, etc dist: "s3a://%YOUR_BUCKET%/pdfs-dl" }

Slide 18

Slide 18 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio. Настройки доступа к S3 11/25/2020 2010 DB Blue template 18 /opt/dremio/conf/core-site.xml fs.s3a.access.key AWS access key ID. ??? fs.s3a.secret.key AWS secret key. ???

Slide 19

Slide 19 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Оркестрация компонент из NiFi 11/25/2020 2010 DB Blue template 19

Slide 20

Slide 20 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum NiFi процессор 11/25/2020 2010 DB Blue template 20

Slide 21

Slide 21 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum NiFi процессор: пример конфигурации 11/25/2020 2010 DB Blue template 21

Slide 22

Slide 22 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio 11/25/2020 2010 DB Blue template 22 ALTER DATASET "%DATASET_NAME%" CREATE RAW REFLECTION "%NAME%" USING DISPLAY( %COLUMN_LIST% )

Slide 23

Slide 23 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Redshift Spectrum 11/25/2020 2010 DB Blue template 23 create external schema %EXT_SCHEMA% from data catalog database '%EXT_DB%' iam_role 'arn:aws:iam::%ID%:role/%GLUE_ROLE%' create external database if not exists; GRANT USAGE ON SCHEMA %SCHEMA% to group %USER_GROUP%;

Slide 24

Slide 24 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Redshift Spectrum 11/25/2020 2010 DB Blue template 24 SVV_EXTERNAL_TABLES – внешние таблицы create external table %TABLE_NAME% STORED AS PARQUET LOCATION '%s3path_0/' select location from SVV_EXTERNAL_TABLES where schemaname=? and tablename=? alter table %TABLE_NAME% set location '%s3path_0/'

Slide 25

Slide 25 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Метаданные выгрузок в Dremio 11/25/2020 2010 DB Blue template 25 select r.name, r.status, m.state, m.failure_msg, m.reflection_id, m.materialization_id, m."create",m.bytes,m.last_refresh_from_pds from sys.reflections r inner join sys.materializations m on r.reflection_id=m.reflection_id s3_path= %BASE_PATH%+"/"+reflectionId +"/" +materializationId

Slide 26

Slide 26 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Azure Synapse Analytics и Service principal 11/25/2020 2010 DB Blue template 26 Собственная версия «подхаченного» mssql jdbc драйвера, так как заморский директор из BI наотрез отказался выдавать аутентификацию по user/password. https://github.com/microsoft/mssql-jdbc Метаданные и список таблиц их Synapse Analytics не поддерживаются. Данные доступны только через External Queries

Slide 27

Slide 27 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Проблемы с которыми столкнулись в Dremio 11/25/2020 2010 DB Blue template 27 ● Отсутствие External Queries в 2019 году и поддержки PG array type ● Ошибки в проприетарных коннекторах Dremio. ● Не ясно как open source сообщество участвует в разработке и багфиксах проекта на github. ● Сырой jdbc драйвер Dremio 3.x не поддерживал параметры в PreparedStatement ● Длительные транзакции к БД портала докторов вызывали замедление репликации Heroku Postgres и нотификации о проблемах. Уничтожение соединения в БД сервисом и проблемы в пуле соединений в Dremio. ● Не удалось настроить инкрементальные выгрузки через Dremio SQL DDL

Slide 28

Slide 28 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Проблемы с которыми столкнулись в RS Spectrum 11/25/2020 2010 DB Blue template 28 ● Биллинг по cost центрам и по группам пользователей не поддерживается в интерфейсе AWS ● Реальная цена запросов пользователей – сюрприз) Не возможно настраивать лимиты по группам и т.п. ● Невозможно выдавать доступ пользователям и группам на отдельные внешние таблицы и колонки, только на схему целиком. ● Невозможно запустить локально в интеграционных тестах. Нет docker образа Redshift/Redshift Spectrum. Технологией владеет только Amazon

Slide 29

Slide 29 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Дальнейшие возможные улучшения 11/25/2020 2010 DB Blue template 29 ● Инкрементальная выгрузка данных через SQL DDL ● Использование Dremio в виде сервиса. ● Использование Dremio вместо Redshift Spectrum как распределенного «движка» запросов к parquet файлам. ● Выбросить все что уже есть для экспорта данных в parquet и переписать с учетом накопленного опыта. ● Конвертация json, yaml, xml, csv данных в parquet

Slide 30

Slide 30 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum Dremio вместо Redshift Spectrum 11/25/2020 2010 DB Blue template 30

Slide 31

Slide 31 text

Игорь Сухоруков Big Data Days 2020: Озеро данных в S3 хранилище на основе Dremio OSS и Redshift Spectrum 11/25/2020 2010 DB Blue template 31

Slide 32

Slide 32 text

Спасибо! [email protected] github.com/igor-suhorukov https://www.linkedin.com/in/suhorukov/