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によって自動的に生成されるものとは異なります。

推薦する

Dockerコンテナデータボリュームの原理と使用法の分析

コンテナデータボリュームとはデータがコンテナ内にある場合、コンテナを削除するとデータは失われます。例...

Linux ディスクデバイスと LVM 管理コマンドの詳細な例

序文Linux オペレーティング システムでは、デバイス ファイルは特別なタイプのファイルです。これ...

MySQL をベースにしたシンプルな検索エンジンを実装する

目次MySQL ベースの検索エンジンの実装1. ngram全文パーサー2. 全文インデックスを作成す...

Linux でタスク用のカスタム システム トレイ インジケーターを作成する

システム トレイ アイコンは、今日でも魔法のような機能です。アイコンを右クリックして目的のアクション...

Celery と Docker を使用して Django で定期的なタスクを処理する方法

Django アプリケーションを構築して拡張していくと、必然的に特定のタスクをバックグラウンドで自動...

Vue の親子コンポーネントの値転送と一方向データフローの問題の詳細な説明

目次序文1. 親コンポーネントが子コンポーネントに値を渡す2. サブコンポーネントのprops型制約...

MySQL5.7.27-winx64 バージョン win10 のダウンロードとインストールのチュートリアル図

MySQL 5.7 のインストール私たちは学校で MySQL データベースを学んでいます。先生は私た...

MySQL 8.0 の新機能 - チェック制約の紹介

目次序文チェック制約作成、削除、表示制限要約する序文MySQL 8.0 では、チェック制約という非常...

JavaScript で最も高速なループはどれですか?

どの for ループまたは反復子がニーズに適しているかを知ることで、アプリケーションのパフォーマンス...

MySQL PXC は IST 送信のみで新しいノードを構築します (推奨)

需要シナリオ: 既存の PXC 環境には大量のデータがあります。新しく購入したサーバーをこのクラスタ...

Mysqlのインポートとエクスポート時に発生する問題の解決

背景すべての業務を Docker の運用管理に移行してから、一連の落とし穴に遭遇しましたが、今回は ...

XHTML: フレーム構造タグ

フレーム構造タグ <frameset></frameset>フレームを使用す...

MySQLの最適化の詳細な分析とパフォーマンス

導入データベースを使用したことがある人なら、機能面での like 記号と = 記号の類似点と相違点を...

CUDA10.0 のインストールと Ubuntu での問題

Tensorflow バージョンと Cuda および CUDNN の対応: https://tens...

リモートDockerを使用した統合テスト環境の構築手順

需要背景チームには統合テストが必要であり、そのためには、mysql や rabbitmq などのミド...