Linuxのローカルネットワークでコンピューティングクラスタを設定する方法

Linuxのローカルネットワークでコンピューティングクラスタを設定する方法

ローカルネットワークにmanjaroを実行している3台のコンピュータがあります。私は最初のコンピュータでCPUを最大化するdask、pandasなどを使ってPythonスクリプトを実行しており、作業が完了するまで30分以上待たなければならないことがよくあります。他の目的でローカルネットワークにすでに3つのコンピュータが設定されているので、そのCPUの利点も活用したいと思います。私はLinuxディストリビューションを変更したくないので、このコンピュータで他のサーバーを実行し続けたいと思います。私は通常、複数の処理(独立したデータでのみ動作するループ)に簡単に最適化できるPythonスクリプトを実行します。これを達成する方法はありますか?

ベストアンサー1

ここで詳しく説明するには広すぎるトピックですが、簡単な概要を見るには次のものが必要です。

  • 一種の共有ストレージ(例:ネットワークファイルシステム)すべてのコンピュータがスクリプトとデータにアクセスできるようにします。
  • タスクスケジューラとリソース/ワークロードマネージャ(例:
  • mpi4pyPythonプロセスが互いに通信する必要がある場合(完全に別々のプロセスである場合は通信しない)、メッセージングライブラリの種類が必要になる場合があります(たとえば)。
  • ただし、権限の問題を回避するには、すべてのユーザーでタスクを実行してください。〜しなければならないすべてのシステムで同じUIDとGIDを持っています。

マシンの1つをヘッドノードまたはコントロールノードとして設定します。これはおそらくストレージサーバーでなければなりません。 a) 最も少なく使用され、b) 最も多くの記憶領域 (またはより多くの記憶領域のためのドライブ ベイ) を持つコンピュータは LAN 上のコンピュータです。このシステムでバッチジョブを送信する必要があります。

ところで、制御ノードはコンピューティングノードとしても機能し得る。

他の2つのマシンは「コンピューティングノード」であり、ストレージサーバー上のクライアントである必要があります(たとえば、NFSを使用している場合は、NFSサーバーからエクスポートされたNFSディレクトリをマウントする必要があります)。


これまでは望ましくないかもしれませんが、専用クラスタにはストレージノード(nfsまたはセファロスポリンまたはその他)、一部の集中型認証サーバー(素晴らしいまたはLDAPまたはその他)、ヘッドノード、およびコンピューティングノードのすべてのユーザーがファイルサーバーからホームディレクトリをマウントします。

しかし、「実際の」クラスターがどのように設計され構築されているか(または少なくとも概要を取得する方法)を見ることは価値があります。そこから3ノードクラスタに縮小するためのいくつかの良いアイデアを得ることができるからです。

おすすめ記事