# 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