在集群环境中安装R(步骤清晰内容详实,堪称无脑教程!)

2023-11-07

在集群环境下如何解决需要使用R语言的需求?

关键词: PBS作业调度系统; HPC; R;

本文最初思路构思于2018/05,成文于2018/10/17

本文背景是博主的最新一篇论文(上位基因检测机器学习算法创新)临近实验尾声,已经完成在模拟数据中的检测,现在需要在真实数据上进行测试,奈何真实基因数据过于庞大,本地、单机的解决方案捉襟见肘,所以需要调用学院的集群来进行数据处理和运算。

本文设定实验环境有一个最大的痛点是无法重启,原因1、是博主并非管理员只是使用者 2、集群并非是博主一人在使用,所以使用本文方案,无需重启集群,且不需要拥有管理员权限

博主的其它文章在短短一年时间里已经积累阅读量超过四万余次并收获很多好评也帮到了不少朋友(见该文章评论区)。如果您觉得我这篇文章写得不错;或者您也像博主一样在找资料的时候被垃圾转载、胡乱复制的博文气的肝颤;请务必用万分之一秒的时间为本文点个赞,既对作者表示认同,又为后面来这儿的朋友提供一下对这篇博文质量的参考!

集群操作环境

系统环境:CentOS/Redhat系–20节点集群

登陆节点硬件配置:Intel® Xeon® CPU E5-2609 v2 @ 2.50GHz

Tips:据有经验的老司机学长说装最新版本的R有可能会出现什么bug所以要装旧一点版本的R

所以我使用了与本机开发环境相同的R版本:3.4.1,我已经开发完毕的R包也是基于这个版本的R。

另外需要集群已经安装了gcc,最好是新一点的版本,不需要7.1.0那么新,但最少也要4.4.7这样的版本。

下面正式开始 Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved 安装!

1. 文件夹创建

  • 进入登陆节点的路径下,建立两个文件夹:package、src
  • 进入src中cd src

2. 下载R安装包

  • src文件夹中使用如下命令:
$> wget https://cran.r-project.org/src/base/R-3/R-3.4.1.tar.gz

$> tar -zxvf R-3.4.1.tar.gz

# -z:有gzip属性的
# -x:解压
# -v:显示所有过程
# -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

3. 接下来安装各种R以及依赖

本文出现的命令建议一条一条复制粘贴回车运行,不过高端玩家自己搞一个.sh文件运行也不是不行就是了。

3.1-a R安装

src文件夹

cd R-3.4.1
mkdir builddir
cd builddir
 ../configure --prefix=$HOME/packages/R '--with-cairo' \
 '--with-jpeglib' '--with-readline' '--with-tcltk' \
 '--with-blas' '--with-lapack' '--enable-R-profiling' \
 '--enable-R-shlib' \
 '--enable-memory-profiling'
# Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

走到这步,zlib会报错,不用担心,Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved 一切尽在掌握中。

Tips:这么直接安装R一定不会成功,因为包括zlib,R的安装还需要很多依赖。所以与其不停重新安装R看它报错哪个再去修依赖,不如全部提前安装好再回头去装R这样一次成功。所以下面的每部分,都应该在安装R之前执行,不过我也会把如果不提前装以下某个特定依赖而直接安装R会产生的报错信息一并给出,作为后面来的朋友的troubleshoot

3.1-b 安装zlib依赖

本部分是针对安装R中出现类似如下报错:

checking if zlib version >= 1.2.5... no
checking whether zlib support suffices... configure: error: zlib
library and headers are required

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

zlib依赖安装命令:

cd ~/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$HOME/packages
make
make install

3.2 安装bzip依赖

本部分是针对安装R中出现类似如下报错:

checking bzlib.h presence... yes
checking for bzlib.h... yes
checking if bzip2 version >= 1.0.6... no
checking whether bzip2 support suffices... configure: 
error: bzip2 library and headers are required

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

bzip依赖安装命令:

cd ~/src
wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar xzvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6

# 记住要加入一个 -fPIC 到 CFLAG 。(在 Makefile中CFLAG=-fPIC -Wall -Winline -O2 -g...)
# Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

make -f Makefile-libbz2_so
make clean
make
make -n install PREFIX=$HOME/packages
make install PREFIX=$HOME/packages

3.3 安装liblzma依赖

