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

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

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

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

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

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

DotNetRu

July 10, 2020
Tweet

More Decks by DotNetRu

Other Decks in Technology

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. 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');
  9. Historical data (Years) slow HDD Actual data (months) regular HDD

    Now data (hours) SSD Single table • Одна таблица может содержать несколько партиций • Партиции могут находиться на разных устройствах, быть разного типа, сжатия и т.д. Партиционирование
  10. 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
  11. -- 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
  12. 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) … …
  13. 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
  14. 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) … …
  15. 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 );
  16. Управление ресурсами Ресурсы задаются на: • Пользователя/группу • Сессию •

    Конкретный запрос Ограничиваемые ресурсы: • 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
  17. Компрессия Можно сжимать: • Таблицу • Колонки Для каждой сущности

    на выбор: • Тип компрессии – 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)
  18. Средства безопасности Ролевая модель RBAC сообразно PostgreSQL: • Группы и

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

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

    будут схемы: • Звезда • Снежинка • Data Vault и т. д. Составляющие хорошей производительности: • Правильные ключи распределения • Колоночное хранение со сжатием • Партиционирование
  21. 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
  22. Обучение DBA, разработчиков и аналитиков • Даём опыт реальной эксплуатации

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