Azure Batch Python API를 사용하여 계산 풀 노드에서 패키지를 R로로드하는 데 문제가 있습니다. 내가 사용하는 코드는 Azure Batch Python SDK Tutorial에서 제공되는 것과 유사하지만 태스크가 더 복잡하다는 점을 제외하고는 - 작업 풀의 각 노드가 특정 패키지 종속성이 필요한 R 스크립트를 실행하도록합니다.Azure Batch 노드에 R 패키지를로드 할 수 없습니다.
아래의 시작 태스크 명령에서는 각 노드 (정식 UbuntuServer SKU : 16)를 통해 R을 설치하고 R 패키지 종속성을 설치합니다. 이유는 R 패키지 설치를 시작 작업에 추가 한 이유입니다 작업 스크립트에서 install.packages(list_of_packages, lib="~/Rpkgs/", repos="http://cran.r-project.org")
를 실행, 보편적 인 권한을 가진 lib 디렉토리 ~/Rpkgs
를 생성 한 후이 "쓸 수 없습니다"오류를 이어집니다.)
task_commands = [
'cp -p {} $AZ_BATCH_NODE_SHARED_DIR'.format(_R_TASK_SCRIPT),
# Install pip
'curl -fSsL https://bootstrap.pypa.io/get-pip.py | python',
# Install the azure-storage module so that the task script can access Azure Blob storage, pre-cryptography version
'pip install azure-storage==0.32.0',
# Install R
'sudo apt -y install r-base-core',
'mkdir ~/Rpkgs/',
'sudo chown _azbatch:_azbatchgrp ~/Rpkgs/',
'sudo chmod 777 ~/Rpkgs/',
# Install R package dependencies
# *NOTE*: the double escape below is necessary because Azure strips the forward slash
'printf "install.packages(c(\\"foreach\\", \\"iterators\\", \\"optparse\\", \\"glmnet\\", \\"doMC\\"), lib=\\"~/Rpkgs/\\", repos=\\"https://cran.cnr.berkeley.edu\\")\n" > ~/startTask.txt',
'R < startTask.txt --no-save'
]
을 여하튼, 나는 다음 패키지는 연산 풀에 의도 한대로 푸른 포털에서 확인 노드 (노드 파일 시스템에서 startup/wd/Rpkgs/
, 별칭 ~/Rpkgs/
에 있습니다). 그러나 _R_TASK_SCRIPT
작업이 작업 풀에 성공적으로 추가 된 동안 설치되어 있던 패키지 (예 : foreach
, iterators
, optparse
등)를로드 할 수 없어 종료 코드가 0이 아닌 종료 코드로 종료되었습니다. 시작 작업에서.
는 구체적으로는, _R_TASK_SCRIPT
는 다음 R 코드를 포함하고, 다음과 같은 결과를 반환
R 번호 :
Loading required package: iterators
Loading required package: foreach
Loading required package: optparse
Loading required package: glmnet
Loading required package: doMC
: 푸른 일괄 노드
lapply(c("iterators", "foreach", "optparse", "glmnet", "doMC"), require, character.only=TRUE, lib.loc="~/Rpkgs/")
...
R의 열려진, stderr.txt
R stdout, Azure의 stdout.txt
배치 노드 :
[[1]]
[1] FALSE
[[2]]
[1] FALSE
[[3]]
[1] FALSE
[[4]]
[1] FALSE
[[5]]
[1] FALSE
FALSE
위의 내용은 R 패키지를로드 할 수 없음을 나타냅니다. 이것이 내가 직면 한 문제이며, 나는 이유를 알아 내고 싶습니다.
비슷한 VM (Canonical UbuntuServer SKU : 16)을 사용하여 수동으로 동일한 설치를 실행하면 모든 패키지가 성공적으로로드됩니다.
[email protected]:~$ pwd
/home/myusername
[email protected]:~$ mkdir ~/Rpkgs/
[email protected]:~$ printf "install.packages(c(\"foreach\", \"iterators\", \"optparse\", \"glmnet\", \"doMC\"), lib=\"~/Rpkgs/\", repos=\"http://cran.r-project.org\")\n" > ~/startTask.txt
[email protected]:~$ R < startTask.txt --no-save
[email protected]:~$ R
R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
...
> lapply(c("iterators", "foreach", "optparse", "glmnet", "doMC"), require, character.only=TRUE, lib.loc="~/Rpkgs/")
Loading required package: iterators
Loading required package: foreach
...
Loading required package: optparse
Loading required package: glmnet
Loading required package: Matrix
Loaded glmnet 2.0-10
Loading required package: doMC
Loading required package: parallel
[[1]]
[1] TRUE
[[2]]
[1] TRUE
[[3]]
[1] TRUE
[[4]]
[1] TRUE
[[5]]
[1] TRUE
미리 도움을 청하십시오.
첫 번째 'lapply'솔루션은 수정되었습니다. 감사합니다! – ncemami