# AWS - EMR 節點類型與壓縮儲存與模式
# 節點類型
# AWS EMR
EMR 是個 AWS 上的 Apache 家族服務,跟資料處理比較較有關係,提供分散式儲存與運算,既然是分散式運算就會有 Cluster 與 Node 在 EMR 中 Node 還主要細分成三種 Primary/Core/Task Node
# Primary Node
運行主要組件,運行 YARN ResourceManager 管理應用程式資源,也跑 HDFS NameNode 服務,追蹤提交到 Cluster 的工作狀態與監控 Instance Group 健康狀態
# Core Node
主要被 Primary Node 管理,主要跑 Data Node Daemon 去協調 HDFS 資料儲存,也會跑 Task Tracker Daemon 且執行其他平行運算,比如說 YARN NodeManger daemon,Hadoop, MapReduce tasks, Spark Executors,一個 Cluster 只會一個 Instance Group/Fleet 但可以有很多 Node/EC2 在其中
# Task Node
你可以透過添加 Task Node 去加速平行運算,像是 Hadoop MapReduce Task 或 Spark Executors,Task Node 不執行 Data Node daemon 也不儲存資料到 HDFS,像是 Core Node 一樣你也可以在 Cluster 添加 EC2 來去調整 Cluster 平行運算能力
# 壓縮演算法
# Gzip
- 基於 DEFLATE 算法
- 空間效率高
- 不可分割(Non-splittable)
# LZO
- 壓縮 / 解壓速度快
- 平衡壓縮率和速度
- 無損壓縮
# Bzip2
- 基於 Burrows Wheeler 算法
- 壓縮率優於 Gzip
- 壓縮速度較慢
- 解壓速度快於 LZMA
# Snappy
- 高速度,合理壓縮率
- 不可分割(Non-splittable)
- 壓縮速度:250 MB/s
- 解壓速度:500 MB/s
- 四種技術中最快
# Parquet
- 列式存儲格式
- 值存儲在連續內存位置
- 默認使用 Snappy 壓縮
# ORC
- 行集合存儲,內部採用列式格式
- 唯一支持 ACID 屬性的格式
# Persistent VS Transient
# Persistent Clusters(持久化集群)
# 特點
- 始終保持運行狀態
- 即使作業完成也不關閉
- 節省初始化時間
# 適用場景
- 持續運行的作業
- 測試環境
- 需要排隊執行多個作業
- 需要修改和重新提交作業
# 優勢
- 節省啟動時間(避免數分鐘的啟動延遲)
- 允許作業排隊按順序執行
- 測試時出錯不會關閉集群
# Transient Clusters(臨時集群)
# 特點
- 作業完成後自動關閉
- 元數據自動刪除
- 成本效益高
# 適用場景
- 單次執行的作業
- 成本敏感的環境
- 生產環境批處理
# 優勢
- 自動關閉,節省成本
- 配合 EMRFS 使用最佳
# 缺點
- 每次啟動都有延遲
- 需要重新初始化
# EMRFS VS HDFS
# 成本效益
EMRFS
- ✓ 按使用付費
- ✓ 無需複製因子
- ✓ 存儲成本低
HDFS
- ✗ 複製因子 2-3
- ✗ 需要 2-3 倍存儲空間
- ✗ 持續運行成本
# 可擴展性
EMRFS
- ✓ 自動擴展
- ✓ 無需手動配置
- ✓ 即時調整
HDFS
- ✗ 手動添加服務器
- ✗ 需要配置
- ✗ 擴展複雜
# 集群類型支持
EMRFS
- ✓ 支持 Transient 集群
- ✓ 數據獨立於集群生命週期
- ✓ 靈活性高
HDFS
- ✗ 需要 Persistent 集群
- ✗ 數據依賴集群
- ✗ 靈活性低
# Reference
- AWS - Understand node types in Amazon EMR: primary, core, and task nodes