本部分是针对安装R中出现类似如下报错:

checking whether bzip2 support suffices... no
checking for lzma_version_number in -llzma... no
configure: error: "liblzma library and headers are required"

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

直接安装liblzma依赖我就没见有人成功过,更好的解决办法是安装一个名为xz的包,它包含了liblzma,而且安装成功率极高。

xz依赖安装命令:

cd ~/src
wget http://tukaani.org/xz/xz-5.2.2.tar.gz
tar xzvf xz-5.2.2.tar.gz
cd xz-5.2.2
./configure --prefix=$HOME/packages
make -j3
make install

3.4 安装pcre依赖

本部分是针对安装R中出现类似如下报错:

checking for pcre/pcre.h... no
checking if PCRE version >= 8.10, < 10.0 and has UTF-8 support... no checking whether PCRE support suffices... configure: error: pcre >= 8.10 library and headers are required

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

pcre依赖安装命令:

cd ~/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar xzvf pcre-8.38.tar.gz
cd pcre-8.38
./configure --enable-utf8 --prefix=$HOME/packages
make 
make install

3.5 安装libcurl依赖

本部分是针对安装R中出现类似如下报错:

checking libcurl version ... 7.19.7
checking curl/curl.h usability... yes
checking curl/curl.h presence... yes
checking for curl/curl.h... yes
checking if libcurl is version 7 and >= 7.28.0... no
configure: error: libcurl >= 7.28.0 library and headers are 
required with support for https

而提供解决办法,更好的方案是直接按照下面的命令先把所有依赖装好,最后再安装R,一次成功。

libcurl依赖安装命令:

cd ~/src
# Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
wget --no-check-certificate https://curl.haxx.se/download/curl-7.47.1.tar.gz
tar xzvf curl-7.47.1.tar.gz
cd curl-7.47.1
./configure --prefix=$HOME/packages
make -j3
make install

3.6 所有依赖都安装完毕,重新安装R

cd ~/src
cd R-3.4.1/
rm -rf builddir # Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
mkdir builddir
cd builddir/
../configure --prefix=$HOME/packages/R --enable-R-shlib=yes --with-tcltk
make
make install

此时按照博主的情况,R直接成功安装。

4. 调用R来跑你的R代码

因为我只是集群的使用者,没有管理员权限,所以我能做的只有通过修改.bashrc文件来在命令行直接通过命令RRscript来调用R。

vim ~/.bashrc

在vim下修改.bashrc文件中R_HOMER_LIB(加入这几个变量)

# .bashrc file under vim, add these lines
export R_HOME=$HOME/packages/R
export R_LIBS=$HOME/packages/R/lib64/library # Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
export PATH=$PATH:$R_HOME/bin

source命令使.bashrc文件的修改生效:

source ~/.bashrc

5. PBS脚本的编写用来在集群中运行R程序

与文章主题相关度不高故暂不添加。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

如果有需要想了解这部分的内容,点赞博文后在评论区提出,如果很多人有此需求,我会考虑增加本部分。

最后附一张集群节点当前占用情况图:

nodes' occupation

Reference

[1] http://pj.freefaculty.org/blog/?p=315

