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

推薦する

単純なことは簡単にできるものではありません。QQ プロモーションを最適化する必要があります。

ウェブサイトのプロモーターにとって、QQ を使用するよりも簡単な方法はありません。QQ 署名を使用し...

検索エンジンマーケティングは思考が先か、それともテクノロジーが先か?

中国の SEO 市場が活況を呈し、さまざまな SEO 個人やチームの出現により、中国の SEO 担当...

a2ghosting-2g メモリ/50g SSD/月額 6.75 ドル

a2ghosting は、Minecraft ホスティング プロバイダーとして 2011 年 3 月...

namecheap: 移管ドメイン名が 30% オフ、1 週間有効、更新として考えてもお得です!

本日より、Namecheap はドメイン名移管の 1 週間限定プロモーションを開始しました。直接 3...

Amazon Web Services: インテリジェンス、専用設計、統合保護に重点を置き、クラウド ストレージのイノベーションを加速

今日、あらゆるビジネスはデータ主導型であるべきです。データからクラウド サービス、ユーザー エクスペ...

マイクロソフト インテリジェント クラウドは中国のデータセンターを拡張し、2022 年に商用運用を開始します。

[[384907]] 3月3日のBit.netによると、マイクロソフトは中国市場におけるクラウドサー...

パブリック クラウドを使用する場合は、次のセキュリティとコンプライアンスの側面を考慮してください...

著者 |アマン・カンドラ翻訳者 |ブガッティ企画 |ウー・ムー独自のサーバーを構築するには、多額の先...

仮想化について語るパート2 - 仮想化が直面する課題

この部分について説明する前に、まず仮想化に関する一般的な概念を理解しておきましょう。 1. 共通の概...

百度関連検索が2ページ目に表示されやすい意図を分析

今日、関連業界のキーワードを検索したところ、百度の2ページ目の上部に関連検索が表示されることがわかり...

Inspur Cloud が福建省人民病院の「1+1+N」スマート病院構築を支援

病院に直接行かなくても遠隔ビデオで診療を受けることができます。医師はカルテを見なくても患者の病歴や診...

ウェブサイトの最適化の経験: 大規模なサイトは内部リンクに依存し、小規模なサイトは外部リンクに依存します

大規模なサイトは内部リンクに依存し、小規模なサイトは外部リンクに依存すると言われています。この発言に...

未来はここにあります!分散データベースの「星の海」は、決して置き換えに限定されません。

2、3年前、分散データベースなどの技術について話すとき、この新しい技術の応用の見通しを説明するために...

宝月中新小売フォーラム - 企業はどのように新しいマーケティングモデルに変革できるか?

月収10万元の起業の夢を実現するミニプログラム起業支援プラン要約:新しい消費時代と新しいモバイル イ...

革新か誇大広告か?ローコードに関する10の質問:Tencent Cloudの見解

[元記事は51CTO.comより] 2020年以降、ローコードは業界で話題となり、資本市場と企業ユー...

dwidc: 米国CN2独立サーバー、CC攻撃をフィルタリングする多層ファイアウォール、450元、2*e5-2620/32gメモリ/240gSSD+1THDD/30M帯域幅

Dawang Data は現在、米国西海岸のサンノゼ データ センターにある独立サーバーを 50% ...