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

Дмитрий Павлов «Greenplum: Быстро, параллельно, консистентно»

Дмитрий Павлов «Greenplum: Быстро, параллельно, консистентно»

Greenplum — ведущая массивно-параллельная СУБД с открытым исходным кодом. Горизонтальная расширяемость до десятков петабайт, понятный пользователям синтаксис ANSI SQL, транзакционность, совместимость с PostgreSQL, возможность обучать и применять модели машинного обучения — всё это сделало «зелёную сливу» популярнейшим решением для масштабных аналитических систем и в небольших стартапах, и в огромных корпорациях.

В докладе я детально расскажу про устройство СУБД, архитектуру, консистентность, резервирование и шардирование. А также затрону темы:

Параллельная транзакционная интеграция с другими кластерными системами
Использование ML-моделей как SQL-функций в распределенной СУБД
Разграничение ресурсов в аналитической СУБД
Компрессия — почему это так важно в аналитике
Какие дистрибутивы СУБД Greenplum доступны для использования в России

Ceecdee9ee77b63d81100be62b7e1090?s=128

DotNetRu

July 10, 2020
Tweet

Transcript

  1. Современная аналитика с ACID, ANSI SQL и open source Greenplum

    Быстро Параллельно Консистентно
  2. • 2009-2013: Эксплуатация MPI-кластеров в НИИ, первые GPU-кластера (нет, не

    bitcoin) • 2013-2017: Внедрение и эксплуатация DWH на Greenplum, SAS, Hadoop в Тинькофф • 2017 – н. в.: Product Owner в Arenadata.io Обо мне
  3. CPU 1 CPU 3 CPU 2 CPU N RAM ROM

    CPU 1 RAM ROM CPU 1 RAM ROM CPU 1 RAM ROM CPU 1 RAM ROM SMP (symmetric multiprocessing) Shared-nothing MPP (massive parallel processing) Горизонтальная масштабируемость Линейный рост производительности Отказоустойчивость
  4. Host_1 Segment_1 Mirror_7 Segment_2 Mirror_8 Segment_3 Segment_4 Mirror_5 Mirror_6 Host_2

    Segment_5 Mirror_11 Segment_6 Mirror_12 Segment_7 Segment_8 Mirror_9 Mirror_10 Host_N Segment_ (N*4 – 3) Mirror_3 Segment_ (N*4 – 2) Mirror_4 Segment_ (N*4 – 1) Segment_ (N*4) Mirror_1 Mirror_2 Master Master host S_master Secondary master host Interconnect network (or multiple networks) … …
  5. ✓ Сложные запросы, обрабатывающие большие объёмы (в т.ч. сложные аналитические

    функции и т.д.) ✓ ETL/ELT ✓ Эффективное соединение больших таблиц ✓ Работа с индексами ✓ Data Science ✓ Аналитические функции на PL ✓ Ad-hoc аналитика Лучше всего справляется с:
  6. Интеграция • Работает со всем ПО, умеющим работать с PostgreSQL

    • Поддерживает работу с PostgreSQL-клиентами (JDBC, ODBC, psql, etc) • Полная поддержка Postgres ANSI-SQL:2008
  7. Platform eXtension Framework - PXF PXF Core Greenplum Segment Greenplum

    Segment Greenplum Segment Greenplum Segment HDFS Hive JDBC Other plugins Greenplum Segment Server
  8. Federative Queries GP Segment GP Segment GP Segment GP Segment

  9. CREATE EXTERNAL TABLE public.ora_ext( id int, text text ) LOCATION

    ('pxf://ora_schema.ora_table? PROFILE=JDBC &JDBC_DRIVER=oracle.jdbc.driver.OracleDriver &DB_URL=jdbc:oracle:thin:@//ora_host:1521/XE &USER=ora_user &PASS=mypassword &PARTITION_BY=id:int &RANGE=1:1000000 &INTERVAL=10000’) FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
  10. Historical data (Years) slow HDD Actual data (months) regular HDD

    Now data (hours) SSD Single table • Одна таблица может содержать несколько партиций • Партиции могут находиться на разных устройствах, быть разного типа, сжатия и т.д. Партиционирование
  11. Date User_id Message 21-01-2018 16 <message> 01-11-2018 500 <message> 15-05-2018

    2042 <message> 17-09-2017 15 <message> 15-06-2016 55 <message> 24-12-2015 3510 <message> 01-01-2012 19 <message> 26-04-2013 42 <message> 23-05-2010 17 <message> Other DB external table Latency: milliseconds Cost per GB: $$$ Hadoop external table Latency: tens of seconds Cost per GB: $ Regular ADB table Latency: seconds Cost per GB: $$ … where Date > 20-01-2018 … partition by Date ( partition1: Date => 01-01-2018 partition2: Date < 01-01-2018 and Date => 01-01-2015 partition3: Date < 01-01-2015 ) … where Date < 16-06-2016 … where Date > 16-06-2017 AND User_id < 400 Pushdown Partition filter Pushdown filter Executed in external system
  12. None
  13. -- The function takes review text as an argument --

    And returns its predicted rating create or replace function yelp_test_model(review text) returns int as $$ import string from nltk.corpus import stopwords from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.externals import joblib vocab_file='/tmp/vocab_file.sav' model_file='/tmp/model_file.sav' def text_process(text): nopunc = [char for char in text if char not in string.punctuation] nopunc = ''.join(nopunc) return [word for word in nopunc.split() if word.lower() not in stopwords.words('english')] nb=joblib.load(model_file) vocabulary=joblib.load(vocab_file) r_review = CountVectorizer(analyzer=text_process,vocabulary=vocabulary).transform([review]) -- return(nb.predict(r_review)[0]) $$ language plpythonu; -- Running the function to compare the real result -- with the predicted value for ten random reviews select yelp_test_model(text),stars from yelp limit 10
  14. Seg_1 Seg_2 Segment function Segment function Master Master function Final

    function
  15. None
  16. Host_1 Segment_1 Mirror_7 Segment_2 Mirror_8 Segment_3 Segment_4 Mirror_5 Mirror_6 Host_2

    Segment_5 Mirror_11 Segment_6 Mirror_12 Segment_7 Segment_8 Mirror_9 Mirror_10 Host_N Segment_ (N*4 – 3) Mirror_3 Segment_ (N*4 – 2) Mirror_4 Segment_ (N*4 – 1) Segment_ (N*4) Mirror_1 Mirror_2 Master Master host S_master Secondary master host Interconnect network (or multiple networks) … …
  17. Predictive Modeling Library Linear Systems • Sparse and Dense Solvers

    Matrix Factorization • Singular Value Decomposition (SVD) Generalized Linear Models • Linear Regression • Logistic Regression • MultinomialLogisticRegression • Cox ProportionalHazards • Regression • ElasticNet Regularization • Sandwich Estimators (Huber white, clustered, marginal effects) Machine Learning Algorithms • ARIMA • Principal Component Analysis (PCA) • Association Rules (Affinity Analysis, Market Basket) • Topic Modeling (Parallel LDA) • Decision Trees • Ensemble Learners (Random Forests) • Support Vector Machines • Conditional Random Field (CRF) • Clustering (K-means) • Cross Validation Descriptive Statistics Sketch-based Estimators • CountMin (Cormode-Muthukrishnan) • FM (Flajolet-Martin) • MFV (Most Frequent Values) Correlation Summary Support Modules Array Operations Sparse Vectors Random Sampling Probability Functions
  18. Segment_1 Mirror_7 Segment_2 Mirror_8 Segment_3 Segment_4 Mirror_5 Mirror_6 Segment_5 Mirror_11

    Segment_6 Mirror_12 Segment_7 Segment_8 Mirror_9 Mirror_10 Segment_ (N*4 – 3) Mirror_3 Segment_ (N*4 – 2) Mirror_4 Segment_ (N*4 – 1) Segment_ (N*4) Mirror_1 Mirror_2 Master Master host S_master Secondary master host Interconnect network (or multiple networks) … …
  19. SELECT madlib.madlib_keras_fit('iris_train_packed', -- source table 'iris_model', -- model output table

    'model_arch_library’, -- model arch table 1, -- model arch id $$ loss='categorical_crossentropy’, optimizer='adam’, metrics=['accuracy'] $$, -- compile_params $$ batch_size=5, epochs=3 $$, -- fit_params 10 -- num_iterations ,2 -- GPU num ); SELECT madlib.madlib_keras_predict('iris_model’, -- model 'iris_test’, -- test_table 'id’, -- id column 'attributes’, -- independent var 'iris_predict’ -- output table ,'response’ -- output type ,2 -- GPU num );
  20. Управление ресурсами Ресурсы задаются на: • Пользователя/группу • Сессию •

    Конкретный запрос Ограничиваемые ресурсы: • CPU • RAM • Cost • Disk Space (per role and per schema) • Конкурентность • Ресурсы контейнеров • Жесткая привязка ядер к пользователям ALTER RESOURCE GROUP rgroup1 SET CONCURRENCY 13 ALTER RESOURCE GROUP rgroup2 SET CPU_RATE_LIMIT 45 ALTER RESOURCE GROUP rgroup3 SET MEMORY_LIMIT 30 ALTER RESOURCE GROUP rgroup4 SET MEMORY_SPILL_RATIO 25
  21. Компрессия Можно сжимать: • Таблицу • Колонки Для каждой сущности

    на выбор: • Тип компрессии – ZSTD, ZLIB, RLE • Уровень компрессии CREATE TABLE example ( c1 int ENCODING (compresstype=zlib), c2 char ENCODING (compresstype=zstd, compresslevel=9), c3 char ENCODING (compresstype=RLE_TYPE), c4 char ) WITH (appendonly=true, orientation=column)
  22. Средства безопасности Ролевая модель RBAC сообразно PostgreSQL: • Группы и

    роли • Права на объекты • Наследование • LDAP • Возможен SSL Дополнительно с помощью VIEW и FUNCTION: • ROW-level security • COLUMN-level security -- Запретить пользователю работать по воскресениям: ALTER ROLE user DENY DAY 'Sunday';
  23. Бекапы • Бекапы выполняются параллельно • Бекапы сжимаются • Инкрементальный

    бекап по партициям • Несколько утилит бекапа с разными принципами работы • Возможны бинарные бекапы gpbackup -dbname demo -with-stats -backupdir /home/gpadmin/backup
  24. Схема хранения данных ADB выполняет эффективные локальные джойны, поэтому эффективными

    будут схемы: • Звезда • Снежинка • Data Vault и т. д. Составляющие хорошей производительности: • Правильные ключи распределения • Колоночное хранение со сжатием • Партиционирование
  25. Version comparison Фича OS ADB CE ADB EE P Core

    DB + + + + ZSTD + + + - PXF Predicate Pushdown +/- + + +/- Коннектор ADS -> ADB - - + + Коннектор ADB -> ADQM - - + - Коннектор ADB <-> Hadoop + + + + Коннектор ADB <-> JDBC + + + + Jsonb + + + + Command Center (ADCC, running queries monitoring, resource management, etc) - - + + Expansion wizard - + + - Offline installation - - + - Monitoring & Alerting - + + - Deploy and upgrade automation - + + - Backup store system - - Q4 2020 - Advanced DBA RBAC control (for ADCM, ADCC and backups) - - + - Education trainings - + + English
  26. Обучение DBA, разработчиков и аналитиков • Даём опыт реальной эксплуатации

    СУБД в Enterprise-среде • Рассматриваем не только ядро СУБД, но и всю экосистему: ❑ Мониторинг ❑ Расширения ❑ Интеграция ❑ Лучшие практики по загрузке данных • Каждая тема осваивается на практике в лабораторной работе • По окончании обучения проводится сертификация
  27. GP users

  28. Community bit.ly/2Gc8PUT