S3 Flashcards

(54 cards)

1
Q

Что такое S3?

A

Simple Storage Service.
Amazon S3 — это полностью управляемое, масштабируемое объектное хранилище данных, предназначенное для хранения и доступа к данным через HTTP API.

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

Как хранятся данные в S3?

A

Данные в S3 хранятся в виде объектов, которые размещаются в бакетах.

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

Какую надежность обеспечивает S3?

A

Amazon S3 обеспечивает 11 девяток долговечности (99.999999999%) и высокую доступность, так как данные автоматически реплицируются между несколькими Availability Zones внутри региона.

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

Какие преимущества S3 имеет по сравнению с hdfs?

A

S3:
- Облачное объектное хранилище
- Высокая долговечность и отказоустойчивость
- Не требует администрирования и поддержки инфраструктуры
- Хорошо подходит для cold и warm данных
- Отлично интегрируется с cloud-сервисами (Athena, EMR, Glue, Spark)

HDFS:
- Распределённая файловая система
- Оптимизирована для high throughput batch-обработки
- Требует администрирования (репликация, NameNode, DataNode)

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

Как могут хранится данные?

A

1️⃣ Блочное хранилище
- Низкоуровневый доступ к блокам
- Используется для БД и VM

2️⃣ Файловое хранилище / файловые системы
- HDFS
- Работают с файлами и директориями
- Могут использовать блоки внутри

3️⃣ Объектное хранилище
- S3
- Объекты + метаданные
- Нет иерархии ФС

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

Multipart upload включается автоматически?

A

Нет, multipart upload не включается автоматически на стороне S3.
Его нужно явно инициализировать через API или SDK, например:
- CreateMultipartUpload — инициирует процесс
- UploadPart — загружает части
- CompleteMultipartUpload — собирает части в объект

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

Что такое multipart upload?

A

Multipart upload — это механизм S3, позволяющий разбивать большой объект на части и загружать их параллельно или по частям.
Преимущества:
- ускоренная загрузка больших файлов
- возможность возобновить загрузку только недозагруженных частей после сбоя
- уменьшение времени ожидания и сетевых ошибок при больших файлах

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

Что произойдет, если мы захотим загрузить файл размером больше 5 Тб?

A

Если попытаться загрузить объект >5 ТБ, S3 вернёт ошибку, так как это превышает лимит.
Чтобы решить проблему, нужно разбить данные на части на уровне приложения и загружать их отдельными объектами или использовать multipart upload для файлов <5 ТБ.
В Spark это можно сделать через repartition или coalesce перед записью в S3.

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

Какой максимальный размер объекта?

A

5 Tb

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

Что такое объекты?

A

> Объект в S3 — это единица хранения данных, которая состоит из:
- Ключ (Key) — уникальный идентификатор объекта внутри бакета (bucket + key + version (если есть))
- Данные (Data / Body) — содержимое объекта
- Метаданные (Metadata) — информация о файле (Content-Type, size и т.д.)
- Версия (VersionId) — присваивается, если включено versioning

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

Какие есть ограничения в multipart upload?

A

Минимальный размер части - 5 Mb
Максимальный размер части - 5 Gb
Максимальное количество частей - 10_000
Максимальный размер объекта в сумме - 5 Tb

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

Можно ли изменять объект?

A

Нет, он immutable. Дописывать или изменять объект нельзя, только удалить и создать новый.

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

Почему некоторые операции к примеру rename намного быстрее в hdfs, чем в s3?

A

rename в hdfs - это изменение метаданных
rename в s3 - это копирование данных в объект с новым именем

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

Что такое bucket и для чего они нужны?

A

Bucket — это контейнер для объектов в S3, который имеет глобально уникальное имя и привязан к конкретному региону AWS.
Он используется для:
- организации и группировки объектов
- управления доступом (ACL, policies)
- включения версионирования и логирования
- настройки lifecycle и других правил управления данными

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

Почему объекты в s3 immutable?

A

Объекты в S3 неизменяемы, чтобы:
- исключить конфликты при параллельной записи и чтении
- упростить репликацию между регионами
- обеспечить масштабируемость и консистентность
- облегчить управление версиями объектов (versioning)

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

