4

makeClusterLinux マシンのR パッケージの関数を使用snow して、リモートの Linux マシンで SOCK クラスターを起動しています。2 台のマシンが正常に通信できるようにすべてが解決したようです (2 台の間で ssh 接続を確立できます)。しかし:

makeCluster("192.168.128.24",type="SOCK")

結果はスローされず、無期限にハングします。

私は何を間違っていますか?

どうもありがとう

4

1 に答える 1

9

残念ながら、スノー (または並列) クラスター オブジェクトを作成するときに問題が発生する可能性が多くあります。最も一般的な失敗モードは、無期限にハングアップすることです。問題はmakeSOCKcluster、クラスター ワーカーを 1 つずつ起動し、マスターが次のワーカーの起動に進む前に、各ワーカー (正常に起動された場合) がマスターにソケット接続を戻す必要があることです。いずれかのワーカーがマスターへの接続に失敗すると、makeSOCKclusterエラー メッセージが表示されずにハングします。ワーカーはエラー メッセージを発行する場合がありますが、デフォルトではエラー メッセージはすべて にリダイレクトされ/dev/nullます。

ssh の問題に加えて、次のmakeSOCKcluster理由でハングする可能性があります。

  • R がワーカー マシンにインストールされていない
  • Snow がワーカー マシンにインストールされていない
  • R または Snow がローカル マシンと同じ場所にインストールされていない
  • 現在のユーザーがワーカー マシンに存在しません
  • ネットワークの問題
  • ファイアウォールの問題

さらに多くの可能性があります。

つまり、詳細な情報がなければ誰もこの問題を診断できないため、その情報を入手するにはトラブルシューティングを行う必要があります。

私の経験では、最も有用なトラブルシューティング手法は、クラスター オブジェクトの作成時に指定して有効にする手動モードです。ワーカーからのエラー メッセージが にリダイレクトされないようmanual=TRUEに設定することもお勧めします。outfile=""/dev/null

cl <- makeSOCKcluster("192.168.128.24", manual=TRUE, outfile="")

makeSOCKcluster指定されたマシンのターミナルで実行する Rscript コマンドを表示し、そのコマンドが実行されるのを待ちます。つまり、あなたの場合、ホスト 192.168.128.24 でワーカーを手動で起動するまで makeSOCKcluster はハングします。これはトラブルシューティング手法であり、問​​題の解決策ではないことに注意してください。ワーカーを手動で起動してみて、ワーカーが起動しない理由についての詳細を取得することをお勧めします。

明らかに、手動モードを使用すると ssh の問題が回避されます (ssh を使用していないため)。したがって、手動モードで SOCK クラスターを正常に作成できる場合は、おそらく ssh が問題です。Rscript コマンドが見つからない場合は、R がインストールされていないか、別の場所にインストールされています。しかし、問題を解決するためのエラー メッセージが表示されることを願っています。

makeSOCKcluster指定されたマシンで指定された Rscript コマンドを実行した後もハングする場合は、ネットワークまたはファイアウォールに問題がある可能性があります。

トラブルシューティングのアドバイスについては、 doParallel / snowfall hangs でクラスターを作成するための私の回答を参照してください。

于 2013-07-31T16:43:54.140 に答える