Кратко об остальном Flashcards

(14 cards)

1
Q

Data lake

A

Хранилище файлов или объектов. Обычно характеризуется низкой стоимостью хранения и высокой масштабируемостью, но малой гибкостью работы с данными.
Если хранилищем выступает Hadoop (HDFS), на логическом уровне полноценно взаимодействовать с партицией или файлом можно только целиком. Если нужно сделать апдейт, его нельзя сделать точечно. Вставка — в конец. Также могут использоваться S3-совместимые объектные хранилища.

Используется как слой накопления данных, хранения истории. Обработку и собственно анализ данных зачастую проводят в OLAP базах (в которые нужно ETL-процессами данные сначала скопировать) или в SQL-движках поверх HDFS вроде Hive, Impala, Trino. Сами данные часто хранят в Parquet’ах или Avro. В последние годы популярность набирает Delta формат (parquet + метаданные).

Если писать все данные без представления о том, когда, кто и как ими будет пользоваться, озеро может превратиться в болото (data swamp).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Parquet

A

Колоночный формат хранения больших данных. Эти данные лежат в сжатом виде, поэтому “в блокноте” его не открыть, нужно использовать например Apache Arrow пакет в Python.

Каждую колонку хранит отдельно, где данные часто повторяются, похожи или по крайней мере одного типа. Поэтому значения в ней хорошо сжимаются. Чтобы сжатие работало эффективнее, важно сортировать паркет при записи.

Также сортировка влияет на оптимизацию predicate pushdown. Если кратко, паркет делится на группы строк RowGroup и для каждой из них считает статистику: мин макс для чисел и дат, набор уникальных значений для строк. И если паркет отсортирован по колонке фильтрации, движок может быстро пропустить RowGroups, где искомого значения точно нет.

Помни, что отсортировать можно только по одной колонке ;)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Avro

A

Редкий сейчас формат, был популярен во времена зарождения хадупа. Он для больших данных и строковый.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

ORC

A

Редкий сейчас формат, был популярен во времена зарождения хадупа. Он для больших данных и колоночный.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Data lakehouse (hybrid)

A

Data lake + data warehouse. Данные хранятся в озере в виде iceberg, delta или hudi файлов. Эти форматы позволяют работать с файлами как с таблицами, через SQL.

Основная потребность в таких системах возникает, когда хранилище занимает больше 1 Пб (млн гигов), и тот же greenplum уже перестаёт справляться с нагрузкой.

В таком случае не нужно поддерживать отдельный сервис в виде DWH и копировать туда данные для обработки – слои хранятся в разных “директориях” озера. А получать доступ к данным можно через тот же Trino.

Витрины часто всё же копируют в Clickhouse для скорости доступа к данным.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Iceberg

A

Популярный формат работы с файлами как с таблицами для биг даты. Позволяет строить аналитику поверх Data Lake, получается Data Lakehouse. Выглядит как файлы метаданных рядом с самими данными (напр. json рядом с Parquet) + БД для работы каталога (вроде Hive Metastore, если знакомо).

Добавляет ACID, эволюцию схем, “перемещение во времени” (историчность), SQL-доступ к данным, объединение мелких файлов (compaction).

Hudi и Delta похожи на Iceberg и выполняют по сути те же функции, но чуть лучше оптимизированы под разные сценарии.

Iceberg заточен под батчевую аналитику больших объёмов (Петабайты данных).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Hudi

A

Тоже формат работы с файлами как с таблицами, лучше всего подходит для стриминга

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Delta

A

Тоже формат работы с файлами как с таблицами, что-то среднее между айсбергом и худи. Является опенсорсной частью платформы Databricks (который по сути спарк + data lakehouse на delta таблицах)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Trino

A

Федеративный движков запросов, который умеет подключаться к разнородным источникам через коннекторы, забирать данные и объединять их прозрачно для пользователей.

