Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Доклад на Big Data Days 2020

Возможность предоставить данные data science коллегам для клинических исследований в цифровой ортодонтии и улучшения производства может быть непростой задачей, если в компании множество систем, созданных и интегрированных за более чем 20-летнюю историю работы компании. Предоставить учёным по данным, аналитикам и конечным пользователям необходимую информацию из множества источников нужно с сохранением всех удобств существующей облачной базы данных с массивно-параллельной архитектурой, хранящей клинические данные/измерения 3D геометрии и телеметрию САПР Treat. Поскольку компания движется по пути работы с несколькими облачными провайдерами, то и решение должно быть переносимое и работать как в облаке, так и в собственном ЦОД компании. В докладе сконцентрируюсь на реляционных источниках данных, так как они составляют основной объем данных и дают наибольшую пользу сегодня. Dremio Open Source на основе Apache Arrow инструмент будущего для аналитики Больших Данных, который приносит нам ежедневную пользу сейчас, как система реплицирующая данные из различных источников в S3 хранилище в формате Apache Parquet. Пользователи выполняют запросы к этим данным унифицированно через Redshift Spectrum из Python, Jupyter Notebook, psql, ODBC/JDBC клиентов и Power BI.

Igor Suhorukov

November 25, 2020
Tweet

More Decks by Igor Suhorukov

Other Decks in Programming

Transcript

  1. Игорь Сухоруков Big Data Days 2020: Озеро данных в S3

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

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

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

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

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

    хранилище на основе Dremio OSS и Redshift Spectrum Компоненты Озера данных 11/25/2020 2010 DB Blue template 16
  16. Игорь Сухоруков 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" }
  17. Игорь Сухоруков 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 <?xml version="1.0"?> <configuration> <property> <name>fs.s3a.access.key</name> <description>AWS access key ID.</description> <value>???</value> </property> <property> <name>fs.s3a.secret.key</name> <description>AWS secret key.</description> <value>???</value> </property> </configuration>
  18. Игорь Сухоруков Big Data Days 2020: Озеро данных в S3

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

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

    хранилище на основе Dremio OSS и Redshift Spectrum NiFi процессор: пример конфигурации 11/25/2020 2010 DB Blue template 21
  21. Игорь Сухоруков 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% )
  22. Игорь Сухоруков 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%;
  23. Игорь Сухоруков 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/'
  24. Игорь Сухоруков 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
  25. Игорь Сухоруков 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
  26. Игорь Сухоруков 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
  27. Игорь Сухоруков 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
  28. Игорь Сухоруков 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
  29. Игорь Сухоруков Big Data Days 2020: Озеро данных в S3

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

    хранилище на основе Dremio OSS и Redshift Spectrum 11/25/2020 2010 DB Blue template 31