Data & Analytics – Athena, Redshift, OpenSearch, EMR, Glue
1. Amazon Athena
Phần tiêu đề “1. Amazon Athena”Amazon Athena là dịch vụ truy vấn serverless để phân tích dữ liệu đang nằm trong Amazon S3. Điểm hấp dẫn của nó là bạn không phải cấp phát bất cứ hạ tầng gì — dữ liệu ở đâu thì truy vấn ngay ở đó.
- Dùng ngôn ngữ SQL chuẩn để truy vấn các file (được xây trên nền Presto).
- Hỗ trợ CSV, JSON, ORC, Avro, và Parquet.
- Giá: $5.00 cho mỗi TB dữ liệu được quét (scanned).
- Thường được dùng cùng Amazon QuickSight để làm reporting/dashboard.
- Use case: business intelligence / analytics / reporting, phân tích và truy vấn VPC Flow Logs, ELB Logs, CloudTrail trails…
Luồng điển hình: dữ liệu được load vào S3 Bucket → Amazon Athena query & analyze → Amazon QuickSight làm reporting & dashboards.
Cải thiện hiệu năng cho Athena
Phần tiêu đề “Cải thiện hiệu năng cho Athena”Vì Athena tính tiền theo lượng dữ liệu quét, tối ưu hiệu năng và tối ưu chi phí ở đây là cùng một việc.
- Dùng dữ liệu dạng cột (columnar) để tiết kiệm chi phí (quét ít hơn). Apache Parquet hoặc ORC được khuyến nghị — cải thiện hiệu năng rất lớn. Có thể dùng Glue để chuyển dữ liệu sang Parquet hoặc ORC.
- Nén dữ liệu để mỗi lần lấy về nhẹ hơn (bzip2, gzip, lz4, snappy, zlib, zstd…).
- Phân vùng (partition) dataset trong S3 để truy vấn dễ dàng theo các cột ảo (virtual columns). Quy ước đường dẫn:
s3://yourBucket/pathToTable /<PARTITION_COLUMN_NAME>=<VALUE> /<PARTITION_COLUMN_NAME>=<VALUE> /<PARTITION_COLUMN_NAME>=<VALUE> /etc…Ví dụ thực tế: s3://athena-examples/flight/parquet/year=1991/month=1/day=1/
- Dùng file lớn hơn (> 128 MB) để giảm overhead.
Athena Federated Query
Phần tiêu đề “Athena Federated Query”Federated Query cho phép bạn chạy truy vấn SQL xuyên qua nhiều nguồn dữ liệu — quan hệ, phi quan hệ, object store, và cả nguồn tự định nghĩa (trên AWS hoặc on-premises).
- Nó dùng các Data Source Connector chạy trên AWS Lambda để thực hiện Federated Query — ví dụ connector cho CloudWatch Logs, DynamoDB, RDS…
- Kết quả được lưu lại vào Amazon S3.
Các nguồn mà slide liệt kê: Database (On-Premises), ElastiCache, DocumentDB, DynamoDB, Redshift, HBase in EMR, MySQL, Aurora, SQL Server.
2. Amazon Redshift
Phần tiêu đề “2. Amazon Redshift”Redshift dựa trên PostgreSQL, nhưng không dùng cho OLTP. Nó là OLAP – online analytical processing (phân tích và data warehousing).
- Hiệu năng tốt hơn 10 lần so với các data warehouse khác, scale tới hàng petabyte dữ liệu.
- Lưu dữ liệu theo cột (columnar storage) thay vì theo dòng, cùng parallel query engine.
- Hai mode: Provisioned cluster hoặc Serverless cluster.
- Có interface SQL để chạy truy vấn.
- Các công cụ BI như Amazon QuickSight hoặc Tableau tích hợp được với nó.
- So với Athena: Redshift cho truy vấn / join / aggregation nhanh hơn nhờ có index.
Redshift Cluster
Phần tiêu đề “Redshift Cluster”Một cluster có hai loại node, và phân biệt được chúng là bắt buộc:
| Node | Vai trò |
|---|---|
| Leader node | Lập kế hoạch truy vấn (query planning) và tổng hợp kết quả (results aggregation) |
| Compute node | Thực thi truy vấn, rồi gửi kết quả về leader |
Client kết nối qua JDBC/ODBC và gửi truy vấn (ví dụ SELECT COUNT(*) … FROM MY_TABLE GROUP BY …) tới Leader Node. Với Provisioned mode, bạn chọn instance type trước, và có thể reserve instance để tiết kiệm chi phí.
Snapshots & Disaster Recovery
Phần tiêu đề “Snapshots & Disaster Recovery”- Redshift có mode “Multi-AZ” cho một số cluster.
- Snapshot là backup tại một thời điểm của cluster, được lưu nội bộ trong S3.
- Snapshot là incremental — chỉ lưu những gì đã thay đổi.
- Bạn restore một snapshot vào một cluster mới.
- Automated: mỗi 8 giờ, mỗi 5 GB, hoặc theo lịch; đặt retention từ 1 đến 35 ngày.
- Manual: snapshot được giữ tới khi bạn xóa nó.
- Bạn có thể cấu hình Redshift tự động copy snapshot (cả automated và manual) của một cluster sang một AWS Region khác — ví dụ snapshot từ
us-east-1được copy sangeu-west-1rồi restore thành một Redshift Cluster mới ở đó.
Nạp dữ liệu vào Redshift
Phần tiêu đề “Nạp dữ liệu vào Redshift”Nguyên tắc vàng: insert theo lô lớn thì tốt hơn rất nhiều (large inserts are MUCH better). Có ba đường nạp dữ liệu:
- Amazon Kinesis Data Firehose → Redshift Cluster (đi qua S3 copy ở bên dưới).
- S3 dùng câu lệnh
COPY— ví dụ:
copy customerfrom 's3://mybucket/mydata'iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';Đường đi của lệnh COPY này phụ thuộc cấu hình: không bật Enhanced VPC Routing thì traffic đi qua Internet; bật Enhanced VPC Routing thì traffic đi qua VPC.
- EC2 Instance với JDBC driver → Redshift Cluster; ở đường này, tốt hơn là ghi dữ liệu theo batch.
Redshift Spectrum
Phần tiêu đề “Redshift Spectrum”Redshift Spectrum cho phép truy vấn dữ liệu đã nằm trong S3 mà không cần nạp vào Redshift.
- Bắt buộc phải có một Redshift cluster đang chạy để bắt đầu truy vấn.
- Truy vấn sau đó được gửi tới hàng nghìn node Redshift Spectrum để xử lý.
Luồng: client gửi truy vấn qua JDBC/ODBC (ví dụ SELECT COUNT(*) … FROM S3.EXT_TABLE GROUP BY …) tới Leader Node → Compute Nodes → đẩy xuống Redshift Spectrum (node 1, 2, … N) → đọc trực tiếp từ Amazon S3.
3. Amazon OpenSearch Service
Phần tiêu đề “3. Amazon OpenSearch Service”Amazon OpenSearch là hậu duệ của Amazon ElasticSearch. Giá trị của nó thể hiện rõ nhất khi đặt cạnh DynamoDB: trong DynamoDB, truy vấn chỉ tồn tại theo primary key hoặc index; còn với OpenSearch, bạn có thể tìm kiếm trên bất kỳ field nào, kể cả khớp một phần (partial matches).
- Vì thế thường dùng OpenSearch để bổ trợ cho một database khác, chứ không thay thế nó.
- Hai mode: managed cluster hoặc serverless cluster.
- Không hỗ trợ SQL một cách nguyên bản — có thể bật qua một plugin.
- Ingest từ Kinesis Data Firehose, AWS IoT, và CloudWatch Logs.
- Bảo mật qua Cognito & IAM, mã hóa KMS, và TLS.
- Kèm theo OpenSearch Dashboards để visualization.
Các pattern của OpenSearch
Phần tiêu đề “Các pattern của OpenSearch”Ba mẫu tích hợp điển hình, đều đáng nhớ vì đề thi hay mô tả chúng bằng lời:
Với DynamoDB: ứng dụng làm CRUD trên DynamoDB Table → DynamoDB Stream → Lambda Function → Amazon OpenSearch. Sau đó ứng dụng dùng API tìm item trên OpenSearch và API lấy item từ DynamoDB — mỗi bên làm đúng việc mạnh của mình.
Với CloudWatch Logs: có hai đường
| Đường | Thành phần | Độ trễ |
|---|---|---|
| Qua Lambda | CloudWatch Logs → Subscription Filter → Lambda Function (do AWS quản lý) → OpenSearch | Real time |
| Qua Firehose | CloudWatch Logs → Subscription Filter → Kinesis Data Firehose → OpenSearch | Near Real Time |
Với Kinesis: Kinesis Data Streams → Kinesis Data Firehose (near real time, có thể kèm data transformation bằng Lambda Function) → OpenSearch; hoặc Kinesis Data Streams → Lambda Function (real time) → OpenSearch.
4. Amazon EMR
Phần tiêu đề “4. Amazon EMR”EMR là viết tắt của “Elastic MapReduce”. EMR giúp tạo các cluster Hadoop (Big Data) để phân tích và xử lý khối lượng dữ liệu khổng lồ.
- Cluster có thể gồm hàng trăm EC2 instance.
- EMR đi kèm sẵn Apache Spark, HBase, Presto, Flink…
- EMR lo toàn bộ việc cấp phát và cấu hình.
- Có auto-scaling và tích hợp với Spot instances.
- Use case: data processing, machine learning, web indexing, big data…
Node types & phương án mua
Phần tiêu đề “Node types & phương án mua”| Node | Vai trò |
|---|---|
| Master Node | Quản lý cluster, điều phối, quản lý sức khỏe (health) — chạy dài (long running) |
| Core Node | Chạy task và lưu dữ liệu — chạy dài |
| Task Node (tùy chọn) | Chỉ chạy task — thường dùng Spot |
Các phương án mua:
- On-demand: đáng tin cậy, dự đoán được, sẽ không bị terminate.
- Reserved (tối thiểu 1 năm): tiết kiệm chi phí — EMR sẽ tự động dùng nếu có sẵn.
- Spot Instances: rẻ hơn, có thể bị terminate, kém tin cậy hơn.
Cluster có thể là long-running, hoặc transient (tạm thời).
5. Amazon QuickSight
Phần tiêu đề “5. Amazon QuickSight”QuickSight là dịch vụ business intelligence serverless được hỗ trợ bởi machine learning, dùng để tạo dashboard tương tác.
- Nhanh, tự động scale, nhúng được (embeddable), với giá theo session (per-session pricing).
- Use case: business analytics, xây dựng visualization, phân tích ad-hoc, lấy insight kinh doanh từ dữ liệu.
- Tính toán in-memory bằng engine SPICE nếu dữ liệu được import vào QuickSight.
- Enterprise edition: có thể thiết lập Column-Level security (CLS).
Các tích hợp của QuickSight
Phần tiêu đề “Các tích hợp của QuickSight”- Data Sources (AWS Services): RDS, Aurora, Redshift, Athena, S3, OpenSearch, Timestream.
- Data Sources (Imports): ELF & CLF (Log Format).
- Data Sources (SaaS) và On-Premises Databases (JDBC).
Dashboard & Analysis
Phần tiêu đề “Dashboard & Analysis”Phần này chứa một chi tiết rất hay bị hỏi về quản lý người dùng:
- Định nghĩa Users (bản standard) và Groups (bản enterprise).
- Những user & group này chỉ tồn tại bên trong QuickSight, không phải IAM!
- Một dashboard:
- là một snapshot chỉ đọc (read-only) của một analysis mà bạn có thể chia sẻ;
- giữ lại cấu hình của analysis (filtering, parameters, controls, sort).
- Bạn có thể chia sẻ analysis hoặc dashboard với Users hoặc Groups.
- Muốn chia sẻ một dashboard, trước tiên bạn phải publish nó.
- Người xem dashboard cũng xem được dữ liệu bên dưới (underlying data).
6. AWS Glue
Phần tiêu đề “6. AWS Glue”AWS Glue là dịch vụ ETL (extract, transform, and load) được quản lý, hữu ích để chuẩn bị và biến đổi dữ liệu cho mục đích analytics. Nó hoàn toàn serverless.
Luồng cơ bản: Extract dữ liệu từ S3 Bucket và Amazon RDS → Transform trong Glue ETL → Load vào Redshift (data warehouse).
Chuyển dữ liệu sang định dạng Parquet
Phần tiêu đề “Chuyển dữ liệu sang định dạng Parquet”Đây là mẫu hay được hỏi chung với Athena: Input S3 Bucket chứa CSV → Glue ETL chuyển sang Parquet → Output S3 Bucket → Amazon Athena analyze.
Phần kích hoạt tự động: S3 PUT phát event notification → Lambda Function (hoặc EventBridge làm giải pháp thay thế) → trigger Glue ETL Job.
Glue Data Catalog
Phần tiêu đề “Glue Data Catalog”Glue Data Catalog là danh mục các dataset của bạn. Cách nó hình thành và được dùng:
- AWS Glue Data Crawler làm data discovery trên các nguồn: Amazon S3, Amazon RDS, Amazon DynamoDB, và các nguồn qua JDBC.
- Crawler ghi metadata vào Glue Data Catalog — gồm các Database và Tables (Metadata).
- Catalog đó được dùng bởi Amazon Athena, Amazon Redshift Spectrum, Amazon EMR, và các Glue Jobs (ETL).
Những thứ cần biết ở mức tổng quan
Phần tiêu đề “Những thứ cần biết ở mức tổng quan”- Glue Job Bookmarks: ngăn việc xử lý lại dữ liệu cũ.
- Glue DataBrew: làm sạch và chuẩn hóa dữ liệu bằng các phép biến đổi dựng sẵn.
- Glue Studio: GUI mới để tạo, chạy và giám sát ETL job trong Glue.
- Glue Streaming ETL (xây trên Apache Spark Structured Streaming): tương thích với Kinesis Data Streaming, Kafka, MSK (managed Kafka).
7. AWS Lake Formation
Phần tiêu đề “7. AWS Lake Formation”Data lake là một nơi tập trung chứa toàn bộ dữ liệu của bạn cho mục đích analytics. AWS Lake Formation là dịch vụ được quản lý hoàn toàn, giúp dựng một data lake chỉ trong vài ngày.
- Discover, cleanse, transform, và ingest dữ liệu vào Data Lake của bạn.
- Tự động hóa rất nhiều bước thủ công phức tạp (thu thập, làm sạch, di chuyển, catalog dữ liệu…) và loại bỏ trùng lặp (de-duplicate) bằng ML Transforms.
- Kết hợp dữ liệu có cấu trúc và phi cấu trúc trong cùng data lake.
- Có sẵn source blueprint: S3, RDS, Relational & NoSQL DB…
- Fine-grained Access Control cho ứng dụng của bạn — ở mức dòng và mức cột (row and column-level).
- Được xây trên nền AWS Glue.
Kiến trúc: các Data Sources (Amazon S3, RDS, Aurora, On-Premises Database SQL & NoSQL) được ingest vào AWS Lake Formation — nơi có Source Crawlers, ETL and Data Prep., Data Catalog, Security Settings, Access Control — rồi dữ liệu nằm trong Data Lake (lưu trong S3) và được Athena, Redshift, EMR (và QuickSight) truy vấn cho Users.
8. Amazon Managed Service for Apache Flink
Phần tiêu đề “8. Amazon Managed Service for Apache Flink”Dịch vụ này trước đây tên là Kinesis Data Analytics for Apache Flink.
- Flink (viết bằng Java, Scala hoặc SQL) là một framework xử lý data stream.
- Dịch vụ cho phép chạy bất kỳ ứng dụng Apache Flink nào trên một cluster được quản lý trên AWS.
- Cấp phát tài nguyên compute, tính toán song song, tự động scale.
- Backup ứng dụng (được triển khai dưới dạng checkpoint và snapshot).
- Dùng được mọi tính năng lập trình của Apache Flink để biến đổi dữ liệu.
Nguồn đọc vào: Amazon MSK (Apache Kafka) và Kinesis Data Streams.
9. Amazon MSK
Phần tiêu đề “9. Amazon MSK”Amazon Managed Streaming for Apache Kafka (Amazon MSK) là giải pháp thay thế cho Amazon Kinesis.
- Apache Kafka được quản lý hoàn toàn trên AWS.
- Cho phép bạn tạo, cập nhật, xóa cluster.
- MSK tạo và quản lý các node Kafka broker và node Zookeeper cho bạn.
- Triển khai MSK cluster trong VPC của bạn, multi-AZ (tối đa 3 AZ để HA).
- Tự động phục hồi khỏi các lỗi Apache Kafka thông thường.
- Dữ liệu được lưu trên EBS volume, giữ bao lâu cũng được.
- MSK Serverless: chạy Apache Kafka trên MSK mà không phải quản lý capacity — MSK tự cấp phát tài nguyên và tự scale compute & storage.
Apache Kafka ở mức tổng quan
Phần tiêu đề “Apache Kafka ở mức tổng quan”Producers (code của bạn) — nhận dữ liệu từ Kinesis, IoT, RDS… — write to topic trên MSK Cluster (gồm Broker 1, 2, 3 có replication giữa nhau). Phía kia, Consumers (code của bạn) poll from topic rồi đẩy tiếp tới EMR, S3, SageMaker, Kinesis, RDS…
Kinesis Data Streams so với Amazon MSK
Phần tiêu đề “Kinesis Data Streams so với Amazon MSK”| Kinesis Data Streams | Amazon MSK | |
|---|---|---|
| Kích thước message | Giới hạn 1 MB | Mặc định 1MB, cấu hình được lên cao hơn (ví dụ 10MB) |
| Đơn vị phân chia | Data Streams với Shards | Kafka Topics với Partitions |
| Thay đổi quy mô | Shard Splitting & Merging | Chỉ có thể thêm partition vào một topic |
| Mã hóa in-flight | TLS | PLAINTEXT hoặc TLS |
| Mã hóa at-rest | KMS | KMS |
Các consumer của MSK
Phần tiêu đề “Các consumer của MSK”Amazon MSK được tiêu thụ bởi: Kinesis Data Analytics for Apache Flink, AWS Glue Streaming ETL Jobs (chạy trên Apache Spark Streaming), Lambda, và các ứng dụng chạy trên Amazon EC2, ECS, EKS.
10. Pipeline ingest Big Data
Phần tiêu đề “10. Pipeline ingest Big Data”Bài toán cuối chương gom gần hết các dịch vụ đã học thành một kiến trúc. Yêu cầu:
- Pipeline ingest phải hoàn toàn serverless.
- Thu thập dữ liệu theo thời gian thực.
- Biến đổi dữ liệu.
- Truy vấn dữ liệu đã biến đổi bằng SQL.
- Báo cáo tạo ra từ các truy vấn phải nằm trong S3.
- Nạp dữ liệu đó vào một warehouse và tạo dashboard.
Kiến trúc
Phần tiêu đề “Kiến trúc”IoT Devices → Amazon Kinesis Data Streams (real-time) → Amazon Kinesis Data Firehose (mỗi 1 phút, có AWS Lambda làm biến đổi dữ liệu) → Ingestion Bucket trên Amazon S3 → S3 trigger Amazon SQS (tùy chọn) → AWS Lambda pull data từ queue → Amazon Athena truy vấn → kết quả ghi vào Reporting Bucket trên S3 → được dùng bởi Amazon QuickSight và Amazon Redshift Serverless.
Thảo luận
Phần tiêu đề “Thảo luận”- IoT Core cho phép thu thập dữ liệu từ các thiết bị IoT.
- Kinesis rất tốt cho việc thu thập dữ liệu thời gian thực.
- Firehose giúp chuyển dữ liệu tới S3 gần thời gian thực (1 phút).
- Lambda có thể giúp Firehose làm biến đổi dữ liệu.
- Amazon S3 có thể gửi notification tới SQS.
- Lambda có thể subscribe vào SQS — (ta cũng đã có thể nối S3 trực tiếp tới Lambda).
- Athena là dịch vụ SQL serverless và kết quả được lưu trong S3.
- Reporting bucket chứa dữ liệu đã phân tích và có thể được dùng bởi các công cụ báo cáo như AWS QuickSight, Redshift…
Tóm tắt nhanh
Phần tiêu đề “Tóm tắt nhanh”| Dịch vụ | Phải nhớ |
|---|---|
| Athena | SQL serverless trên S3, nền Presto, hỗ trợ CSV/JSON/ORC/Avro/Parquet, $5.00 / TB quét; tối ưu bằng Parquet/ORC, nén, partition, file > 128 MB; Federated Query qua connector chạy trên Lambda, kết quả lưu về S3 |
| Redshift | Nền PostgreSQL nhưng là OLAP, 10x nhanh hơn, columnar + parallel query, provisioned hoặc serverless; nhanh hơn Athena nhờ index |
| Redshift cluster | Leader node lập kế hoạch + tổng hợp kết quả · Compute node thực thi truy vấn |
| Redshift snapshot | Lưu nội bộ trong S3, incremental, restore ra cluster mới; automated mỗi 8 giờ / mỗi 5 GB / theo lịch, retention 1–35 ngày; manual giữ tới khi xóa; copy snapshot sang region khác |
| Nạp dữ liệu Redshift | Insert lô lớn tốt hơn nhiều; qua Firehose, qua COPY từ S3 (Enhanced VPC Routing → đi qua VPC thay vì Internet), hoặc JDBC từ EC2 theo batch |
| Redshift Spectrum | Truy vấn dữ liệu đang ở S3 mà không cần nạp, nhưng vẫn cần một cluster đang chạy |
| OpenSearch | Kế thừa ElasticSearch, search mọi field kể cả partial match, managed hoặc serverless, không native SQL (cần plugin), ingest từ Firehose/IoT/CloudWatch Logs, bảo mật Cognito & IAM, có OpenSearch Dashboards |
| EMR | Cluster Hadoop, kèm Spark/HBase/Presto/Flink, hàng trăm EC2, auto-scaling + Spot; Master (quản lý) & Core (task + dữ liệu) chạy dài, Task node thường là Spot; cluster long-running hoặc transient |
| QuickSight | BI serverless, per-session pricing, engine SPICE khi import dữ liệu, CLS ở Enterprise; user/group chỉ tồn tại trong QuickSight, không phải IAM; dashboard là snapshot read-only của analysis, phải publish trước khi share, người xem thấy cả dữ liệu nền |
| Glue | ETL serverless được quản lý; chuyển CSV → Parquet cho Athena; Data Catalog do Crawler ghi metadata, dùng bởi Athena / Redshift Spectrum / EMR; Job Bookmarks chống xử lý lại, DataBrew, Glue Studio, Streaming ETL (Kinesis, Kafka, MSK) |
| Lake Formation | Dựng data lake (lưu trong S3) trong vài ngày, xây trên nền Glue, blueprint sẵn cho S3/RDS/NoSQL, ML Transforms de-duplicate, quyền chi tiết tới mức dòng và cột |
| Managed Service for Apache Flink | Tên cũ Kinesis Data Analytics for Apache Flink; Java/Scala/SQL, cluster được quản lý, auto scaling, backup bằng checkpoint/snapshot; đọc từ MSK và Kinesis Data Streams — không đọc từ Data Firehose |
| Amazon MSK | Kafka được quản lý, thay thế Kinesis; broker + Zookeeper do MSK quản lý, trong VPC của bạn, multi-AZ tới 3 AZ, dữ liệu trên EBS giữ bao lâu cũng được; MSK Serverless tự scale |
| Kinesis vs MSK | Kinesis: 1 MB, Shard, split & merge, TLS · MSK: 1MB mặc định, cấu hình lên 10MB, Partition, chỉ thêm partition, PLAINTEXT hoặc TLS; cả hai mã hóa at-rest bằng KMS |
| Pipeline Big Data | IoT → Kinesis Data Streams (real-time) → Firehose (1 phút, Lambda transform) → S3 ingestion bucket → SQS (tùy chọn) → Lambda → Athena → S3 reporting bucket → QuickSight / Redshift Serverless |