Trino (ранее — Presto) — это распределённый (MPP) SQL движок для аналитики больших данных. Хорошо оптимизирован как под on-premise развёртывание, так и под облачные решения, масштабируется до петабайтов данных и больше. В качестве источников могут быть объектные и файловые хранилища (н. S3, HDFS), транзакционные базы (н. MySQL, PostgreSQL, Oracle), NoSQL (н. MongoDB, Cassandra, HBase), OLAP-базы и много-много чего ещё (https://trino.io/ecosystem/data-source). Позволяет джойнить в одном запросе данные из разных систем и СУБД – например историю из HDFS, текущие метрики из greenplum, справочники из postgres.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

DBT

A

Это инструмент для описания трансформаций средствами СУБД (системой управления баз данных) и упорядочивания объектов, которые создаются в базе.

Буква “Т” в ELT (extract, load, transform). Внешним инструментом (например, Spark, dlt, python скриптами) нужно загрузить данные в сыром виде в staging/landing zone (обычно схема/каталог, первый слой данных), и эстафета передаётся dbt – вплоть до построения витрин данных и даже метрик для BI.

В современных СУБД вроде Greenplum, Clickhouse, (и облачных AWS Redshift, GCP BigQuery, Azure Synapse) вычислительных мощностей хватает для обработки данных без необходимости в Spark и подобных ETL инструментах.

Можно воспринимать dbt как развитие идеи хранимых процедур, применяется обычно для OLAP распределённых баз.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Data quality

A

Качество данных. Можно реализовать на чём угодно, но хотят чтобы был навык с инструментами вроде Great Expectations (опенсорс пакет для Python и/или dbt) или Monte Carlo (лучше и удобнее, но платный).

Важно, чтобы данным доверяли. Иначе можно кучу ресурсов потратить на разработку и обработку, а таблицами и дашбордами не будут пользоваться, потому что там какая-то каша.

Чем больше проверок близко к точке создания (загрузке из источника, применению бизнес-правил на витринах), тем меньше мусора будет распространяться по другим слоям и продуктам ниже по течению.

Основные проверки:
* количество строк (сколько забрали, столько положили)
* not null поля
* отсутствие дубликатов
* тип данных совпадает с ожидаемым
* формат дат верный
* логически верные данные (дата рождения - в прошлом, зарплаты неотрицательные и пр.)
* колонки правильно смаплены и названы (в Имени - Имя, в дате рождения - дата рождения и тд.)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Debezium(CDC)

A

Change data capture (CDC) это технология захвата изменений данных с источника, для реляционных СУБД — обычно через лог базы данных. В таком случае таблица не блокируется, нагружается именно компонент, отвечающий за репликацию. В отличие от батч загрузок, которые запускаются по расписанию и теряют промежуточные изменения, CDC подтягивает все операции. Это хорошо, если такая детализация нужна. Это головная боль, если надо схлопывать эти изменения и сохранять только состояние, например, на закрытие операционного дня.

CDC создаёт поток изменений, который можно использовать для стриминговой загрузки.

Debezium это опен-сорс коннектор к различным источникам данных. Выгружает данные из Х в кафку. Из кафки нужно забирать другими инструментами, Debezium делает исключительно Load.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Streaming (Spark streaming, Flink, Kafka)

A

Требуется меньше чем в 10% проектах, это когда задержка доставки данных стремится к нулю и стараются каждое событие обработать и передать отдельно.

Усложняет разработку и отладку системы, удорожает проект, поэтому не так часто ставится как требование.

Можно пошутить про то, что “риалтайм” во всех компаниях разный, и появление данных в реальном времени невозможно и почти никогда не нужно.

Если компания отслеживает перевозки товаров грузовиками, +-5 минут обычно не критичны. Для системы доставки еды или такси риалтайм это десяток секунд. А для высокочастотной торговли на бирже выигранные миллисекунды могут стать конкурентным преимуществом для всей компании.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

S3

A

Изначально – сервис объектного хранения данных от Amazon Web Services (AWS). Его любят разработчики за дешевизну (2 цента в месяц за 1GB) и интеграции с почти любым сервисом, языком разработки и пр. В общем, стандарт для записи и чтения данных в мире “облаков”.

Сейчас S3 это скорее интерфейс доступа к данным и правила их организации. В общем – протокол взаимодействия, и корректно будет назвать Azure ADLS, GCS, Yandex object storage и прочие – s3-совместимые хранилища.

Локально и на on-premise инфре можно развернуть в виде сервиса MinIO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly