概述 & 考試範圍
DAS-C01 這張認證專注於 Data 領域,與 Data 相關的像大數據資料處理、資料串流、資料分析、Data Lake、Data Warehouse 等現代化應用都涵蓋,DAS-C01 是在 2020 年 4 月改版的認證,所以題目中參雜許多和現代技術相關的領域,例如 大量 IoT 資料搜集的場景。
考試範圍八九不離十都和 AWS Data 相關的服務有關係,像是 Athena, S3, EMR, Redshift, Glue, Elasticsearch, QuickSight 和 Kinesis 家族系列都是 DAS-C01 考題的常客,前面列的服務如果沒有一定的熟悉度很快就陣亡了。
考試基本資訊:
- 考試時間:180 分鐘 (如需更多時間可延長 30 分鐘)
- 考試題數:65 題
- 考試題型:選擇題、複選題 (選 3 個)
- 考試深度:大數據資料處理、即時/非即時資料流、資料成本控管與優化、資料安全等實戰經驗。
考前必備基本知識
- S3
- 利用
S3:ObjectCreated:*
即時 event trigger Lambda 進行資料處理 - S3 Glacier Select 可以用來查詢 Glacier 內的資料,但必須遵循 S3 Glacier Select Requirements and Quotas
- 資料必須為未壓縮的 CSV 逗號分隔值
- Get Job Output (GET output) 權限
- S3 Glacier Select 分為三個 data access tiers; expedited (1~5 mins), standard (3~5 hours), and bulk (5~12 hours)
- 利用
- Lake Formation
- 專注在 DataLake 的資料保護,可指定多個受管 S3 bucket,權限統一由 Lake Formation 控制
- 至少指定 1 個 DataLake Administrator
- 必須開啟 Data Catalog
- 支援 Organization 之間進行 Cross-Account Access,不在 Org 內的使用 AWS Resource Access Manager。 Cross-Account Access: How It Works
- Athena
- 必看 Top 10 Performance Tuning Tips for Amazon Athena
- 對資料進行 Partition (year, month, day …)
- 也可將資料分別存放在不同 S3 Bucket
- 資料建議使用 Apache Parquet or Apache ORC (預設壓縮且可拆分),若為其他格式建議使用 BZip2 或 Gzip 壓縮
- 若 S3 檔案太小 (低於 128MB) 則有可能影響效能,檔案大可以減少 S3 的請求和更少 metadata 管理成本
- 優化有 ORDER BY, GROUP BY, JOIN 的句子
- Workgroup
- 必看 Benefits of Using Workgroups
- 紀錄過去所有的 Query 紀錄,並且可以將不同 Workgroup 的歷史紀錄分開 S3 Bucket
- 基於 Per-query 或 Per-workgroup 限制 query 數量以節省成本
- Workgroup 可以有效的透過 IAM 權限控管 IAM Policies for Accessing Workgroups
- 必看 Top 10 Performance Tuning Tips for Amazon Athena
- Glue
- 支援對 Redshift 執行 COPY 或 UNLOAD Moving Data to and from Amazon Redshift
- Glue crawler dataset 支援 Cross-Region S3 bucket
- 支援 Scala or Python 語言
- Glue Jobs 使用 “DPU (data processing units) 最大執行數量” 以處理 Spark Job 的效能, DPU 依據 Job Metrics 進行 Scaling Monitoring for DPU Capacity Planning
- Glue Job 重新啟動導致 Redshift 資料重複時,複製新表將資料 Merge 到主表 (使用 DynamicFrameWriter class) How do I execute SQL commands on an Amazon Redshift table before or after writing data in an AWS Glue job?
- 透過開啟 Job bookmark 標記已處理資料
- Redshift
- 使用 CloudHSM 加密必須在建立 Redshift Cluster 時指定
- 支援使用 COPY 指令從多個檔案並行讀取資料,並且盡可能等於 Redshift Cluster slices 的倍數。 Splitting your data into multiple files
- 有多檔案時使用 1 個 COPY 指令比 n+1 個 COPY 指令還快 Use a single COPY command to load from multiple files
- VACUUM 和 UNLOAD 的使用情境
- 支援 workload management (WLM) 依據 query 量級 scale (Automatic or Manual WLM) Implementing workload management
- 支援 database auditing 紀錄 Connection, User activity logs Database audit logging
- Redshift Spectrum
- 支援存取外部 S3 資料,而不需要將資料存在 Redshift Table
- 並行處理資料,適用大型資料快速存取
- Elasticsearch
- 即時且快速查詢的選擇
- How do I troubleshoot high JVM memory pressure on my Amazon Elasticsearch Service cluster?
- Number of Shards = Index Size / 30GB
- 搭配 Kibana 即時呈現資料
- QuickSight
- QuickSight Enterprise vs. Standard
- QuickSight Enterprise 支援 Active Directory Using Active Directory with Amazon QuickSight Enterprise Edition
- AWS Directory Service for Microsoft AD
- AD Connector (with on-premises AD)
- 支援 Row-Level Security (RLS) 限制 datasets 存取權限 Using Row-Level Security (RLS) to Restrict Access to a Dataset
- QuickSight 內建的 ML 演算法 Understanding the ML Algorithm Used by Amazon QuickSight
- Kinesis Family
- Kinesis Data Streams: Real-Time Solution
- 背後是使用 Hash partitioning 來分配資料到 shard
- 數據預設保留 24 小時,最多可保存 7 天用來 replay data
- 每個 shared 最高可支援每秒 1000 次 PUT 記錄或是每秒 1 MB 資料。
- 每個 PutRecords 最多 500 筆 Record
- 資料進入到 Kinesis 就無法刪除 (不可改變性)
- 依 shard 數量計費
- 支援 Lambda 先對 data 進行處理,1 個 shard 可啟動 1~10 個 Lambda (預設為 1,可啟動 Parallelization Factor 處理大量資料)
- Producers
- Kinesis Producer Library (KPL)
- 支援 C++ / Java
- 當需要 high performance, lone-running producers 使用
- 內建 Automation retry 以及 CloudWatch metrics
- 使用者必須自行壓縮傳輸中的資料
- 支援 Batching 功能
- 適合用於資料增量,效率利用更好減少成本
- 也能設定
RecordMaxBufferedTime
(default 100ms) 延遲處理資料
- Kinesis Producer SDK
- Kinesis Agent
- 3rd party libraries: Spark, Log4j, Kafka …
- Kinesis Producer Library (KPL)
- Consumers
- 與 Lambda 的組合和應用情境
- Kinesis Client Library (KCL)
- 基於 Java 開發,但也可以透過 MultiLangDaemon 來支援其他語言,但由於 MultiLangDaemon 是基於 Java 開發所以仍需要安裝 Java。
- Kinesis Consumer SDK
- Kinesis Connector Library
- 3rd party libraries: Spark, Log4j, Kafka …
- Kinesis Firehose
- 透過開啟 Kinesis Consumer Enhanced Fan-Out 每秒 throughput 可到 2MB per shard,每個 fan-out 不共享給其他 consumer,一個 stream 最多 20 個 consumer enhanced fan-out
- Kinesis Data Firehose – Near Real time Solution
- 適合將資料串流到 S3, Redshift, Elasticsearch 和 Splunk
- 內建 Automatic scaling
- 可將資料從 JSON 轉換為 Parquet / ORC (僅適用於 S3)
- 可在 Firehose 整合 Lambda 進行資料處理
- 支援對 S3 進行 GZip, Zip 和 SNAPPY 壓縮
- 支援對 Redshift 進行 GZip 壓縮
- Buffer Sizing
- Firehose 不會一接收到資料就進行資料轉移。我們可以設定 Buffer size 以及 Buffer interval 讓 Firehose 在達到其中一個條件的時候把接收到的訊息統整起來一次做資料的轉移 (batch processing)。這邊為了能讓 Firehose 盡快把收到的資料轉移到 S3,設定 Buffer interval 為 60 秒。
- Kinesis Data Streams: Real-Time Solution
- EMR
- 必看 Cluster Configuration Guidelines and Best Practices
- Cluster Type 分為 transient 和 persistent mode
- 支援多種 Hadoop 生態系,若遇到不支援可 Custom AMI 或在 bootstrap action include Library。Create Bootstrap Actions to Install Additional Software
- EMRFS
- 基於 HDFS 的實現並將資料儲存在 S3
- Consistent view
- read-after-write of S3 Object (AWS re:Invent 2020 發佈 S3 consistency 可取代)
- 開啟 Consistent view 會建立一張 DynamoDB Table 作為 metadata,並且消耗 RCU/WCU
- 若直接從 S3 刪除 Object 會與 Consistent view 紀錄的 metadata 有不一致的情況,若要刪除建議從 emrfs 指令刪除 S3 Object。
- 當資料可能有長期不需要使用,啟動 DynamoDB TTL 節省成本
- Data Migrations 的方法
- 利用
S3DistCp
和DistCp
工具遷移資料 - HDFS, Local 傳輸到 S3
- Import 或 Export
- Direct Connect
- 利用
- 支援 Data encryption
- At-rest Encryption for S3 with EMRFS
- 支援 Server-side (SSE-S3, SSE-KMS) 和 Client-side 加密 (CSE-KMS or CSE-Custom)
- S3 SSE 和 CSE 加密是互斥的;可以選擇一個,但不能兩者都選
- At-rest Encryption for Local DisksOpen-source HDFS Encryption
- LUKS (Linux Unified Key Setup)
- In-Transit Data Encryption (SSL)
- At-rest Encryption for S3 with EMRFS
- DataSync vs. DMS vs. Data Exchange
考試心得
Data Analytics – Specialty 這張也很吃重實戰經驗,尤其是服務的組合技 (Ex. S3 + Glue + Athena + Quicksight …) 針對不同場景下有不同的選擇,針對已經在 AWS 上進行一些 Data Analytics 的人這張認證應該不難駕馭,再多加強在 Performance tuning 上勝率就很高了
以 Specialty 的等級來說,我認為應該位於中等難度,心目中仍然還是 Advanced Networking 居難度第一位。
References