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デプロイメントを試してみましょう

推薦する

ランキングがない悩みを解消する医療ステーション運営の新アイデア

医療ウェブサイトを運営している友人は、まだランクインはしているがランキングには入っていないのではない...

百度がショッピングアプリ「百度微盒」をひっそりとリリース

【TechWeb Report】1月25日、百度は最近、登録なしですぐに注文できるショッピングウェブ...

サードパーティのアプリケーションは、kubebuilder によって生成されたカスタム リソースをどのように呼び出すのでしょうか?

kubebuilderはクライアントのような昨年執筆した一連の記事[1]では、オペレータ開発プロセス...

サイト全体の最適化 VS キーワードの最適化、本当の「王」は誰でしょうか?

SEO ウェブサイトの最適化といえば、誰もがキーワード ランキングの最適化を思い浮かべると思います。...

ディディの注文を盗んだのは誰ですか?

オンライン配車サービス企業が滴滴出行を「包囲攻撃」したのは今回が初めてではない。 4年前、ライドシェ...

資格とリモートワークがクラ​​ウドコンピューティングの仕事の給与に与える影響

調査によると、世界的なコロナウイルスのパンデミックにより、クラウドコンピューティング関連の仕事の需要...

Canonical タグと 301 の違いは何ですか?

月収10万元の起業の夢を実現するミニプログラム起業支援プランまず、2つの概念を明確にする必要がありま...

2023年までにK8Sを知らない場合は排除されます。飛び方をお見せしましょう

1. Kubernetesの利点と欠点1. Kubernetesの利点高可用性: Kubernete...

ユーザーの真のニーズを深く理解することで、半分の労力で2倍の結果を達成できます。

今日、ウェブサイトが成功したいのであれば、ユーザーが本当に必要としているものを研究するために、より多...

中国初のオンライン著作権犯罪判決:Silu.comの7人に有罪判決

周志全氏は法廷で判決を聞いている。写真は北京タイムズ記者の潘東風氏によるもの。HDビデオ愛好家にとっ...

推奨: ssdvps - 純粋な SSD ハードドライブ/IP 各 0.25 ドル

ssdvps はしばらく存在していなかったため、今回はプロモーション用の VPS が 2 つあり、特...

エンタープライズレベルのオープンソースは止められない、そしてRed Hatは新しいIT標準をリードする

パンデミックが始まって3年目を迎え、世界中の企業がリモートワークに適応したか、適応に取り組んでいます...

有能なSEO担当者になる方法

SEO 担当者になるのは実はとても簡単です。なぜそう言うのでしょうか? 記事を書いて外部リンクを投稿...

偽装外皮を脱ぎ、本来の皮を着ける

おそらく、この記事のタイトルを読んだ読者は、私が「独創性が必須」と主張していると思うに違いありません...