はじめに
本ブログシリーズでは、Yahoo!ショッピングのデータ分析基盤を最適化するために取り組 んだ大規模プロジェクト――Apache HiveからTrinoとApache Sparkへの移行――について、詳しく解説しています。前回の記事(第1部)では、この移行がなぜ必要となったのか、そして具体的にどのような技術的背景があったのかを中心に取り上げました。
今回はその続編として、実際に移行を推進したチームメンバーたちの“リアルな声”や“現場で起きたドラマ”を深く掘り下げていきます。彼らがどのような困難に直面し、どのようにそれを克服してきたのか――そこには、同様の移行を考えている皆さまにとって参考になる、多くのヒントと学びが詰まっています。私たちが体験した試行錯誤のプロセスと、その先に芽生えた気づきを共有しながら、お読みいただく方々の一助になれば幸いです。
第1部の振り返り: Hiveの課題とTrino/Sparkの可能性
前回の記事(第1部(英語のみ))では、主に以下のようなトピックについて詳しく取り上げました。
- なぜTrinoやSparkを選択肢に挙げたのか
- Trinoのインメモリ処理による高速クエリ応答性が、多くのインタラクティブ分析に適している点。
- Sparkは大規模分散処理に強く、大量のデータ削除や入れ替えが発生するシナリオにも対応可能。
- Hiveの高コスト・長時間クエリ問題
- 100TBを超えるメモリを消費し、数時間実行し続ける巨大クエリの存在。
- 1回の実行で高額のコストが発生するケースもみられ、データ量の増加とともにこれらのクエリがますます膨れ上がる懸念。
- 具体的な処理の課 題事例
- ユーザーのデータ削除要請により、パーティションあたり600GBを超える圧縮Columnarテーブルからデータを削除する必要が生じた場合、Hiveのみでは技術・コストの両面で大きな負担が生じる。
- これをTrinoやSparkで解決することで、作業負荷を軽減できる可能性がある。
- リアルタイム分析やインタラクティブ分析への期待
- 企業がより迅速にデータドリブンな意思決定を行うには、Hiveだけに依存するアーキテクチャでは不十分。
- 運用効率と分析速度を同時に底上げできるTrinoやSparkへの移行は、不可欠なステップとなった。
こうした背景を踏まえ、私たちは既存のHiveベースの基盤を段階的にTrinoやSparkへとシフトする運びとなりました。移行の過程では、「単なるツールの入れ替え」にとどまらず、大規模データに対するアプローチそのものに変化をもたらすことが期待されます。
移行プロジェクトの背景とゴール
Yahoo!ショッピングでは、マーケットプレイスにおける日々の取引データ、ユーザ行動ログ、商品属性情報など、膨大で多様なデータを扱っています。これらの情報を集約・分析しながら、顧客体験の向上や売上増につなげるためには、データ基盤自身の耐久性・拡張性・パフォーマンスすべてが高水準で求められていました。
(※LINEヤフー株式会社ではお客様のプライバシーの保護に細心の注意を払っています。詳しくはLINEヤフー プライバシーセンターをご覧ください。)
こうした要件を踏まえて、私たちが目指したゴールは以下の4点です: