Sparkの紹介とHadoopとの比較

Sparkの紹介とHadoopとの比較

1. Spark と Hadoop

1.1 Haoopの欠点

  • 1. 自己表現能力が限られている。
  • 2. ディスク IO オーバーヘッドが高い。
  • 3. 高いレイテンシー
  • 4. タスク間の接続には IO オーバーヘッドが伴います。
  • 5. 前のタスクが完了するまで他のタスクを開始できないため、複雑な多段階のコンピューティング タスクの処理が困難になります。

1.2 Hadoop MR に対する利点

  • 1. Spark のコンピューティング モデルも MR に属しますが、Map と Reduce 操作に限定されません。また、さまざまなデータセット操作タイプを提供し、プログラミング モデルは Hadoop MR よりも柔軟です。
  • 2. Spark はインメモリ コンピューティングを提供し、中間結果をメモリ内に保存して反復操作をより効率的に行うことができます。
  • 3. Spark の DAG ベースのタスク スケジューリング実行メカニズムは、Hadoop MR の反復実行メカニズムよりも優れています。
スパークマップリデュース
データ保存構造メモリを使用して、復元力のある分散データセット (RDD) を構築し、操作を実行してデータをキャッシュします。ディスク HDFS ファイルシステムの分割
プログラミングパラダイムDAG (変換+アクション)マップ+リデュース
中間計算結果の保存メモリに保持されるため、アクセス速度はディスクより数桁高速です。ディスクに落ちると、IOとシリアル化およびデシリアル化のコストが高くなります。
タスクメンテナンス方法スレッドプロセス
時間小さなデータセットの読み取りに1秒未満の遅延タスクを開始するには数秒かかります

2. Sparkエコシステム

2.1 ビッグデータ処理の3つのタイプ

1. 複雑なバッチデータ処理

時間の範囲は数十分から数時間です

Haoop マップリデュース

2. 履歴データに基づくインタラクティブなクエリ

時間の範囲は数十秒から数分です

Cloudera と Impala のリアルタイム パフォーマンスは Hive よりも優れています。

3. リアルタイムデータストリームに基づくデータ処理

時間の範囲は数百ミリ秒から数秒です

2.2 BDASアーキテクチャ

2.3 Sparkエコシステム

3. 基本概念とアーキテクチャ設計

3.1 基本概念

3.2 運用アーキテクチャ

Executor を使用した Spark の利点: (Hadoop の MR と比較して)

  • 1. マルチスレッドを使用して特定のタスクを実行し、タスクの起動オーバーヘッドを削減します。
  • 2. Executor には BlockManager ストレージ モジュールがあり、メモリとディスクの両方をストレージ デバイスとして使用して、IO オーバーヘッドを効果的に削減します。

3.3 さまざまな概念の関係

  • アプリケーションはドライバーと複数のジョブで構成されています
  • ジョブは複数のステージから構成されます
  • ステージは、シャッフル関係のない複数のタスクで構成されます。

アプリケーションを実行すると、ドライバーはクラスター マネージャーからリソースを要求し、エグゼキューターを起動します。

そして、アプリケーションコードとファイルをExecutorに送信し、Executor上でタスクを実行します。実行が完了すると、

実行結果はドライバーに返されるか、HDFS または他のデータベースに書き込まれます。

4. Sparkは基本プロセスを実行します

4.1 操作プロセス

1. アプリケーションの基本的な動作環境を構築します。つまり、ドライバーはリソースを申請し、タスクを割り当て、それらを監視するための SparkContext を作成します。

2. リソース マネージャーは、エグゼキュータにリソースを割り当て、エグゼキュータ プロセスを開始します。

  • 3.1 SparkContext は、RDD の依存関係に基づいて DAG グラフを構築し、DAG グラフを DAGScheduler に送信して Stage に解析し、次に各 TaskSet を基礎となるスケジューラ TaskScheduler に送信して処理します。
  • 3.2 Executor は SparkContext から Task を申請し、TaskScheduler は Task を Executor に送信して実行し、アプリケーション コードを提供します。

4. タスクは Executor 上で実行され、実行結果を TaskScheduler にフィードバックし、次に DAGScheduler にフィードバックします。実行が完了すると、データが書き込まれ、すべてのリソースが解放されます。

4.2 運用アーキテクチャの機能

1. 各アプリケーションには独自の Executor プロセスがあり、アプリケーションの実行中はプロセスが常駐します。 Executor プロセスは、タスクをマルチスレッド方式で実行します。

2. Spark 実行プロセスは、Executor プロセスを取得して通信を維持できる限り、リソース マネージャーとは関係ありません。

3. タスクは、データの局所性や投機的実行などの最適化メカニズムを使用します。 (計算がデータに近づきます。)

5. Sparkの導入と適用方法

5.1 Sparkの3つの展開方法

5.1.1 スタンドアロン

MR1.0 と同様に、スロットはリソース割り当て単位ですが、パフォーマンスは良くありません。