(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


visitor tracker
访客追踪插件


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在集群环境中安装R(步骤清晰内容详实,堪称无脑教程!) 的相关文章

  • 如何从 Fortran 调用 R 函数?

    根据http gallery rcpp org articles r function from c http gallery rcpp org articles r function from c Rcpp 允许用户从 C 调用 R 函数
  • 在shiny中过滤传单地图数据

    我在用传单地图设置这个闪亮的东西时遇到了麻烦 我的原帖 https stackoverflow com questions 50111566 applying leaflet map bounds to filter data within
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • R - Plm 和 lm - 固定效应

    我有一个平衡面板数据集 df 本质上由三个变量组成 A B and Y 对于一堆独特识别的区域来说 它会随着时间的推移而变化 我想运行一个回归 其中包括区域 下面等式中的区域 和时间 年份 固定效应 如果我没记错的话 我可以通过不同的方式来
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 使用 pracma::findpeaks 识别持续峰值

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • 在 R 中绘制 Likert 变量的堆积条形图

    假设我有一个如下所示的数据框 P Q1 Q2 1 1 4 1 2 2 3 4 3 1 1 4 其中的列告诉我哪个人相应地回答了问题 q1 q2 中的哪一个 这些问题需要按照 4 分李克特量表进行回答 例如 批准 表示 1 稍微批准 表示 2
  • 以引用透明的方式从函数的省略号参数中提取符号

    事情又发生了 我正要按下发布答案按钮的问题被删除了 我正在寻找一种方法来从函数的省略号参数中提取绑定到符号的对象的值以及符号 也就是说 我试图以引用透明的方式从省略号中提取符号 我尝试过使用替代品和lazy dots 但没有成功 funct
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use
  • 使用 ggmap 截断密度多边形

    我在使用 R ggmap 绘制密度图时遇到问题 我的数据如下所示 gt head W date lat lon dist 1 2010 01 01 31 942 86 659 292 415 2 2010 01 10 32 970 84 1
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • R:如何获取该月的周数

    我是 R 新手 我想要该日期所属月份的周数 通过使用以下代码 gt CurrentDate lt Sys Date gt Week Number lt format CurrentDate format U gt Week Number 3
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • R:使用 tidyverse 将 NA 替换为 df 中的其他变量

    我想使用 tidyverse 替换 df 中的 NA 值 我想要的值应该从其他列中计算出来 input ID X1 X2 X3 A 0 96 NA 0 97 B 1 00 NA 1 01 C 0 98 0 03 NA A 1 00 NA 1
  • 线性判别分析图

    如何将样本 ID 行号 作为标签添加到此 LDA 图中的每个点 library MASS ldaobject lt lda Species data iris plot ldaobject panel function x y points

随机推荐

  • SAP/FICO/BAPI_ACC_DOCUMENT_POST-外币凭证金额和本位币误差问题处理

    场景 通过BAPI ACC DOCUMENT POST创建USD币别凭证SAP会自动带出CNY本位币金额 本位币金额是USD通过SAP配置的汇率计算出来的 有时候会有误差 想要实现的功能 凭证金额和本位币金额都有外部系统传入设置不需要SAP
  • SQL视图的使用场景/案例

    背景原因 一方面 在一个项目的实际开发过程中牵涉到复杂业务的时候 我们不可避免的需要使用中间表来进行数据连接 一方面 采用Hibernate进行主外键进行关联 多对多 多对一 一对一等 采用主外键关联在数据的操作过程中具有很强的耦合性 尤其
  • gitlab配置ssh密钥及简单使用

    gitlab安装可参考https blog whsir com post 1419 html 演示环境 当前系统Centos6 9 使用IP192 168 0 80 修改gitlab仓库地址 编辑gitlab yml文件 vim opt g
  • 关于安卓调试的log系统

    在安卓系统下 对应用程序的调试 有一个特有的方式 就是log系统 其实就和C语言中的printf函数的使用类似 但是 它是将调试信息存入了缓冲区内 而安卓有四个缓冲区 他的设计模式是模仿了linux内核中的缓冲区模式 将所有的调试信息放入缓
  • Redis的IO多路复用原理

    什么是阻塞 非阻塞 异步同步 select poll epoll 今天我们用一遍文章解开这多年的迷惑 首先我们想要通过网络接收消息 是这样的一个步骤 用户空间向内核空间请求网络数据 内核空间把网卡数据读取到内核缓冲区 将内核缓冲区的数据复制
  • RC正弦波震荡电路

    就开始边写边整理自己的思路吧 毕竟今天刚刚学完 振荡电路是没有输入却有输出的电路 而且是正弦波 就是从白噪声放大 选频得来的 So 可想而知 这个电路需要放大部分 用来放大我们所需的部分 其实是在放大所有频率的 没办法 选频网络 就是两个滤
  • educoder算法设计与分析 实验三 动态规划实验拓展

    实验三 动态规划实验拓展 第1关 聪明的寻宝人 第2关 基因检测 第3关 药剂稀释 第4关 找相似串 第1关 聪明的寻宝人 题目描述 本关任务 计算寻宝人所能带走的宝物的最大价值 一个寻宝人在沙漠中发现一处神秘的宝藏 宝藏中共有n个宝物 n
  • activiti7执行流程详解

    什么是工作流 官方定义 工作流是将一组任务组织起来以完成某个经营过程 定义了任务的触发顺序和触发条件 每个任务可以由一个或多个软件系统完成 也可以由一个或一组人完成 还可以由一个或多个人与软件系统协作完 我的理解 工作流就是针对程序的业务流
  • Vue Grid Layout -️ 适用Vue.js的栅格布局系统,在vue3+上使用

    文章目录 1 官网简介 2 在vue3中使用 1 需要导入vue3支持的版本插件 2 在mian js里引入 3 在组件中使用 3 layout布局的计算逻辑 4 gridLayout 的属性 该栅格系统目前对 vue2 的支持是最好的 v
  • 一文说尽用Python赚钱的五种方法!

    Python是一种非常流行的编程语言 因此Python开发人员可以从众多工作选择中进行选择 您可以学习Python 建立良好的产品组合并成为全职开发人员 也可以选择Python编码作为您的自由职业 我们仅介绍了使用Python赚钱的几种常见
  • 【安全狗】Linux后渗透常见后门驻留方式分析

    引言 当RedTeam拿下了一台服务器并获取到系统较高权限 但不知道服务器的凭证时 RedTeam会采用怎样的技术获取系统凭证呢 又或者 在RedTeam拿下一台服务器 为达到长久控制的目的而专门定制持久化后门 免杀肯定是必须的 的前提下
  • 一张图比較 Docker 和 Git:镜像管理设计理念

    Docker 的镜像管理设计中大量借鉴了 Git 的理念 以下这张图将对两者的核心概念和操作进行比較 有助于大家高速掌握管理 Docker 镜像的正确方式 微信订阅版本号 http mp weixin qq com s biz MzA5MT
  • 前端基础自查

    目录 h5和css3的认知 data v 03da18b4 http部分 前端HTTP优化 网页有哪些部分 服务器渲染 跨域 栅格式布局 阻止冒泡的方法 jq的认知 移动端的适配 不同尺寸屏幕 适配不同浏览器 大屏适配 设计稿 数组重复去重
  • laravel输出HTML内容

    blade模板引擎中的 xxx 表达式的返回值将被自动传递给 PHP 的 htmlentities 函数进行处理 以防止 XSS 攻击 如果需要展示未转义的数据 可以使用 xxx
  • 达梦学习进阶-DM8搭建主备切换

    达梦学习进阶 DM8搭建主备切换 达梦学习进阶 DM8搭建主备切换 随着学习深入 单机架构的达梦很少能满足生产环境的灾备要求 而且单机往往测试库用到的比较多 生产环境还是建议搭建主从或者集群 比较稳妥 所以知识储备还是要做好 今天就来冲击一
  • 论文笔记:Adaptive Graph Convolutional Recurrent Network for Traffic Forecasting

    NIPS 2020 1 abstract intro 当前的大多数深度学习方法基于共享参数设计模型 不同节点对应同一套参数 但是 由于每条道路的具体情况不一样 使用同一套参数无法捕捉细粒度的数据模式 gt 这篇论文设计了节点自适应参数学习
  • M62429L音量控制IC驱动

    前言 最近项目开发中 要控制AV端的音量 由于主控端的AV音量控制gpio被复用为其它功能口了 不得已增加一个ic去控制音量的输出 这里使用的是M62429L音量控制IC 1 M62429音量ic概述 M62429L是一款串行数据控制的双声
  • STM32CubeMx使用教程(四)——定时器中断

    前言 本节课将了解定时器的基本功能及其配置方法 还接触 stm32 中最重要的概念之一 中断 介绍在 cubeMX 中如何对中断进行设置 如何开启中断以及配置中断的优先级等 最后将实现由定时器触发的定时器中断 控制 LED 灯的闪烁 准备工
  • Scientific Toolworks Understand(代码分析软件) v5.1.1001免费版

    Scientific Toolworks Understand 代码分析软件 是一款支持多平台代码分析软件 使用这款Scientific Toolworks Understand 代码分析软件 可以让您根据不同的编译环境对代码进行整体编译
  • 在集群环境中安装R(步骤清晰内容详实,堪称无脑教程!)

    在集群环境下如何解决需要使用R语言的需求 关键词 PBS作业调度系统 HPC R 本文最初思路构思于2018 05 成文于2018 10 17 本文背景是博主的最新一篇论文 上位基因检测机器学习算法创新 临近实验尾声 已经完成在模拟数据中的