【アパッチフーディ】

Apache Hudi(フーディ) とは?

💡 データレイクにレコード更新の魔法をかけるフーディ
📌 このページのポイント
Apache Hudi テーブルタイプ比較 Copy-on-Write 書き込み時にファイル全体を書き直す 旧ファイル 新ファイル(全書換) 読み取り: 高速 書き込み: 低速 分析ワークロード向き 読み取り頻度が高い場合に最適 Merge-on-Read 差分ログを書き、読み取り時にマージ ベース + 差分ログ 合成 読み取り: やや遅い 書き込み: 高速 リアルタイム取り込み向き 書き込み頻度が高い場合に最適
Apache Hudiの2つのテーブルタイプ
ひよこ ひよこ

データレイクってレコードの更新が苦手なの?

ペンギン先生 ペンギン先生

そうなんだ。データレイクは基本的にファイルの追記が得意だけど、「特定の1行だけ書き換える」のは苦手。Hudiはこの問題を解決するために生まれたんだよ

ひよこ ひよこ

Copy-on-WriteとMerge-on-Readって何が違うの?

ペンギン先生 ペンギン先生

Copy-on-Writeは書き込み時にファイル全体を書き直すから読み取りが速い。Merge-on-Readは差分だけ書いて読み取り時にマージするから書き込みが速い。読み重視か書き重視かで選べるんだよ

ひよこ ひよこ

インクリメンタルクエリって具体的にどう便利なの?

ペンギン先生 ペンギン先生

たとえば「前回の処理以降に変更されたレコードだけ取得」ができるんだ。毎回テーブル全体をスキャンしなくていいから、下流のETLパイプラインがめちゃくちゃ効率的になるよ

ひよこ ひよこ

Uberが作ったんだね。どんな場面で使ってたの?

ペンギン先生 ペンギン先生

配車データやドライバー情報は常に更新されるよね。数十億レコードテーブルで「位置情報が変わった行だけ更新」みたいな処理を効率的にやるためにHudiが生まれたんだ

ひよこ ひよこ

IcebergやDelta Lakeとはどう住み分けてるの?

ペンギン先生 ペンギン先生

Hudiはレコード単位の変更処理とインクリメンタル処理に特に強いのが特徴だよ。ただ最近は3つのフォーマットとも機能が近づいてきていて、エコシステムの好みやクラウドベンダーとの相性で選ばれることが多いんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Apache Hudi」って出てきたら「データレイクレコード単位の更新を高速にできる仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Hadoop Upserts Deletes and Incrementals」 = Hadoop上での追加更新・削除・増分処理
💬 元々UberがHadoop上で効率的にデータを更新するために作ったプロジェクトで、頭文字をとってHudiだよ
← 用語集にもどる