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