Kubernetes で Apache Spark を実行する方法

Kubernetes で Apache Spark を実行する方法

[[416069]]

[51CTO.com クイック翻訳] Empathyのプラットフォームエンジニアリング技術責任者であるRamiro Alvarez Fernandez氏は、クラウドコンピューティングプロバイダーへの依存をなくし、Kubernetes上でApache Sparkを実行するためにSpark on Kubernetesを使用する方法を紹介し、このプロセスの課題、アーキテクチャ、ソリューションなどの詳細を共有しました。

課題

Empathy の場合、本番環境で実行されるすべてのコードはクラウドに依存しないものでなければなりません。 Empathy は、EMR (AWS 上)、Dataproc (GCP 上)、HDInsight (Azure 上) などの Spark ソリューションを使用することで、クラウド コンピューティング プロバイダーが提供するソリューションへの以前の依存を克服しました。

これらのクラウド コンピューティング プロバイダーのさまざまなソリューションにより、クラウド上に Spark を簡単に導入できます。ただし、企業が規模を拡大すると、いくつかの制限に直面し、次の問題に対処する必要があります。

  • 課題をどのように整理しますか?
  • Spark ジョブを配布するにはどうすればいいですか?
  • 夜勤の手配はどうすればいいですか?
  • ジョブコードはどこで設定されますか?
  • 変更はどのように伝播されますか?
  • ジョブ定義は再利用できますか?テンプレートとは何ですか?
  • コードでジョブを参照できますか?
  • ローカルホストからテストできますか?

これらは、Spark ジョブを実装する際に直面する一般的な問題です。 Kubernetes を使用してこれらの問題を解決すると、作業者の時間と労力を節約し、より良いエクスペリエンスを提供できます。

Kubernetes 上で Apache Spark を実行すると、次のような利点があります。

  • スケーラビリティ: 新しいソリューションは、あらゆる需要に対応できるように拡張可能である必要があります。
  • 信頼性: 新しいソリューションはコンピューティング ノードを監視し、障害が発生した場合にインスタンスを自動的に終了して置き換える必要があります。
  • 移植性: 新しいソリューションは、特定のクラウド コンピューティング プロバイダーへの依存を回避し、あらゆるクラウド コンピューティング ソリューションに展開できる必要があります。全体として、このアプローチにより、さまざまなクラウド コンピューティング サービス プロバイダーとの Spark ジョブの調整、配布、スケジュール設定について考える時間が節約されます。
  • コスト効率: 企業はクラウド コンピューティング プロバイダーのサービスを利用する必要がないため、コストを節約できます。
  • 監視: 新しいソリューションにはアドホック監視を含める必要があります。
  • Kubernetes エコシステム: 他のワークロードと同じ共通エコシステムを使用し、継続的なデプロイメント、RBAC、専用ノード プール、自動スケーリングなどを提供します。

メリットは、Kubernetes 上で実行される Apache Flink 向けの Empathy ソリューションと同じです。

Kubernetes 上で動作する Apache Spark

Apache Spark は、ビッグデータ処理用の統合分析エンジンであり、特に分散処理に適しています。 Spark は、現在最も大きなテクノロジートレンドの 1 つである機械学習に使用されます。

Apache Spark アーキテクチャ

Spark Submit を使用すると、Spark アプリケーションを Kubernetes クラスターに直接送信できます。プロセスは次のとおりです。

(1)Spark SubmitはクライアントからマスターノードのKubernetes APIサーバーに送信されます。

(2)Kubernetesは新しいSpark Driverポッドをスケジュールします。

(3)Spark DriverポッドはKubernetesと通信してSpark executorポッドを要求します。

(4)新しいエグゼキュータポッドはKubernetesによってスケジュールされます。

(5)新しいエグゼキュータポッドの実行が開始されると、KubernetesはSparkドライバーポッドに新しいSparkエグゼキュータポッドの準備ができたことを通知します。

(6)Sparkドライバーポッドは、新しいSparkエグゼキューターポッドでタスクをスケジュールします。

Spark 送信フローチャート

Spark アプリケーションは、SparkSubmit (通常の方法) または Spark Operator を使用してスケジュールできます。

スパーク送信