5.1.2 Mesos 上の Spark

Mesos と Spark には一定の親和性があります。

5.1.3 YARN 上の Spark

MesosとYarnのつながり

5.2 Hadoop+StormアーキテクチャからSparkアーキテクチャへ

Hadoop+Stormアーキテクチャ

この展開方法はより複雑です。

Sparkアーキテクチャを使用してバッチ処理とストリーム処理のニーズを満たす

Spark は高速な小規模バッチ コンピューティングを使用してストリーム コンピューティングをシミュレートしますが、実際のストリーム コンピューティングではありません。

ミリ秒レベルのストリーム コンピューティングを実現することは不可能です。ミリ秒レベルのリアルタイム応答を必要とするエンタープライズ アプリケーションでは、Storm などのストリーム コンピューティング フレームワークが依然として必要です。

Spark アーキテクチャの利点:

  • 1. ワンクリックでのインストールと構成、スレッドレベルのタスク監視とアラーム。
  • 2. ハードウェア クラスタ、ソフトウェア メンテナンス、タスク監視、アプリケーション開発の難易度を軽減します。
  • 3. 統合されたハードウェアとコンピューティング プラットフォームのリソース プールを簡単に作成できます。

5.3 Hadoop と Spark の統合デプロイメント

YARNでは異なるコンピューティングフレームワークが均一に実行される

メリットは次のとおりです。

  • 1. コンピューティング リソースは、必要に応じてスケールアップまたはスケールダウンできます。
  • 2. 負荷アプリケーションを混在させる必要がなく、クラスターの使用率が高くなります。
  • 3. クラスター間でのデータ移行を避けるために基盤となるストレージを共有する

現状:

1. Spark は現在、Hadoop エコシステムの一部のコンポーネントによって実装されている機能を置き換えることはできません。

2. Hadoop コンポーネントを使用して開発された既存のアプリケーションを Spark に完全に移行するには、一定の費用がかかります。

Sparkの紹介とHadoopとの比較分析に関するこの記事はこれで終わりです。SparkとHadoopの関連コンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Hadoop を使用せずに Linux 環境に Spark のスタンドアロン バージョンをインストールする方法
  • 一般的な Hadoop および Spark プロジェクト ケース 7 つについての簡単な説明

<<:  jsを使用して動的な背景を実現する

>>:  標準的なHTMLの書き方は、Dreamweaverによって自動的に生成されるものとは異なります。

推薦する

MySQL 5.7.21 のインストールと設定のチュートリアル

mysql5.7.21の簡単なインストール構成は次のとおりです。 1. MySQLのインストール1....

CSS スティッキーフッター実装コード

この記事では、CSS スティッキー フッターの実装コードを紹介し、共有します。詳細は次のとおりです。...

Docker で ElasticSearch をデプロイする方法

1. ElasticSearch とは何ですか? Elasticsearch も Java で開発さ...

Reactでのイベントバインディングの実装は3つの方法を指しています

1. 矢印関数1. 矢印関数自体はこれをバインドしないという事実を利用します。 2. render(...

Tomcatディレクトリ構造の詳細な説明

目次ディレクトリ構造binディレクトリconfディレクトリlibディレクトリwebapps ディレク...

Dockerはmysqldumpコマンドを使用してプロジェクト内のmysqlデータをバックアップおよびエクスポートします。

mysqldump コマンドはじめに: データベースバックアッププログラム形式: mysqldum...

CentOS 7.9 の zabbix5.0.14 のインストールと設定プロセス

目次1. 基本的な環境設定2. データベースをインストールする3. zabbix関連コンポーネントを...

vue3 における vuex と pinia の落とし穴

目次導入インストールと使用方法文章の相違点と類似点の簡単な比較VuexとPiniaの長所と短所Pin...

Mybatis マッパー動的プロキシの原理の分析

序文動的プロキシの原理を説明する前に、まず、mybatis を統合した後の dao 層の 2 つの実...

動的および静的分離を実現する nginx のサンプルコード

1. nginxの動的と静的の分離の簡単な設定web1は静的サーバー、web2は動的サーバー、nod...

Apache Spark 2.0ジョブは完了するまでに長い時間がかかります

現象Apache Spark 2.x を使用すると、Spark ジョブがすべて完了しているにもかかわ...

MySQL 最適化戦略 (推奨)

要約すれば: 1. データベースの設計とテーブルの作成時にパフォーマンスを考慮する2. SQLの記述...

JavaScript関数導入の詳しい説明

目次機能紹介関数関数の作成コンストラクタは関数を作成する関数宣言は関数を作成する関数式関数を作成する...

CSS 極座標のサンプルコード

序文このプロジェクトには、衛星測位用のグラフィックスを含むチャートの要件があり、北半球または南半球の...

CentOS 8.1 で LEMP (Linux+Nginx+MySQL+PHP) 環境を構築する (チュートリアルの詳細)

目次ステップ1: CentOS 8でパッケージを更新するステップ2: CentOS 8にNginx ...