【问题标题】:How to easily execute R commands on remote server?如何在远程服务器上轻松执行 R 命令?
【发布时间】:2014-02-27 09:49:13
【问题描述】:

我在 Windows 上的速度相当慢的桌面上使用 Excel + R。我对非常快的基于 Ubuntu 的服务器拥有完全的管理员权限。我想知道:如何在服务器上远程执行命令?

我可以做的是用saveRDS保存需要的变量,用loadRDS将它们加载到服务器上,在服务器上执行命令,然后保存结果并在Windows上加载它们。

但这都是非常互动和手动的,很难定期完成。

有没有办法直接从 R 中做这些事情,比如

  1. 通过例如连接服务器ssh,
  2. 传输需要的对象(可以手动指定)
  3. 在服务器上执行给定的代码并等待结果
  4. 获取结果。

我可以远程运行整个 R,但它会产生与网络相关的问题。我在 Excel 中执行的大多数 R 命令都非常快速且需要大量数据。我只需要远程执行一些特定的命令,而不是全部。

【问题讨论】:

  • 您可以使用system直接从R调用shell命令,这样您就可以轻松地将您当前在控制台输入的命令写入R脚本。
  • 其中一个选项是安装 Rstudio 服务器并从那里工作。
  • 没有。 AFAIK RExcel 不适用于远程连接,即使可以,如果我开始通过网络传输所有数据也不会有效。我只需要远程执行特定的命令。

标签: r remote-access


【解决方案1】:

这是我的设置。

  1. 使用 scp 复制您的代码和数据。 (我使用的是 github,所以我从 github 克隆了我的代码。这样做的好处是确保我的工作是可重现的)

  2. (可选)使用 sshfs 将远程文件夹挂载到本地计算机上。这允许您使用本地文本编辑器而不是 ssh 命令行来编辑远程文件。

  3. 将所有你想运行的东西放在一个 R 脚本中(在远程服务器上),然后在 R 批处理模式下通过 ssh 运行它。

【讨论】:

  • 这正是我所做的。太糟糕了,R 没有内置一些客户端/服务器功能。
【解决方案2】:

有几个选项,最简单的是交换安全密钥以避免一直手动输入 SSH/SCP 密码。之后,您可以编写一个简单的 R 脚本:

  1. 将必要的变量保存到数据文件中,
  2. 使用scp上传数据文件到ubuntu服务器
  3. 使用 ssh 运行远程脚本,该脚本将处理数据(您刚刚上传的数据)并将结果存储在另一个数据文件中
  4. 同样,使用 scp 命令将结果传输回您的工作站。

您可以使用 R 的 system 命令运行带有必要选项的 scp 和 ssh。

另一种选择是在远程机器上设置集群工作者,然后您可以使用 clusterExport 导出数据并使用 clusterEvalQ 和 clusterApply 评估表达式。

【讨论】:

  • 如何在远程机器上设置集群?
【解决方案3】:

还有几个选项: 1)您可以使用 Rserve 直接从 R 中执行这些操作。见:https://rforge.net/

请记住,Rserve 可以接受来自 R 客户端的连接,例如参见 how to connect to Rserve with an R client

2) 您可以在您的 linux 机器上设置集群,然后从您的 windows 客户端使用这些集群设施。最简单的就是使用Snow,https://cran.r-project.org/package=snow,另见foreach 和许多其他集群库。

【讨论】:

    猜你喜欢
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多