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

推薦する

文化省は、違法または不法なオンライン音楽およびアニメウェブサイト185件を調査し、処罰するために動員した。

文化部は文化市場の知的財産権保護に注力するため、最近、地方の文化行政部門と文化市場の総合的な法執行機...

個々のウェブマスターが自分のウェブサイトの健全性を診断する方法について話す

古代の医学書では、病気を治療する際には、すべての医師が観察、聴診、問診、触診の 4 つの手順を踏まな...

企業ウェブサイトの重量を改善する秘訣:製品ページの内部リンクとエクスペリエンスを強化する6つの方法

多くの企業は多くの製品を持っていますが、製品ページの内容は非常に薄く、多くの場合、写真と数行のテキス...

prometeus-VPS4 割引/大プロモーション/複数のコンピュータルーム

もうすぐ新年がやってきます。プロメテウスは皆様に素晴らしいギフトを低価格で提供しています。このような...

青大根アルゴリズムの深い意味を大胆に推測する

【導入】前回の 2 つの記事では、最近導入されたザクロ アルゴリズムの影響を簡単に分析し、その対処方...

2019年海外一流クラウドプロバイダーの配置概要

2019 年のトップ クラウド プロバイダーは、さまざまなアナリストのランキングによるとその地位を維...

Amazon Web Services、量子コンピューティングハードウェアの開発を支援するオープンソースソフトウェアPalaceをリリース

最近、Amazon Web Services は、量子コンピューティング ハードウェアの開発を支援す...

Webmaster.com からの毎日のレポート: Jumei.com が偽造品危機に直面、Android の創設者が辞任

1. ファウンダー証券がTmallに出店、金融商品の電子商取引販売がトレンドに北京ニュース(記者 呉...

CentralHosts-VPS/XEN/Windows/Gポートが25%オフ

CentralHosts は設立されてからかなり経ちます。基本的には Lightwave に似た、個...

基本的な検索エンジン機能: クロール、インデックス作成、関連性と重要度による並べ替え

検索エンジンには、クロールとインデックス作成、そして関連性と重要度に応じて結果の回答をランク付けする...

ソーシャルグループ購入ウェブサイトが将来的に利益を上げるのが困難になるいくつかの主な理由

最近 Business Review に書いたグループ購入に関する記事を共有したいと思います。商店主...

友好的なリンクの交換から、私たちは現実的な人間になり、正式かつ規則的にウェブサイトを運営する方法を知ることができます。

ウェブマスターの間では、「コンテンツは王、外部リンクは皇帝、内部リンクは側室、コードは将軍、キーワー...

外部リンクの重みの減少によるランキングの低下を解消する

検索エンジンのキーワードランキングに影響を与える要素は 200 以上ありますが、その中で外部リンクが...

ウェブサイトのランキングを上げる鍵は、最適化のボトルネックを打破することです

SEO最適化を行うスタッフが最も望んでいるのは、ウェブサイトのランキングが継続的に上昇することです。...