オープンソースのミドルウェアを使用する: クラウド コンピューティング環境のミドルウェアにはオープンソース フレームワークが採用されており、開発と展開の時間を短縮し、開発の効率と信頼性を向上させることができます。

著者: 禅とコンピュータープログラミングの芸術

1 はじめに

クラウド コンピューティングは、独自の特徴を持つ新しい分散コンピューティング モデルです。リソースの仮想化、柔軟なスケーリング、従量課金制の機能が統合されています。この新しい分散コンピューティング モデルにより、ソフトウェア エンジニアはアプリケーションを作成するときにサーバーのパフォーマンスを気にする必要がなく、アプリケーション自体にのみ集中する必要があります。同時に、クラウド プラットフォームが提供するコンピューティング リソースはオンデマンドで課金できるため、ユーザーは高価なハードウェア機器を購入する必要がありません。

クラウド コンピューティング環境のミドルウェアは通常、Apache Hadoop、Spark、Storm などのオープン ソース フレームワークを使用します。これらのフレームワークは、ソフトウェア開発者とシステム管理者の開発と展開の時間を短縮し、既存のソフトウェア アーキテクチャの困難な問題を効果的に解決できます。たとえば、クラスタのコンピューティング エンジンとして Hadoop を使用すると、データ処理、データ分析、機械学習、グラフ理論の計算を簡単に実行できます。Spark は、大量のデータの並列処理の問題の解決に役立つ分散コンピューティング フレームワークを提供します。Storm は、リアルタイムのストリーム処理に使用され、インターネット規模のデータ ストリームの処理に適しています。

クラウド コンピューティング プラットフォームの特性をより有効に活用するために、クラウド サービス プロバイダーは独自のオープンソース ソフトウェアを立ち上げることがよくあります。たとえば、Amazon AWS は、Amazon Elastic Compute Cloud (EC2) 上の Hadoop クラスターを管理するためにオープンソースの Amazon EMR (Elastic MapReduce) ソフトウェアを提供し、Microsoft Azure も、Apache Spark、Storm、HBase などのフレームワークをサポートするために Azure HDInsight を開始しました。

ただし、Google の GCE や Microsoft の Azure など、一部のエンタープライズ レベルのクラウド コンピューティング プラットフォームでは、オープン ソース ソフトウェアは主に一般向けです。したがって、これらのプラットフォーム上でオープンソース ソフトウェアを最大限に活用する方法は、大きなメリットをもたらす可能性があります。この記事では、クラウド コンピューティング環境におけるオープン ソース ミドルウェアの利点と、エンタープライズ レベルのクラウド プラットフォームでこれらのツールを使用する方法について説明します。

2. クラウドコンピューティング環境におけるオープンソースミドルウェアの利点 まず、クラウドコンピューティング環境におけるオープンソースミドルウェアは、コスト削減と開発サイクルの短縮が可能です。現時点では、オープンソース ツールを使用すると、サーバーを購入してインストールする必要がなくなるため、時間と費用を節約できます。さらに、クラウド サービス プロバイダーは通常、クラウド プラットフォーム サービスの商用ライセンスを提供するため、企業はクラウド サービス プロバイダーの Software-as-a-Service または Software-as-a-Service パッケージを使用できるため、導入と運用にかかる時間とエネルギーが節約されます。メンテナンス。

第 2 に、オープンソース ソフトウェアは長年にわたり継続的に最適化が繰り返されており、優れた安定性とセキュリティを備えています。オープンソース ソフトウェアに基づくツールは、商用ソフトウェアよりも迅速な反復更新の実装が容易であり、企業の増大するビジネス ニーズに対応できます。

3 番目に、クラウド コンピューティング環境のオープン ソース ミドルウェアは、クラスターを自動的に展開、管理、監視できるため、複雑な運用とメンテナンスの作業を大幅に簡素化できます。クラウド サービス プロバイダーは自動化された展開スクリプトまたは API を提供するため、ユーザーはサーバーを手動でインストールまたは構成することなく、簡単な構成で必要なコンポーネントを自動的に展開できます。さらに、クラウド サービス プロバイダーは、クラスターの問題をタイムリーに発見して解決できるように、ログ収集、インジケーターの監視、障害診断など、クラスターを監視するためのさまざまなツールも提供します。

