🗒️

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