Что такое prefix?

A

Prefix — это часть ключа объекта в S3, которая используется как «виртуальная папка» для организации данных.
Пример: для объекта logs/2025/01/app.log префикс может быть logs/2025/01/.
S3 не имеет настоящих директорий, префиксы нужны для фильтрации и группировки объектов при list запросах.

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

Что за консистентность в s3?

A

Объясните модель консистентности?
Это гарантия того, что клиент сразу увидит актуальные данные после операций put/delete/list.

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

Виды консистентности в s3?

A

Eventual consistency - результат видно не сразу
Strong consistency - результат операций мы видим сразу

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

Какой вид консистентности в s3 сейчас?

A

До декабря 2020 года:
- PUT новых объектов — strong (видно сразу)
- Overwrite объектов / DELETE / LIST — eventual (может быть задержка)
С декабря 2020 года:
- S3 обеспечивает strong consistency для всех операций: PUT, overwrite, DELETE и LIST — все операции видны сразу после завершения.

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

Почему сразу было не сделать strong consistency?

A

s3 существует с 2006 года и раньше strong consistency было сложно реализовать, но с развитием технологий появились такие возможности

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

Как добиться strong consistency в s3?

A

Сейчас этот вопрос не актуальный, т.к. после 2020 у нас всегда strong consistency. Но если работаем со старым s3.
Операция put всегда strong consistency, значит нужно отталкиваться от нее:
1) Вместо перезаписи файла создаем новый объект с уникальным ключом
2) Включить версионирование (при перезаписи старый объект не удаляется, а создается новый put)
3) Если работаем в spark, можно повторить операцию с задержкой (retries = 5, time.sleep())

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

Классы хранения и оптимизация стоимости?

A

1) Standart - частый доступ, подходит для hot данных (дорого)
2) Standart-IA (Infrequent Access) - для редко читаемых данных, которые нужно быстро получать (дешевле хранение, плата за каждый запрос)
3) S3 Intelligent-Tiering - для данных с непредсказумым доступом, способен сам переключать план хранения.
4) Glacier - архивный:
Instant - чуть дешевле Standart-IA, быстрый доступ
Flexible - хранение дешевое, получение данных 3-12 часов
Deep - хранение самое дешевое, получение данных 12-48 часов
5) One Zone-IA - дешевле, чем Standart-IA, но есть риск потерять данные

23
Q

Когда какой из классов хранения использовать?

A
  • Веб-сайты → Standard
    • Бэкапы → Standard-IA, One Zone-IA
    • Архивы → Glacier
    • Неизвестный паттерн → Intelligent-Tiering
24
Q

Что такое Lifecycle Policies?

A

Это инструмент оптимизации стоимости. Он позволяет переводить объекты между классами хранения для производительности, а также удалять объекты или их версии по истечению определенного срока.
Lifycecle настраивается на уровне бакетов и применяется к объектам за счет префиксов и тегов.
Также позволяет настроить автоматическое удаление incomplete multipart upload (когда файл большой > 5 Gb, то используется multipart upload. Если загрузка полностью не состоялась, но некоторые части сохранились, то они не видны в списке. Чтобы они не засоряли память, можно настроить автоудаление)