4 番目に、クラウド コンピューティング環境のオープンソース ミドルウェアは柔軟性が高くなります。オープンソースソフトウェアでは、ユーザーが使用するコンポーネントのバージョン、機能設定、動作環境を自由に選択できます。たとえば、ユーザーはオープンソース ソフトウェアを通じて Spark クラスターのストレージ システムを選択し、最も互換性のある HDFS または S3 システムを選択できます。さらに、オープンソース ソフトウェアはさまざまなビジネス シナリオに合わせてカスタマイズおよび開発することもでき、たとえば、広告のクリック予測タスクに適した Spark MLlib モジュールを商用ソフトウェアの統計分析モジュールに置き換えることができます。

3. クラウドコンピューティング環境へのオープンソースミドルウェアの導入 この章では、クラウドコンピューティング環境へのオープンソースミドルウェアの導入プロセスについて詳しく説明します。まず、この記事ではオープンソースミドルウェアの基本的な概念とアーキテクチャについて説明します。次に、一般的に使用されるオープンソース ソフトウェアである Apache Hadoop、Apache Storm、Apache Spark の導入方法を紹介します。最後に、オープンソース ソフトウェアの自動デプロイメント ツールである Ansible の基本的な使い方を紹介します。

3.1 オープンソースミドルウェアの概要

クラウド コンピューティング環境では、オープンソース ミドルウェアが広く使用されている技術分野です。このセクションでは、オープンソース ミドルウェアの関連概念とアーキテクチャについて簡単に紹介します。

3.1.1 ミドルウェアの概念

ミドルウェアは、クライアントとサーバーの間に位置し、両者間の通信、調整、統合を完了する役割を担うソフトウェア システム コンポーネントです。通常、ネットワーク インターフェイス層、メッセージング層、トランザクション マネージャー、ビジネス ルール エンジンなどを含む 1 つ以上のソフトウェア モジュールで構成されます。ミドルウェアには、データベース接続プール、キャッシュ システム、構成管理、セキュリティ管理、リソース割り当て、デプロイメント管理など、さまざまな側面の機能も含まれます。

クラウド コンピューティング環境では、ミドルウェアは通常、サービスとしてのインフラストラクチャ (IaaS)、サービスとしてのプラットフォーム (PaaS)、およびサービスとしてのソフトウェア (SaaS) の 3 つの部分で構成されます。次の図は、これら 3 つのサービスのアーキテクチャを示しています。

IaaS レイヤーは、コンピューティング リソース、ネットワーク、ストレージなどのインフラストラクチャ サービスを提供する役割を果たします。ユーザーは、オペレーティング システムの展開、管理、ハードウェアの構成、ソフトウェア、ハードウェア、ネットワークなどの保守など、サーバーを自分で構成および管理できます。

PaaS 層は、ソフトウェア開発環境、ミドルウェア動作環境、データベースおよびその他の動作プラットフォーム サービスを提供します。ユーザーは、プラットフォームが提供するミドルウェア フレームワークを開発と展開に直接使用できます。このプラットフォームは、メッセージ キュー、データベース、構成管理、キャッシュ システム、セキュリティ メカニズムなどのさまざまなミドルウェア フレームワークを提供できます。

SaaS 層はアプリケーション ソフトウェア サービスを提供し、ユーザーはオンラインでサービスに加入し、提供されるソフトウェア サービスを使用し、ブラウザやモバイル APP などを通じてアクセスできます。クラウド サービス プロバイダーが提供するソフトウェアには複雑なビジネス ロジックが含まれる場合が多く、ユーザーはソフトウェアの詳細を考慮する必要がなく、インターフェイスを使用するだけで対応する作業を完了できます。

3.1.2 ミドルウェアアーキテクチャ

クラウド コンピューティング環境のオープンソース ミドルウェアは、多くの場合、分散コンピューティング モデルに基づいて構築されます。以下の図は、一般的に使用されるオープンソース ミドルウェア アーキテクチャを示しています。

データフロー

分散コンピューティング モデルでは、データはトランスポート層を通過します。従来のミドルウェア アーキテクチャでは、メッセージ キューはクライアントからのデータの受信と保存に使用され、アプリケーションで処理された後、他のミドルウェアまたは最終宛先に送信されます。ただし、クラウド コンピューティング環境では、通常、データは直接接続されず、複数のノードを介して送信されるため、メッセージ キューはこの種のストリーミング データを適切に処理できません。したがって、クラウド コンピューティング環境のオープンソース ミドルウェアは、通常、ストレージ ストリーム、イベント ストリーム、RPC 呼び出しなど、データ フローに他のメソッドを使用します。

分散コンピューティング