Spark Submit は、Spark アプリケーションを送信し、Spark クラスター上でアプリケーションを起動するためのスクリプトです。その優れた機能には次のようなものがあります:

  • Kubernetes バージョン: Kubernetes バージョンに依存しません。
  • ネイティブ Spark: Spark イメージに含まれています。
  • 非宣言的なセットアップ: ジョブを調整する方法の計画が必要です。
  • 必要な K8s リソースを定義します (構成マップ、ボリュームのマウント、アンチアフィニティの設定、ノード セレクタなど)。
  • CRD は不要: Kubernetes カスタム リソースは必要ありません。

スパーク演算子

Spark Operator プロジェクトは Google によって開発され、現在はオープンソース プロジェクトとなっています。 Kubernetes カスタム リソースを使用して、Spark アプリケーションのステータスを指定、実行、表示します。その優れた機能には次のようなものがあります:

  • 宣言型: カスタム リソースを介したアプリケーションの仕様とアプリケーション管理。
  • スケジュールされた再起動: 構成可能な再起動戦略。
  • Kubernetes リソースの自動定義: configmap とボリュームのマウント、ポッドの関連付けの設定などをサポートします。
  • 依存性注入: 依存性を直接注入します。
  • メトリクス: アプリケーション レベルのメトリクスとドライバー/エグゼキューターのメトリクスを収集して Prometheus にエクスポートすることをサポートします。
  • オープンソース コミュニティ: 誰でも貢献できます。

Spark Submit と Spark Operator の主なコマンド

上図は、Spark Submit と Spark Operator の主なコマンドを示しています。

Empathy のソリューションでは、ユースケースごとにカスタム Kubernetes マニフェストを作成する必要がある Spark Submit よりも高速な反復処理が可能な Spark Operator が好まれます。

ソリューションの詳細

課題セクションで提起された問題に対処するには、CNCF プロジェクトのサポートとともに、ArgoCD と Argo Workflows が役立ちます。たとえば、お気に入りの Spark アプリケーション ワークロードを Kubernetes からスケジュールして、Argo ワークフローを作成し、順次ジョブを定義できます。

フローチャートは次のとおりです。

  • Git で変更を定義します。
  • ArgoCD は、git の変更を Kubernetes クラスターに同期します (たとえば、Argo ワークフロー テンプレートを作成します)。
  • Argo Workflows テンプレートを使用すると、複数の Spark ジョブの入力をカスタマイズして構成を再利用し、Argo Workflows に基づいて夜間ジョブを作成できます。

ソリューションフローチャート

アルゴCD

ArgoCD は、Kubernetes 用の GitOps 継続的デリバリー ツールです。主な利点は次のとおりです。

  • GitOps: 望ましいアプリケーション状態を定義するための信頼できるソースとして Git リポジトリを使用します。
  • 宣言的なセットアップ: すべてを Git 上に配置します。
  • 追跡可能性と自動化: アプリケーションのデプロイメントでは、ブランチやタグなどの更新を追跡できます。アプリケーションのデプロイメントは、特定のターゲット環境に基づいて自動化されます。
  • WebUI: デプロイされたワークロードを検査するための見栄えの良いユーザー インターフェイス。
  • Kubernetes には Kustomize、Helm、ksonnet、jsonnet などが含まれており、選択することができます。

より詳細な情報は公式ドキュメントに記載されています。

アルゴワークフロー

Argo Workflows は、Kubernetes 向けのワークフロー ソリューションです。主な利点は次のとおりです。

  • ジョブ オーケストレーション: これにより、ジョブを順番にオーケストレーションしたり、カスタム DAG を作成したりできるようになります。
  • ワークフローのスケジュール設定: Cron ネイティブ。
  • Spark アプリケーション: 任意の Kubernetes クラスター上で Spark アプリケーションを簡単にオーケストレーションします。
  • ワークフロー テンプレート: さまざまなユース ケースに合わせてテンプレートを再利用します。入力はパラメータ化できます。
  • WebUI: ワークフローの進行状況を確認するための優れたビジュアル ユーザー インターフェイス。

より詳細な情報は公式ドキュメントに記載されています。

モニター

Prometheus にこれらのメトリックが取得されたら、それらを監視するための Grafana ダッシュボードが必要になります。 Apache Spark 用のカスタム Grafana ダッシュボードは、次のコミュニティ ダッシュボードに基づいています。

  • ArgoCDダッシュボード
  • Argoワークフローダッシュボード
  • Apache Spark オペレーターダッシュボード
  • Apache Spark アプリケーション ダッシュボード

