2017-05-08 4 views

답변

0

자동으로 프로그램 몇 가지 방법이 클러스터가 종료 :

  1. 전화를 REST api 직접 이들 중 하나를 사용할 수
  2. Use the gcloud CLI

작업 후 (전화) (s) 실행을 마칩니다.

여기에 대한 자세한 내용보기 : https://cloud.google.com/dataproc/docs/guides/manage-cluster#delete_a_cluster

+0

이 작업을 완전히 자동화하고 싶습니다. 그럼 여기서 일자리가 집행을 끝낼 때 어떻게 통보받을 수 있을까요? 작업 완료 콜백/알림을 받으면 REST API를 사용하여 클러스터를 삭제할 수 있습니다. –

+0

다시 REST API를 사용하십시오. 특별히 작업 자원에 대해 'GET'을 수행하고 폴링 루프 (https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs/get)에 래핑하십시오. 그럼, 제출> 모니터> 종료 –

+0

좋아. 따라서 외부 스크립트는 작업 상태를 폴링 한 다음 상태에 따라 클러스터에서 다른 작업을 시작해야합니다. 자동 종료 및 확장 기능이있는 DataProc 클러스터를 관리하는 모든 도구/타사 소프트웨어? 자동 스케일링에서도 동일한 문제가 존재하기 때문입니다. DataFlow는 자동 스케일링을 단독으로 처리합니다. –

1

당신은 그 스칼라 코드를 수행 할 수 있습니다 - 클러스터 만들기 - 작업이 스칼라 작업 할 수 있음을하려면 삭제 클러스터

을 종료 - 모든 작업 을 실행 미래. 많은 작업이있는 경우 병렬로 실행할 수 있습니다.

val gcpJarBucket = "gs://test_dataproc/dataproc/Dataproc.jar" 
val jobs = Seq("package.class1","package.class2") 
val projectName: String = "automat-dataproc" 
val clusterName: String = "your-cluster-name" 

val timeout = 180 minute 

    // Working directory 
    implicit val wd = pwd 


    val future = Future { 
    println("Creating the spark cluster...") 
    % gcloud("dataproc", "clusters", "create", clusterName, "--subnet", "default", "--zone", "europe-west1-b", "--master-machine-type", "n1-standard-4", "--master-boot-disk-size", "50", "--num-workers", "3", "--worker-machine-type", "n1-standard-4", "--worker-boot-disk-size", "50", "--project", projectName) 
    println("Creating the spark cluster...DONE") 
    }.flatMap { _ => { 
    Future.sequence { 
     jobs.map { jobClass => 
     Future { 
      println(s"Launching the spark job from the class $jobClass...") 
      % gcloud("dataproc", "jobs", "submit", "spark", s"--cluster=$clusterName", s"--class=$jobClass", "--region=global", s"--jars=$gcpJarBucket") 
      println(s"Launching the spark job from the class $jobClass...DONE") 
     } 
     } 
    } 

    }} 

Try{ Await.ready(future, timeout) }.recover{ case exp => println(exp) } 
    % bash("-c", s"printf 'Y\n' | gcloud dataproc cl