オープンソース ミドルウェアの重要な機能は、分散コンピューティング モデルです。このモデルでは、ユーザーがタスクをさまざまなノードに送信し、ミドルウェアがタスクをさまざまなコンピューティング ノードに割り当てて実行します。コンピューティング ノード上で実行されるタスクは、データ処理、機械学習、グラフ理論計算などを分散方式で実行できます。したがって、クラウド コンピューティング環境のオープンソース ミドルウェアは、大量のデータと集中的なタスクを伴うビッグ データ コンピューティングの問題を効果的に解決できます。

モジュール設計

オープン ソース ミドルウェアのアーキテクチャは高度にモジュール化されており、典型的なミドルウェア アーキテクチャを図に示します。これは、メッセージ キュー、コンピューティング エンジン、サービス エージェント、ストレージ、スケジューラ、ネットワーク コンポーネントなどのいくつかのモジュールで構成されます。各モジュールは独立して展開でき、相互に連携して完全なミドルウェア システムを形成できます。

3.2 Hadoop、Storm、Sparkの導入方法

このセクションでは、一般的に使用されるオープンソース ソフトウェアである Apache Hadoop、Apache Storm、および Apache Spark の導入方法を紹介します。

Hadoopの導入方法

Hadoop は、オープンソースの分散コンピューティング フレームワークです。そのインフラストラクチャは、HDFS、MapReduce、YARN で構成されています。HDFS は、データの保存に使用される分散ファイル システムです。MapReduce は、データ処理のための分散コンピューティング モデルです。YARN は、クラスター リソースを一元管理するためのリソース管理システムです。Hadoopの導入方法は以下のとおりです。

  1. 依存関係パッケージをインストールします。すべての Hadoop モジュールには、Java、Python、SSH などの依存関係パッケージのインストールが必要です。

  2. hadoop-env.sh 構成ファイルを構成します。このファイルは、Hadoop の実行環境変数を定義します。

  3. 必要なフォルダーを作成します。/etc/hadoop フォルダーを作成して、すべての Hadoop 関連ファイルの構成を保存します。

  4. core-site.xml 構成ファイルを変更します。HDFS と YARN のデフォルト アドレス、およびその他の一般的な構成項目を構成します。

  5. hdfs-site.xml 構成ファイルを変更します。HDFS名ノードアドレス、レプリカ数、バックアップ数、ブロックサイズなどを設定します。

  6. すべてのノードで ssh パスワード不要のログインを作成します。SSH 秘密キー ピアがすべてのノードに存在することを確認してください。

  7. mapred-site.xml 構成ファイルを構成します。リソースの割り当て、MapReduceジョブの入出力ディレクトリなどを設定します。

  8. yarn-site.xml 構成ファイルを構成します。YARN のリソース割り当てポリシーとキュー構成情報を構成します。

  9. マスターファイルを設定します。マスターノードのIPアドレスを指定します。

  10. スレーブファイルを設定します。計算ノードのIPアドレスを指定します。

  11. NameNode プロセスと DataNode プロセスを開始します。HDFS のマスター ノードとコンピューティング ノードでそれぞれ NameNode プロセスと DataNode プロセスを開始します。

  12. ResourceManager プロセスと NodeManager プロセスを開始します。YARN マスター ノードとコンピューティング ノードでそれぞれ ResourceManager プロセスと NodeManager プロセスを開始します。

  13. Hadoop が適切に動作しているかどうかをテストします。クライアント プログラムを起動し、Hadoop クラスターに接続し、ls、mkdir、cat などの簡単なテスト コマンドを実行します。テストが成功した場合は、Hadoop クラスターが正常にデプロイされたことを意味します。

ストームの導入方法

Storm は、オープンソースの分散型リアルタイム コンピューティング プラットフォームです。その基本アーキテクチャは、Nimbus、Supervisor、Worker で構成されます。Nimbus は、トポロジのスケジュールと実行を担当する独立したクラスターです。スーパーバイザは各マシン上で実行されるプロセスであり、クラスタ内で実行されているトポロジの監視と障害回復を担当します。ワーカーは、各マシン上で実行される JVM プロセスであり、特定のタスクの実行を担当します。

