Mục tiêu học tập
- Nắm pipeline analytics chuẩn (Collect → Store → Process → Analyze → Visualize) và service tương ứng
- Phân biệt Kinesis Data Streams vs Data Firehose vs Managed Service for Apache Flink
- Hiểu Redshift, Glue, Athena, Lake Formation ở mức chọn-đúng-service theo scenario
1. Analytics Services Overview
2. Amazon Kinesis
Kinesis Services
KINESIS DATA STREAMS:
- Real-time data streaming
- 1-365 days retention
- Replay capability
- Consumers: Lambda, Managed Flink, KCL apps
AMAZON DATA FIREHOSE (cũ: Kinesis Data Firehose):
- Load data to destinations
- Near real-time (buffer 0–900 giây; zero buffering hỗ trợ từ Dec 2023)
- Destinations: S3, Redshift, OpenSearch, Splunk
- No data retention (pass-through)
- Lưu ý: AWS đã đổi tên từ "Kinesis Data Firehose" → "Amazon Data Firehose" (2024). Đề thi có thể dùng cả hai tên, kiến thức giữ nguyên.
AMAZON MANAGED SERVICE FOR APACHE FLINK
(tên cũ: Kinesis Data Analytics, đổi tên 08/2023):
- Apache Flink on streaming data
- Real-time analytics
- Lưu ý: loại SQL application cũ đã bị ngừng
(không tạo mới từ 10/2023; EOL đầu 2026) —
đáp án hiện hành cho stream processing là Flink
KINESIS VIDEO STREAMS:
- Stream video from devices
- ML integration
Kinesis Shards
1 Shard capacity:
- Read: 2 MB/s, 5 transactions/s
- Write: 1 MB/s, 1000 records/s
Scaling:
- Shard splitting (scale up)
- Shard merging (scale down)
3. Amazon Redshift
4. AWS Glue
5. Amazon Athena
Serverless SQL on S3:
- Pay per query ($5/TB scanned)
- Standard SQL (Presto)
- Integrates with Glue Data Catalog
Cost Optimization:
- Use columnar formats (Parquet, ORC)
- Partition data
- Compress data
Federated Query:
- Query across data sources
- RDS, DynamoDB, Redshift, on-prem
6. Lake Formation
7. AWS Batch
Managed batch computing: submit job dạng container, Batch tự lo provisioning, scheduling và scaling — không quản lý cluster tay.
Thành phần chính
Tính năng Professional-level
- Array jobs: fan-out 1 job definition thành hàng nghìn
child job (tối đa 10,000) — mỗi child nhận index riêng
(AWS_BATCH_JOB_ARRAY_INDEX), hợp xử lý per-file/per-shard
- Job dependencies: job B chạy sau khi job A SUCCEEDED
(dựng DAG đơn giản không cần Step Functions)
- Multi-node parallel jobs: 1 job trải nhiều EC2 instance
(HPC, distributed ML training) — không hỗ trợ Fargate/Spot
- Spot integration: CE dùng Spot (allocation strategy
SPOT_CAPACITY_OPTIMIZED) + retry strategy tự resubmit
khi bị reclaim → giảm ~70-90% chi phí batch
- Fargate: job nhỏ, khởi động nhanh, không quản lý AMI/EC2
Batch vs Lambda (vs EMR)
| Tiêu chí | Lambda | AWS Batch |
|---|---|---|
| Thời gian chạy | Tối đa 15 phút | Không giới hạn |
| Memory | Tối đa 10 GB | Theo instance (hàng trăm GB+) |
| Runtime | Runtime hạn chế (hoặc container ≤10GB) | Container bất kỳ |
| GPU / EBS | Không | Có (GPU instance, EBS volume) |
| Mô hình | Serverless hoàn toàn, event-driven | Managed infra, chạy trên EC2/Fargate |
| Chi phí | Per-invocation | EC2/Fargate (Spot rất rẻ) |
- So với EMR: EMR = managed big data framework (Spark/Hadoop/Hive) cho xử lý dữ liệu phân tán; Batch = chạy batch job container tuỳ ý không gắn framework nào.
Exam keywords
- "long-running batch jobs", "jobs > 15 minutes" (Lambda không đủ) → AWS Batch
- "GPU batch processing" (render, genomics, ML inference hàng loạt) → AWS Batch với GPU instance
- "cost-effective" cho batch chịu được gián đoạn → Batch + Spot + retry
Pattern điển hình
8. Câu hỏi ôn tập
-
Kinesis Data Streams khác Amazon Data Firehose như thế nào?
Xem đáp án
Data Streams: real-time (~ms), retention 1–365 ngày, replay được, consumer tự viết (Lambda, Managed Flink, KCL), phải quản lý shards (hoặc on-demand mode). Data Firehose: near real-time (buffer 0–900s), không retention (pass-through), fully managed load vào S3/Redshift/OpenSearch/Splunk, có transform bằng Lambda, zero admin. Keyword: "replay/multiple consumers/custom processing" → Streams; "load streaming data vào S3/Redshift với least operational overhead" → Firehose.
-
Service nào cho real-time stream processing hiện nay và tên cũ của nó?
Xem đáp án
Amazon Managed Service for Apache Flink — tên cũ là Kinesis Data Analytics (đổi tên 08/2023). Chạy Apache Flink application cho windowed aggregation, anomaly detection, streaming ETL. Loại SQL application cũ đã ngừng (không tạo mới từ 10/2023, EOL đầu 2026) — nếu đề bài nói "SQL on streaming data" với option KDA SQL, đó là distractor lỗi thời; đáp án hiện hành là Flink.
-
Làm sao giảm chi phí Athena?
Xem đáp án
Athena tính $5/TB scanned nên giảm lượng data scan: (1) columnar format (Parquet/ORC) — chỉ đọc cột cần, (2) partition theo date/region + partition projection, (3) compress (Snappy/GZIP), (4) SELECT đúng cột thay vì
SELECT *, (5) dùng CTAS tạo bảng tối ưu từ raw data. Kết hợp thường giảm 90%+ chi phí — đây là câu "most cost-effective" kinh điển. -
Redshift Spectrum khác Athena ở điểm nào?
Xem đáp án
Cả hai đều query S3 trực tiếp qua Glue Data Catalog. Spectrum chạy từ Redshift cluster — JOIN được data S3 với bảng local Redshift, phù hợp khi đã có Redshift và cần mở rộng warehouse ra data lake. Athena serverless hoàn toàn, không cần cluster — phù hợp ad-hoc query, "occasional queries, pay per query". Nếu đề bài không có Redshift sẵn → Athena; có Redshift + cần join local data → Spectrum.
-
Khi nào chọn AWS Batch thay vì Lambda cho batch processing?
Xem đáp án
Chọn AWS Batch khi job vượt giới hạn Lambda: chạy > 15 phút, cần > 10 GB RAM, cần GPU hoặc EBS volume, hoặc cần container/runtime tuỳ ý. Batch tự provisioning và scale Compute Environment theo queue depth, hỗ trợ array jobs (fan-out hàng nghìn job), job dependencies và Spot với retry tự động khi bị reclaim — "most cost-effective" cho batch chịu được gián đoạn. Lambda thắng khi job ngắn, event-driven, cần serverless hoàn toàn với zero infra. Nếu đề bài là big data với Spark/Hadoop → EMR, không phải Batch.
9. Bài tập thực hành
-
Firehose → S3 pipeline: tạo Firehose delivery stream đích S3 với dynamic partitioning theo ngày, gửi record mẫu bằng CLI (
put-record), xem file đổ về S3 theo buffer interval. -
Athena tối ưu chi phí: upload dataset CSV (~100MB) lên S3, query bằng Athena và ghi lại "data scanned"; dùng CTAS convert sang Parquet + partition, chạy lại cùng query và so sánh lượng scan/chi phí.
-
Glue Crawler + Catalog: chạy Glue Crawler trên bucket dataset ở bài 2, xem schema tự động vào Data Catalog và query qua Athena không cần tạo DDL tay.
Tài liệu tham khảo chính thức
- Amazon Redshift Documentation
- Amazon Athena User Guide
- Amazon Kinesis Documentation
- AWS Glue Developer Guide
- AWS Batch User Guide
Ngày tiếp theo: Quiz tổng kết Tuần 6