2017-11-09 14 views
1

나는 sparkR 코드를 작성했으며 EMR 클러스터에서 spark-submit 또는 sparkR을 사용하여 제출할 수 있는지 궁금합니다.EMR 클러스터에서 spark-submit 또는 sparkR을 사용하여 SparkR 스크립트를 실행하는 방법은 무엇입니까?

내가 예를 들어 여러 가지 방법을 시도 :

Error in sparkR.sparkContext(master, appName, sparkHome, sparkConfigMap, : 
JVM is not ready after 10 seconds 

샘플 코드 :

또는 sparkR --no-저장 mySparkScript.r 등하지만 오류가 아래에 무엇입니까마다 sparkR mySparkRScript.r을
#Set the path for the R libraries you would like to use. 
#You may need to modify this if you have custom R libraries. 
.libPaths(c(.libPaths(), '/usr/lib/spark/R/lib')) 

#Set the SPARK_HOME environment variable to the location on EMR 
Sys.setenv(SPARK_HOME = '/usr/lib/spark') 

#Load the SparkR library into R 
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"))) 

#Initiate a Spark context and identify where the master node is located. 
#local is used here because the RStudio server 
#was installed on the master node 

sc <- sparkR.session(master = "local[*]", sparkEnvir = list(spark.driver.memory="2g")) 

sqlContext <- sparkRSQL.init(sc) 

참고 : 내 코드를 직접 붙여 넣거나 source("mySparkRScript.R")을 사용하여 sparkr-shell에서 실행할 수 있습니다.

참조 :

  1. Crunching Statistics at Scale with SparkR on Amazon EMR
  2. SparkR Spark documentation
  3. R on Spark
  4. Executing-existing-r-scripts-from-spark-rutger-de-graaf
  5. Github

답변

0

나는이 루피를 통해 실행을 얻을 수 있었다 cript. 당신이해야 할 일이 몇 가지 있으며, 이것은 약간의 프로세스 집중이 될 수 있습니다. 그것을 기꺼이 제공하고자한다면 다음을 권합니다.

  1. 자동 SparkR 또는 sparklyR 빌드를 수행하는 방법을 설명하십시오. 를 통해 : https://github.com/UrbanInstitute/spark-social-science
  2. 먼저 EMR 템플릿과 단계 1. 다음을 통해 만들어집니다 부트 스트랩 스크립트를 사용하여 클러스터를 만들기 위해 AWS CLI를 사용
  3. (AN S3 버킷에 EMR 템플릿과 rstudio_sparkr_emrlyr_blah_blah.sh sripts을 넣어해야합니다)
  4. R 코드를 하나의 파일에 넣고 이것을 다른 S3 버킷에 넣으십시오. 제공 한 샘플 코드는 정상적으로 작동하지만 실제로는 S3에서 데이터를 읽은 다음 값을 추가하여 몇 가지 작업을 수행하는 것이 좋습니다. 그 다음 다시 쓰는 것 (주위에 앉아있는 '무거운'코드에 들어가기 전에 작동하는지 확인)
  5. 클러스터에있는 S3 버킷에서 R 파일을 복사하는 다른 .sh 파일을 만듭니다 , 다음을 통해 실행하십시오. Rscript. 이 셸 스크립트를 R 코드 파일과 동일한 S3 버킷에 넣으십시오 (간단히하기 위해). 의 AWS CLI에서

    #!/bin/bash 
    aws s3 cp s3://path/to/the/R/file/from/step3.R theNameOfTheFileToRun.R 
    Rscript theNameOfTheFileToRun.R 
    
  6. 을 클러스터 생성시, 클러스터 생성 호출에 --step를 삽입에 의해 제공되는 커스텀 JAR의 RUNNER를 사용하여이 쉘 파일의 내용의 예는 다음과 같을 수 Amazon에서 R 코드를 복사하고 실행하는 쉘 스크립트를 실행하십시오.

  7. R 코드 끝에서 Spark 세션을 중지하십시오.

AWS CLI 명령의 예는 다음과 같습니다. (예를 들어 Amazon에서 us-east-1 영역을 사용하고 클러스터의 각 작업자에게 100GB 디스크를 던지려고합니다. 당신이 'us-east-1'이 보이는 곳에 당신의 영역을 넣고 원하는 크기의 디스크를 선택하십시오.)

aws emr create-cluster --name "MY COOL SPARKR OR SPARKLYR CLUSTER WITH AN RSCRIPT TO RUN SOME R CODE" --release-label emr-5.8.0 --applications Name=Spark Name=Ganglia Name=Hadoop --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.xlarge 'InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.2xlarge,EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,SizeInGB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iops=100},VolumesPerInstance=1}]}' --log-uri s3://path/to/EMR/sparkr_logs --bootstrap-action Path=s3://path/to/EMR/sparkr_bootstrap/rstudio_sparkr_emr5lyr-proc.sh,Args=['--user','cool_dude','--user-pw','top_secret','--shiny','true','--sparkr','true','sparklyr','true'] --ec2-attributes KeyName=mykeyfilename,InstanceProfile=EMR_EC2_DefaultRole,AdditionalMasterSecurityGroups="sg-abc123",SubnetId="subnet-abc123" --service-role EMR_DefaultRole --scale-down-behavior TERMINATE_AT_TASK_COMPLETION --auto-terminate --region us-east-1 --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://path/to/the/shell/file/from/step4.sh"] 

행운을 비네!건배, 네이트