web-dev-qa-db-ja.com

リモートサーバーでRコマンドを簡単に実行するにはどうすればよいですか?

かなり遅いデスクトップのWindowsでExcel + Rを使用しています。私は非常に高速なUbuntuベースのサーバーへの完全な管理者アクセス権を持っています。私は疑問に思っています:サーバー上でコマンドをリモートで実行する方法は?

私にできることは、必要な変数をsaveRDSで保存し、それらをloadRDSでサーバーにロードし、サーバーでコマンドを実行してから、結果を保存してWindowsにロードすることです。

しかし、それはすべて非常にインタラクティブで手動であり、定期的に行うことはほとんどできません。

Rから直接何かをする方法はありますか?

  1. たとえば、サーバーに接続します。 ssh、
  2. 必要なオブジェクトを転送します(手動で指定できます)
  3. サーバー上で指定されたコードを実行し、結果を待ちます
  4. 結果を取得します。

R全体をリモートで実行することもできますが、ネットワーク関連の問題が発生します。私がExcel内から実行するほとんどのRコマンドは、非常に高速でデータを大量に消費します。すべてではなく、いくつかの特定のコマンドをリモートで実行する必要があります。

11
Adam Ryczkowski

さらにいくつかのオプションがあります:1)Rserveを使用してRから直接作業を行うことができます。参照: https://rforge.net/

RserveはRクライアントからの接続を受け入れることができることに注意してください。たとえば RクライアントでRserveに接続する方法 を参照してください。

2)Linuxマシンでクラスターをセットアップし、Windowsクライアントからこれらのクラスター機能を使用できます。最も簡単なのはSnowを使用することです https://cran.r-project.org/package=snow 、foreachや他の多くのクラスターライブラリも参照してください。

2
df239

これが私の設定です。

  1. Scpを使用してコードとデータをコピーします。 (私はgithubを使用したので、githubからコードを複製します。これには、作業が再現可能であることを確認できるという利点があります)

  2. (オプション)sshfsを使用して、ローカルマシンにリモートフォルダーをマウントします。これにより、sshコマンドラインの代わりにローカルテキストエディタを使用してリモートファイルを編集できます。

  3. 実行したいすべてのものを(リモートサーバー上の)Rスクリプトに入れてから、Rバッチモードでsshを介して実行します。

5
Heisenberg

いくつかのオプションがあります。最も簡単なは、SSH/SCPパスワードを常に手動で入力しないように、安全なキーを交換することです。この後、次のような単純なRスクリプトを作成できます。

  1. 必要な変数をデータファイルに保存し、
  2. Scpを使用してデータファイルをubuntuサーバーにアップロードします
  3. Sshを使用して、(アップロードしたばかりの)データを処理し、結果を別のデータファイルに保存するリモートスクリプトを実行します。
  4. ここでも、scpコマンドを使用して、結果をワークステーションに転送します。

Rのsystemコマンドを使用して、必要なオプションを指定してscpおよびsshを実行できます。

別のオプションリモートマシンにクラスターワーカーを設定すると、clusterExportを使用してデータをエクスポートし、clusterEvalQとclusterApplyを使用して式を評価できます。

3
df239