devHọc Dev
Bài học

Tuần 6 - Ngày 4: Data Analytics Services

Tuần 6 – Ngày 4

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

ANALYTICSPIPELINECollectStoreProcessAnalyzeVisualizeKinesisS3/EMR/Athena/QuickSightDataRedshiftGlueRedshiftFirehose

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

REDSHIFTClusterTypes:Provisioned:RA3,DC2nodesServerless:Auto-scalingFeatures:-Columnarstorage-MPP(MassivelyParallelProcessing)-Upto16PB-RedshiftSpectrum(queryS3directly)-FederatedQuery(RDS,Aurora)-MLwithCREATEMODELDistributionStyles:-AUTO(recommended)-EVEN(round-robin)-KEY(bycolumnvalue)-ALL(fullcopyoneachnode)

4. AWS Glue

AWSGLUEComponents:GlueDataCatalogMetadatarepositoryGlueCrawlersAuto-discoverschemaGlueETLJobsSpark(Python/Scala)PythonShellGlueDataBrewVisualdatapreparationGlueStudioVisualETL

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

LAKEFORMATIONCentralizeddatalakemanagement:1.Ingestdatafromsources2.StoreinS3(withformatting)3.CatalogwithGlue4.Securewithfine-grainedpermissions5.DiscoverandanalyzeSecurity:-Column-levelsecurity-Row-levelsecurity-Cell-levelsecurity-Tag-basedaccesscontrol

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

AWSBATCHJobDefinitionContainerimage,vCPU/memory,IAMrole,retrystrategy(tiđa10attempts)JobQueuePriorityqueueprioritycaođưcscheduletrưc;1queuemapnhiuCEComputeEnvironment(CE)Managed:Batchtchninstancetype+scaletheoqueuedepthUnmanaged:tqunlýECSclusterLoicapacity:EC2On-Demand/EC2Spot/Fargate/FargateSpot

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íLambdaAWS Batch
Thời gian chạyTối đa 15 phútKhông giới hạn
MemoryTối đa 10 GBTheo instance (hàng trăm GB+)
RuntimeRuntime hạn chế (hoặc container ≤10GB)Container bất kỳ
GPU / EBSKhông (GPU instance, EBS volume)
Mô hìnhServerless hoàn toàn, event-drivenManaged infra, chạy trên EC2/Fargate
Chi phíPer-invocationEC2/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

S3event/EventBridgeschedule(submitjob)JobQueueComputeEnvironment(priority)ManagedSpotfleetscaletheoqueuedepthcontainerxlýS3(kếtquoutput)

8. Câu hỏi ôn tập

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

  1. 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.

  2. 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í.

  3. 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


Ngày tiếp theo: Quiz tổng kết Tuần 6