Uber社は、公式エンジニアリング・ブログへの最近の投稿で、バッチデータ分析と機械学習(ML)トレーニング・スタックをGoogle Cloud Platform(GCP)に移行する戦略を明らかにした。Uberは、世界最大級のHadoopを導入しており、2つの地域にある数万台のサーバーで1エクサバイト以上のデータを管理している。オープンソースのデータエコシステム、特にHadoopは、データプラットフォームの礎となっている。
戦略的移行計画は2つのステップからなる。初期移行とクラウドネイティブサービスの活用だ。Uber社の初期戦略では、データレイクのストレージにGCPのオブジェクトストアを活用する一方、残りのデータスタックをGCPのIaaS(Infrastructure as a Service)に移行する。このアプローチでは、オンプレミスのソフトウェアスタック、エンジン、セキュリティモデルの正確なバージョンをIaaS上で複製できるため、既存のジョブやパイプラインの中断を最小限に抑えながら迅速に移行できる。このフェーズに続き、Uber社のエンジニアリングチームは、Dataprocや BigQueryなど、GCPのPlatform as a Service(PaaS)を徐々に採用し、クラウドネイティブサービスの弾力性とパフォーマンスの利点をフルに活用する計画だ。
移行範囲(出典:Uber社のブログ)
最初の移行が完了したら、チームはクラウドネイティブサービスの統合に注力し、データインフラのパフォーマンスとスケーラビリティを最大化する。この段階的なアプローチにより、ダッシュボードの所有者からMLの実務者まで、ユーバーのユーザーは既存のワークフローやサービスを変更することなく、シームレスな移行を体験できる。
スムーズで効率的な移行を確実にするために、Uber社はいくつかの指針を定めた。
-
バッチ・データ・スタックの大部分をそのままクラウドIaaSに移行することで、利用上の混乱を最小限に抑える。これは成果物やサービスの変更からユーザーを保護することを目的としている。よく知られた抽象化とオープンスタンダードを使用することで、可能な限り透過的な移行を実現するよう努めている。
-
Google Cloud StorageへのHadoop FileSystemインタフェースを実装するクラウドストレージコネクタに依存し、HDFSの互換性を確保する。Apache Hadoop HDFSクライアントを標準化することで、オンプレミスのHDFS実装の仕様を抽象化し、GCPのストレージレイヤーとのシームレスな統合を可能にする。
-
Uber社は、基盤となる物理コンピューティングクラスターを抽象化するPresto、Spark、Hive用のデータアクセスプロキシを開発した。これらのプロキシは、テスト段階ではクラウドベースのクラスタへのテストトラフィックの選択的なルーティングをサポートし、完全な移行時にはクラウドスタックへのクエリとジョブの完全なルーティングをサポートする。
-
Uber社のクラウドにとらわれないインフラの活用。Uber社の既存のコンテナ環境、コンピューティング・プラットフォーム、デプロイ・ツールは、クラウドとオンプレミスを問わないように構築されている。これらのプラットフォームにより、バッチ・データ・エコシステムのマイクロサービスをクラウドIaaS上に容易に拡張できる。
-
同社は、選択・承認されたクラウドサービスをサポートするために、既存のデータ管理サービスを構築・強化し、強固なデータガバナンスを確保する。同社は、オブジェクトストア・データレイクやその他のクラウド・サービスに対するシームレスなユーザー認証をサポートしながら、オンプレミスと同レベルの認証アクセスとセキュリティを維持することを目指している。
移行前と移行後のUber社のバッチ・データ・スタック(出典:Uber社のブログ)
Uber社は、移行のためのバケットマッピングとクラウドリソースレイアウトに重点を置いている。HDFSファイルとディレクトリを1つ以上のバケット内のクラウドオブジェクトにマッピングすることが重要である。読み書きスループットやIOPSスロットルなど、バケットやオブジェクトに対する制約を考慮し、さまざまな粒度レベルでIAMポリシーを適用する必要がある。チームは、これらの制約を満たし、組織中心の階層的な方法でデータリソースを整理し、データ管理とマネジメントを改善するマッピングアルゴリズムの開発を目指している。
セキュリティ統合は別のワークストリームだ。既存のKerberosベースのトークンとHadoop DelegationトークンをクラウドPaaS、特にGoogle Cloud Storage(GCS)に適応させることが不可欠である。このワークストリームは、シームレスなユーザー、グループ、サービスアカウントの認証と認可をサポートし、オンプレミスと一貫したアクセスレベルを維持することを目的としている。
このチームは、データのレプリケーションにも注力している。パーミッションを意識した双方向データレプリケーションサービスであるHiveSyncは、Uber社がアクティブ・アクティブ・モードで動作を可能にする。HiveSyncの機能を拡張し、オンプレミスのデータレイクのデータをクラウドベースのデータレイクと対応するHiveメタストアにレプリケートする。これには、最初の一括移行と、クラウドベースのスタックがプライマリになるまでの継続的な増分更新が含まれる。
最後のワークストリームは、GCP Iaas上に新しいYARNクラスタとPrestoクラスタを提供することだ。Uber社のデータアクセスプロキシは、移行中にクエリとジョブのトラフィックをこれらのクラウドベースのクラスタにルーティングし、スムーズな移行を保証する。
Uber社のGoogle Cloudへのビッグデータ移行では、ストレージの性能差やレガシーシステムによる予期せぬ問題などの課題が予想される。チームは、オープンソースのツールを活用し、コスト管理のためにクラウドの弾力性を活用し、非中核的な用途を専用ストレージに移行し、統合を積極的にテストし、時代遅れの慣行を廃止することで、これらに対処する計画だ。