コンテンツに移動
Google Cloud

チュートリアル公開 : Apache Spark を Kubernetes Engine でネイティブに実行

2018年3月22日
Google Cloud Japan Team

オープンソースのクラスタ コンピューティング フレームワークである Apache Spark は、特に金融やメディア、ヘルスケア、小売りといった業種において、大規模なデータ処理や機械学習のプラットフォームとして人気の高いプロダクトです。

この Apache Spark を Kubernetes とネイティブに連携させるべく、Google Cloud は 1 年間にわたってその取り組みをリードしてきました。2016 年 12 月に小規模なオープンソース イニシアチブとしてスタートしたこのプロジェクトは拡大を続け、両者の連携を維持しサポートする活発なコミュニティを育んでいます。

Apache Spark のバージョン 2.3 にはネイティブの Kubernetes サポートが含まれており、ユーザーは Kubernetes の名前空間とクォータによるマルチテナンシーや共有に加え、プラガブルな認可(Pluggable Authorization)や Spark ワークロードのロギングといった管理機能を直接利用できます。また、これによってハイブリッド クラウドのさまざまな可能性が開け、オンプレミスの Kubernetes 上の Spark ジョブを Kubernetes Engine に簡単にポートして実行できるようになりました。

さらに、私たちは先ごろ、Apache Spark 2.3 に対応する Hadoop / Spark GCP コネクタをリリースしました。これを使用すれば、Cloud StorageBigQuery といった Google のデータ サービスを利用しながら、Spark を Kubernetes Engine でネイティブに実行することができます。

こうした機能を実際に試していただくため、Kubernetes Engine での Spark の実行方法を学べるチュートリアルを用意しました。このチュートリアルで Spark は、Spark スケジューラからのリクエストに応じて Kubernetes リソースを作成するカスタム コントローラとして動作します。これにより、Spark アプリケーションのきめ細かな管理や弾力性の向上、Kubernetes Engine のロギングやモニタリングのチュートリアルとのシームレスな連携を可能にしています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/spark-tutorial-20p7o.max-700x700.max-700x700.png
https://storage.googleapis.com/gweb-cloudblog-publish/images/spark-tutorial-1p6g7.max-700x700.png

このチュートリアルでは、Google の優れたデータ ストレージや処理サービスの一部を使用しています。Cloud Storage と BigQuery に加えて Google Cloud Pub/Sub を、Spark とともにストリーミング ワークロードに使用する方法も紹介します。Google サービスに接続するための資格情報と IAM を含む Spark のセットアップについて詳細に解説し、GitHub のパブリック データセットから取得したデータを変換して集約する実行可能コードを提供しています。

こうしたアプローチは、独自の Spark アプリケーションを作成し、Cloud Storage と BigQuery をデータ ソースおよびシンクとして使用する場合に適しています。たとえば、Cloud Storage にログを保存してから、Kubernetes Engine で Spark を使ってデータの前処理を行い、BigQuery でデータ分析を実行するといったことが可能です。

このチュートリアルは柔軟に利用できるように作られていますので、これを出発点として、ご自身のユース ケースに合わせて Apache Spark をカスタマイズしてみてください。なお、完全に管理、サポートされている Apache Spark サービスをお望みでしたら、GCP で提供されている Cloud Dataproc を利用できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/spark-tutorial-3os8q.max-700x700.max-700x700.png

Apache Spark と Kubernetes については、ほかにもさまざまな計画があります。1 つは、Kubernetes Engine における Spark のインタラクティブな利用のサポートです。また、Apache Spark の将来リリースでの提供に向けて、Spark Dynamic Resource Allocation の準備も進んでいます。この機能は Kubernetes Engine のクラスタ オートスケーラとともに利用でき、マルチワークロード Kubernetes Engine クラスタにおいて、断続的に集中して発生するバッチ ジョブ処理の効率性や弾力性を高めるのに役立ちます。

こうした新機能が登場するまでは、今回紹介した新しい Spark チュートリアルを Kubernetes Engine クラスタでぜひお試しください。

* この投稿は米国時間 3 月 6 日、Google Kubernetes Engine のSoftware Engineer である Anirudh Ramanathan と、同じく Product Manager である Palak Bhatia によって投稿されたもの(投稿はこちら)の抄訳です。

- By Anirudh Ramanathan, Software Engineer, and Palak Bhatia, Product Manager, Google Kubernetes Engine

投稿先