Stormの導入方法は以下のとおりです。

  1. 依存関係パッケージをインストールします。Storm では、JDK、Maven、Zookeeper、およびその他の依存関係パッケージのインストールが必要です。

  2. storm.yaml 構成ファイルを構成します。このファイルは、Storm の主要なパラメータを定義します。

  3. 必要なフォルダーを作成します。/var/log/storm フォルダーを作成して、Storm のログ ファイルを保存します。

  4. storm.yaml 構成ファイルを nimbus ノードにアップロードします。

  5. nimbus ノードで Zookeeper プロセスを開始します。

  6. nimbus ノードで Storm メイン プロセスを開始します。

  7. スーパーバイザ ノードで Storm スーパーバイザ プロセスを開始します。

  8. スーパーバイザ ノードで Storm ワーカー プロセスを開始します。

  9. Storm が適切に動作しているかどうかをテストします。クライアント プログラムを起動し、Storm クラスターに接続し、WordCount、Bolt カウンターなどの単純なテスト トポロジを実行します。テストが成功した場合は、Storm クラスターが正常にデプロイされたことを意味します。

Sparkの導入方法

Spark は、オープンソースの分散コンピューティング フレームワークです。その基本アーキテクチャは、ドライバー、エグゼキューター、クラスター マネージャー、スケジューラー、DAG スケジューラー、タスク ランチャー、シャッフル サービス、および Web UI で構成されます。ドライバーは、ユーザーのジョブの実行を担当するプロセスです。Executor は、クラスターの各ノードで実行される JVM プロセスであり、ジョブの実行を担当します。クラスター マネージャーは、クラスター リソースの管理とジョブ実行のスケジュールを担当するプロセスです。

Sparkのデプロイ方法は以下のとおりです。

  1. 依存関係パッケージをインストールします。Spark では、JDK、Scala、sbt、およびその他の依存パッケージのインストールが必要です。

  2. Spark-env.sh 構成ファイルを構成します。このファイルは、Spark の実行環境変数を定義します。

  3. Spark-defaults.conf 構成ファイルを構成します。このファイルは、Spark ジョブのデフォルトのパラメーターを定義します。

  4. 必要なフォルダーを作成します。/usr/local/spark フォルダーを作成して、Spark 関連ファイルの構成を保存します。

  5. SPARK_HOME 環境変数を設定します。/etc/profile または ~/.bashrc に SPARK_HOME 変数を追加して、Spark インストール ディレクトリをポイントします。

  6. JAVA_HOME 環境変数を設定します。/etc/profile または ~/.bashrc に JAVA_HOME 変数を追加して、JDK インストール ディレクトリをポイントします。

  7. SPARK_MASTER 環境変数を構成します。~/.bash_profile に SPARK_MASTER 変数を追加して、マスター ノードのホスト名を指すようにします。

  8. スーパーバイザ ノードの SSH パスワード不要ログインを設定します。スーパーバイザ ノードの SSH 秘密キー ピアが存在することを確認してください。

  9. すべてのコンピューティング ノードに Spark ソフトウェア パッケージをダウンロードします。

  10. スーパーバイザー ノードで Spark マスター プロセスを開始します。

  11. スーパーバイザー ノードで Spark スレーブ プロセスを開始します。

  12. すべてのコンピューティング ノードで Spark executor プロセスを開始します。

  13. Spark が適切に動作しているかどうかをテストします。クライアント プログラムを起動し、Spark クラスターに接続し、Pi 推定や WordCount などの単純なテスト ジョブを実行します。テストが成功した場合は、Spark クラスターが正常にデプロイされたことを意味します。

Ansibleの基本的な使い方

Ansible は、コンピューター クラスターを自動的に展開、管理、構成するために使用できるオープン ソースの IT 自動化ツールです。SSH プロトコルに基づいており、多数のリモート コンピュータのバッチ管理をサポートします。Ansibleのデプロイ方法は以下のとおりです。

  1. ansibleをインストールします。Ansible は Python で開発されているため、最初に Python をインストールする必要があります。

  2. sshpassをインストールします。sshpass は、シェルで ssh コマンドを実行するために使用される Linux 上のツールです。

  3. SSHキーペアを生成します。ssh-keygen コマンドを使用してキー ペアを生成します。

  4. SSH キー ペアをターゲット ノードにコピーします。生成されたキー ペアをターゲット ノードの ~/.ssh/ ディレクトリにコピーします。

  5. ansible Playbook ファイルでターゲット ノード情報を構成します。ターゲット ノードの IP アドレスまたはホスト名をリストするようにインベントリ ファイルを構成します。

  6. ansible Playbook ファイルでタスク情報を構成します。プレイブックを構成し、ソフトウェアのインストール、ユーザーの作成、ファイルのコピー、スクリプトの実行など、実行するタスクを定義します。

  7. ansible プレイブックを実行します。ターゲット ノードで ansible-playbook コマンドを実行し、指定された Playbook ファイルを実行して、ターゲット ノードの自動デプロイと管理を完了します。

おすすめ

転載: blog.csdn.net/universsky2015/article/details/133502334