在集群环境中安装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(步骤清晰内容详实,堪称无脑教程!) 的相关文章

  • 如何在 Shiny 中提取动态生成的输入值?

    我正在创建一个闪亮的应用程序 它将根据客户的不同功能为客户生成分数 在我闪亮的应用程序中 我提供了 checkboxGroupInput 来选择所需的功能 根据所选功能 应用程序将动态地将 numericInput 添加到 Web ui 以
  • picker输入字体或背景颜色

    我在闪亮的仪表板中使用 pickerInput 这很好 除了一个问题 背景颜色和字体颜色太相似 使得过滤器选择难以阅读 有什么办法可以改变背景或字体颜色吗 如果可能的话 我想继续使用 pickerInput 但如果有一个带有 selectI
  • 将列表中的每个元素转换为数据框中的一列

    假设我有以下列表 d library combinat d permn c a b c 这看起来如下 1 1 a b c 2 1 a c b 3 1 c a b 4 1 c b a 5 1 b c a 6 1 b a c 是否可以将此列表的
  • 我可以使用哪个 R 函数来查找两条线的交点?

    我刚刚研究了 stackoverflow 上所有的 在 R 中寻找交集 问题 它们要么是关于曲线 要么是关于分布像这个 https stackoverflow com questions 20519431 finding point of
  • R ggplot 中的柯尔莫哥洛夫-斯米尔诺夫图

    我正在尝试在 r 中绘制 KS 图 一切似乎都很顺利 除了我只能使用颜色来可视化两个不同的样本而不是线型这一事实 我已经尝试过以下方法 sample1 lt SD13009 sample2 lt SD13009PB group lt c r
  • sapply - 保留列名称

    我试图总结数据集中许多不同列 变量 的平均值 标准差等 我已经编写了自己的汇总函数 以准确返回我需要和正在使用的内容sapply立即将此函数应用于所有变量 它工作正常 但是返回的数据帧没有列名 我似乎甚至无法使用列号引用重命名它们 也就是说
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • 如何按定义的顺序将图像合并到一个文件中

    我有大约 100 张图像 png 我不想手动执行此操作 而是希望将它们按照定义的顺序 基于文件名 并排放置在一个 pdf 中 每行 12 个图像 有人有什么建议吗 我按照下面托马斯告诉我的方法尝试了 它把它们贴在旁边有一个黑边 我怎样才能去
  • 在 R 中提取 data.frames 列表的名称以及 data.frame 中的值

    在下面的代码中 j是 data frames 的命名列表 我想知道是否有办法 a 提取变量的数值 即one short and one long 在 data frames 内并附加它们的相关名称 即 AAA or BBB or CCC 到
  • 在网格中制作一个矩形图例,并标记行和列

    我有一个 ggplot 我将因子映射到填充和 alpha 如下所示 set seed 47 the data lt data frame value rpois 6 lambda 20 cat1 rep c A B each 3 cat2
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • 在ggplot中设置y轴中断

    我在代码中设置中断时遇到困难 我尝试添加breaks seq 0 100 by 20 但似乎无法让它正常工作 本质上我希望 Y 轴从 0 到 100 每 20 个刻度一次 YearlyCI lt read table header T te
  • ggplot:如何限制条形图中的输出,以便仅显示最频繁出现的情况?

    我几个小时以来一直在寻找这个简单的东西 但没有结果 我有一个数据框 其中一列为变量 国家 地区 我想要两件事以下 绘制最常见的国家 地区 最常见的位于顶部 找到部分解决方案EDIT找到完整的解决方案 gt gt 重点问题是根据频率限制条形图
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • R - 基于列名称的子集

    我的数据框有超过 120 列 变量 我想根据列名称创建子集 例如 我想创建一个子集 其中列名称包含字符串 心情 这可能吗 我一般用 SubData lt myData grep whatIWant colnames myData 我很清楚
  • HTTR GET 新错误:SSL 证书问题:证书已过期

    我已经运行这段代码几个月了 没有出现任何问题 今天我突然开始在我的两台 AWS 服务器上收到以下错误消息 错误 curl curl fetch memory url handle handle SSL证书问题 证书已过期 当尝试运行以下代码
  • 是否有weighted.median()函数?

    我正在寻找类似形式的东西weighted mean 我通过搜索找到了一些解决方案 这些解决方案写出了整个函数 但希望有一些更用户友好的解决方案 以下软件包都有计算加权中位数的函数 aroma light isotone limma cwhm
  • ggplot2:带有 geom_line 的 x 轴因子不起作用

    我想要一个线图 其中value绘制为函数expt每级一行var 这是我的数据 lines lt expt var value 1 none p 0 183065327746799 2 none p 0 254234138384241 3 n
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col

随机推荐

  • 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 本文背景是博主的最新一篇论文 上位基因检测机器学习算法创新 临近实验尾声 已经完成在模拟数据中的