結論

Empathy は、Kubernetes 上で Spark アプリケーション ワークフロー ソリューションを作成し、GitOps を使用して変更を伝播するために、Spark Operator、ArgoCD、および Argo Workflows を選択しました。この記事で紹介したセットアップは、約 1 か月間本番環境で使用されており、フィードバックは非常に良好です。すべてのユーザーがワークフローに満足しており、どのクラウド プロバイダーでも機能する単一のワークフローを使用することで、単一のクラウド コンピューティング プロバイダーへのロックインが排除されます。

自分でテストしたい場合は、これらの実践的な例に従って、このガイドで説明されているすべての設定を使用して、ローカルホストからいくつかの Spark アプリケーションをデプロイしてみてください: 実践的な Empathy リポジトリ。

まだ道のりは長いですが、さらなる利益が得られるでしょう。このイノベーションにより、企業がクラウドに依存しなくなることが期待されます。

原題: Kubernetes 上で Apache Spark を実行する、著者: Ramiro Alvarez Fernandez

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください。

<<:  Red HatとNutanixが協力してオープンハイブリッドマルチクラウドソリューションを提供

>>:  Dockerデプロイメントを試してみましょう

推薦する

素晴らしい貢献です。キーワードとタイトルの変更に関する私の経験を共有します

以前の記事でも述べたように、Naihe は、ウェブサイト上のキーワードランキング コラム ページ (...

ロゴ: ウェブサイト計画の銀の鍵、ウェブサイトプロモーションの金の看板

長い期間の思考と計画を経て、私はついに ZhanBang.com の構築を開始することを決定しました...

budgetvm: 月額 12.5 ドル、日本のクラウド サーバー、100M 帯域幅、無制限のトラフィック、2G メモリ/50g SSD、PayPal/Alipay

Enzu の BudgetVM は 10 年以上前から存在しており、多くの人がよく知っていると思いま...

短縮リンクがSEOに影響を与えるかどうかについての考察

まず、新年を迎え、石家荘SEOはA5スタッフ全員と大多数の中小規模のウェブマスターの皆様に新年のご多...

ホームファニシングEコマース020、見た目が美しい

今年に入ってから、電子商取引業界は020モデルブームに巻き込まれている。偶然生き残った共同購入ウェブ...

百度は「無料」の華夏基金に署名し、再び規制に違反しないと約束

広州地下鉄珠江新城駅では、余額宝と華夏火芭通が激しい競争を繰り広げている。バスの列に並んでいます。反...

マネージド Kubernetes サービス: 最新のクラウド インフラストラクチャのアップグレードを加速

コストの削減と効率性の向上は、イノベーションと開発における永遠のテーマです。過去10年間、開発者はコ...

テンセントクラウドの「AIスーパーベース」特別セッションがWOTカンファレンスで発表され、技術革新がAIインフラの新たな章を導く

過去2年間、「百機種戦争」は中国で人気の技術トピックになりました。 2020年以降、中国は大型モデル...

エンタープライズの近代化アプリケーション変革における Amazon Web Services のコア機能は何ですか?

[51CTO.com からのオリジナル記事]モダン アプリケーションは、間違いなく近年最もホットなト...

高品質なコンテンツを編集するためのウェブサイトの黄金律

ウェブサイトのコンテンツは、ウェブサイトの最も重要な構成要素です。検索エンジンであれ、ユーザーであれ...

複数のドメイン名の 301 リダイレクトを統合すると SEO にどのような影響があるか!

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますSEO の...

1日10分、小さな進歩 - AWS Innovation Studio 第2号メジャーアップデート!

AWS Innovation Studio 第 2 号メジャーアップデート! 最近では、AWS を通...

Bステーション財務報告:損失の背景には交通事業

一年を振り返ってみると、ビリビリのラベルは常に「輪を破る」ものでした。年初の年越しガラからその後の「...

AirPods は売り切れましたが、AirPods 2 は登場するのでしょうか?

月給5,000~50,000のこれらのプロジェクトはあなたの将来ですA5 Startup Netwo...

タオバオ、SNSをターゲットにした過去最大の改訂版を発表

10月18日、易邦電力網は情報筋から、タオバオが史上最大の改訂を完了しようとしており、新バージョンは...