🗒️
Hadoop周りの用語をざっくり整理してみた(自分用メモ)
ビッグデータ基盤まわり、名前が多いので整理。
※ChatGPTで整理しつつ、自分の理解をまとめました
今回は レガシーHadoop時代 → モダンLakehouse時代 まで含めてまとめます。
まずは全体像
レガシーHadoop構成
HDFS
↓
Hiveテーブル
↓
MapReduce / Spark
↓
Hive / Presto
モダンLakehouse構成
S3(オブジェクトストレージ)
↓
Iceberg / Delta / Hudi
↓
Spark(加工)
↓
Trino(分析)
↓
BIツール
基盤の土台
HDFS
役割
分散ストレージ
- 大量データをクラスタに分散保存
- 強い一貫性
- Hadoopエコシステムの土台
オンプレではまだ現役。
クラウドではS3に置き換わることが多い。
S3(オブジェクトストレージ)
役割
クラウド版データレイクの土台
- 安い
- スケール無限
- HDFSの代替
最近は「HDFS前提」の構成は減少傾向。
リソース管理
YARN
- クラスタのCPU・メモリ管理
- ジョブの交通整理
SparkもYARN上で動くことが多い。
最近はKubernetesに置き換わるケースも増えている。
分散処理エンジン
MapReduce
- Hadoop初期の分散処理モデル
- Map → Reduce
- バッチ前提
- 遅い
ほぼ歴史的存在。
Spark
役割
高速分散処理エンジン
- インメモリ処理
- SQLも書ける
- バッチ / ストリーミング両対応
ポジション
作るのがSpark
- ETL
- 集計
- データ加工
- Iceberg書き込み
今の主役。
分析エンジン
Trino
役割
分散SQLクエリエンジン
- 既存データに対してSQL
- 超高速
- 分析特化
ポジション
見るのがTrino
BIツールと接続して使われることが多い。
テーブル管理
Hive
役割
メタストア
- テーブル定義
- スキーマ管理
- データの場所を記録
実体は「データカタログ」。
テーブルフォーマット(重要)
ここが今一番アツい領域。
Hiveテーブル(旧世代)
- パーティション管理が大変
- スキーマ変更が弱い
- ACIDが弱い
*運用でHiveメタデータと実態に乖離が生じて壊れる事象を弊社でもたまに聞く。これらの使い勝手の悪さを改善するために他の技術が生まれた。
Iceberg(次世代)
- ACID対応
- スキーマ進化
- タイムトラベル
- 大規模最適化
Hiveテーブルの後継。
Delta Lake
- Databricks発
- ACIDが強い
- Sparkと相性◎
Apache Hudi
- リアルタイム更新に強い
- CDC用途で使われがち
データフォーマット
Parquet
- 列指向
- 分析向き
- ほぼ標準
ORC
- Hive系でよく使われる列指向
Avro
- 行指向
- Kafka連携向き
今の主流まとめ
| 役割 | レガシー | モダン |
|---|---|---|
| ストレージ | HDFS | S3 |
| 処理 | MapReduce | Spark |
| SQL | Hive | Trino |
| テーブル | Hive | Iceberg / Delta / Hudi |
| リソース管理 | YARN | YARN / Kubernetes |
結論
昔:
Hadoopが全部やってた
今:
ストレージ・テーブル・処理・分析が分業化
- 作るのがSpark
- 見るのがTrino
- 管理するのがIceberg
- 置くのがS3
Discussion