25
Какие минимальные сроки хранения для разных классов?
standart - нет standart-IA, onezone-IA - 30 дней glacier instant, flexible - 90 дней glacier deep - 180 дней Intelligent-Tiering — нет минимального срока
26
Что будет если мы удалим данные раньше минимального срока?
Деньги спишутся за мин период
27
Как работает версионирование в s3?
Версионирование в S3 позволяет хранить несколько версий одного объекта и защищает от случайных удалений и перезаписей. При **перезаписи объекта** создаётся новая версия. При **удалении объекта** создаётся **delete marker**, который делает объект невидимым при обычном `GET` и `LIST`. Чтобы восстановить объект, достаточно удалить delete marker. Минус версионирования — рост стоимости хранения, поэтому обычно настраивают **Lifecycle Policies** для удаления или архивирования старых версий.
28
Какие есть виды репликации в S3?
1) CRR (cross-region replication) - позволяет реплицировать данные между регионами 2) SRR (same-region replication) - реплицирует данные в одном регионе Репликация проходит асинхронно и требует включённого **versioning**
29
Зачем SRR, если есть CRR?
CRR используется для защиты от отказа региона и географического DR. SRR используется для compliance, защиты от логических ошибок и разделения данных внутри региона. В SRR можно применять **другие политики доступа, lifecycle и Object Lock**, а также **отключить репликацию delete marker**, что позволяет защитить реплику от случайных удалений или ransomware.
30
Что за delete marker и можно ли его реплицировать?
**Delete marker** — это специальная версия объекта, которая создаётся при удалении объекта в versioned-бакете. Он делает объект невидимым для обычных операций чтения и листинга, но физически данные остаются. **Delete marker может реплицироваться**, но это настраивается отдельно в правилах репликации (delete marker replication).
31
Почему реплицирование требует версионирования?
Без версионирования невозможно надёжно определить, какие именно изменения и в каком порядке нужно реплицировать.
32
Что за s3 transfer accelerator?
S3 Transfer Acceleration — это технология, которая ускоряет передачу данных в S3 и из S3 за счет использования глобальной сети Amazon CloudFront. Данные остаются в бакете, но пользователи загружают или скачивают их через ближайшие Edge Locations, что уменьшает задержки и увеличивает скорость.
33
Нужно ли дополнительно платить за transfer accelerator?
Да, это платная опция. Стоимость взымается за каждый переданный Gb
34
Есть ли у S3 проблемы с малыми файлами?
Да, большое количество маленьких файлов снижает производительность, так как требует больше put операций и запросов, а также создание большего числа объектов. S3 ориентирован на работу с большими файлами.
35
Какие есть решения проблемы с малыми файлами в S3?
1) Объединение малых файлов в файл побольше (parquet, orc) 2) Использование batch-записи (например, Spark coalesce/repartition) 3) Компакция данных (periodic compaction jobs)
36
Есть ли партицирование в S3?
В S3 нет встроенного физического партицирования. «Партиции» реализуются **через ключи объектов и префиксы**. Движки вроде Athena, Glue или Spark используют префиксы для чтения только нужных данных, что эмулирует партицирование и ускоряет обработку.
37
Приведи пример ключа и покажи его основные части?
`s3://my-bucket/reports/2026/01/report.csv` - **Bucket:** `my-bucket` - **Key:** `reports/2026/01/report.csv` - **VersionId:** `null` или `abcd1234` (если включён versioning) 💡 В S3 “папки” — это **часть ключа**. То есть `reports/2026/01/` — это **префикс**, который просто выглядит как директория.
38
Как эффективнее получать данные из больших файлов?
1) Использовать s3 select, который позволяет читать только нужные строки из файлов 2) Запросы через Athena - инструменты позволяют делать sql-запросы на прямую к данным в S3, как hive и hdfs. S3 Select хорошо для небольших выборок, Athena — для аналитики на больших объёмах.
39
Что за Request Rate и Performance?
S3 поддерживает **очень высокую нагрузку** (миллионы операций в секунду на бакет), но для **старых рекомендаций**: - **До 2018 года:** не более 3500 PUT/COPY/POST/DELETE и 5500 GET/HEAD на **префикс** - **Сейчас:** S3 масштабируется автоматически, но для экстремально высоких нагрузок всё равно полезно использовать **разделение префиксов** или **рандомизацию ключей**, чтобы избежать «hot prefix».
40
Как можно контролировать доступ и безопасность?
1) IAM Policies - настройки, которые позволяют контролировать права и доступ для отдельных пользователей и групп пользователей 2) Bucket Policies - политики, которые настраиваются на уровне бакета 3) VPC Endpoint - приватный канал, который позволяет получать данные не через интернет, а через AWS сеть 4) Presigned URL - возможность предоставить временный доступ к данным 5) ACL - устаревший контроль доступа
41
Какие есть виды шифрования в S3?
1) SSE-S3 - ключи S3. Просто, удобно и бесплатно 2) SSE-KMS - позволяет самим контролировать и управлять ключами (платно) 3) SSE-C - максимальный контроль, но и вся ответственность на нас. Если потеряем, то не сможем получить данные 4) Ну и шифрование на уровне передачи данных по сети
42
Что за Block Public Access?
Это набор из четырех флагов, который полностью блокирует публичный доступ к данным, вне зависимости от политик.
43
Предпочтительная структура папок в s3?
1) raw - сырые данные, источник истины. (json, csv, xml) 2) staging - уровень подготовки данных к аналитике. Очистка, обогащение, валидация, подготовка 3) curated - данные подготовленные к аналитике (parquet, orc)
44
Основные инструменты для S3?
1) Athena - позволяет производить запросы sql на прямую в s3 2) Glue - инструмент для работы с метаданными в s3 3) EMR (elastic map reduce) - отдельный кластер для работы с данными, подходит, если у нас сложная логика и athena не хватает. 4) **Redshift Spectrum** - athena на стеройдах (имеет возможность делать join)
45
С помощью чего реализуется real-time пайплайны в S3?
1) Lambda (s3 triggers) 2) Kinesis Data Firehose (потоковая служба доставки, позволяет быстро доставлять большие по объему потоки данных в real-time)
46
Как можно мигрировать существующие хранилища в s3?
- **Snowball** — когда слишком много данных для интернета (offline) - **DataSync** — автоматическая синхронизация через сеть (online, incremental) - **Storage Gateway** — гибридное решение для постепенной интеграции on-prem → cloud
47
Как мониторится и логируется S3?
1) Access logs - мониторинг доступа к данным 2) CloudTrail - мониторинг API вызовов, кто что сделал 3) Cost Explorer - позволяет отследить расходы 4) Storage lens - мониторинг использования s3 для оптимизации хранения и снижения стоимости 5) CloudWatch metrics - метрики производительности, которые позволяют устанавливать алерты и оповещения
48
Из чего складывается стоимость использования S3?
1) Хранение (per Gb) 2) Операции (put, get, list) 3) Перемещение данных 4) Аналитика, безопасность и репликация
49
Какие есть способы оптимизировать стоимость?
1) Выбор правильного класса хранения 2) Настройка lifecycle policies 3) Объединение мелких файлов 4) Мониторинг и исправление узких мест
50
Как объединение мелких файлов может снизить стоимость хранения? "Что делать с тысячами мелких файлов в S3?"
Объединение мелких файлов в более крупные объекты (Parquet/ORC/Avro) уменьшает количество операций GET/PUT, ускоряет аналитические запросы (Athena/Spark) и снижает стоимость хранения и обработки.
51
"Как настроить backup/DR стратегию на S3?"
1) Включить версионирование на всех бакетах 2) Настроить CRR-репликацию 3) Настроить LifeCycle policie 4) Периодически проверять восстановление 5) Настроить автоматический мониторинг и уведомление при сбое
52
У вас 10TB данных нужно загрузить в S3 из on-premise
- **Snowball** — для единовременной массовой загрузки (10 TB и больше) - **DataSync** — для регулярного переноса и синхронизации новых данных - **Storage Gateway** — для постепенной загрузки и гибридного доступа с локальной стороны
53
Costs на S3 выросли на 300% за месяц, как искать причину?
Используем Cost Explorer и S3 Storage Lens, чтобы определить бакеты и объёмы, вызвавшие рост расходов. Проверяем CloudTrail и Access Logs на частые операции или дублирующиеся объекты. Исправляем узкие места через оптимизацию Storage Class, lifecycle policies, исправление скриптов.
54
Как построить Data Lake на S3?
Определяем требования: надёжность, безопасность, частота доступа, объёмы, формат данных Структура хранения: raw → staging → curated (с префиксами для партиций) Безопасность и управление: versioning, lifecycle policies, шифрование, CRR/SRR, IAM/Bucket Policies Мониторинг и алерты: CloudWatch, Storage Lens, Cost Explorer Оптимизация для аналитики: форматы Parquet/ORC, партиции по времени, объединение мелких файлов