如何在所有作業完成後自動以編程方式關閉Google DataProc羣集?所有作業完成後自動關閉Google DataProc羣集
DataProc提供創建,監控 和管理(https://cloud.google.com/dataproc/docs/resources/faq)。但我似乎無法找到如何刪除羣集。
如何在所有作業完成後自動以編程方式關閉Google DataProc羣集?所有作業完成後自動關閉Google DataProc羣集
DataProc提供創建,監控 和管理(https://cloud.google.com/dataproc/docs/resources/faq)。但我似乎無法找到如何刪除羣集。
有一對夫婦的可編程的方式來自動關閉集羣:
無論是哪種,可以使用(所謂的)你的工作後( s)完成執行。
查看更多在這裏: https://cloud.google.com/dataproc/docs/guides/manage-cluster#delete_a_cluster
你可以做到這一點與Scala代碼: - 創建集羣 - 運行工作 - 當作業結束刪除集羣
要做到這一點,你可以使用Scala工作未來。 如果你有很多工作可以並行運行:
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
我想完全自動化這個任務。那麼在這裏,當工作完成執行時我們將如何得到通知?一旦我們獲得了工作完成回調/通知,就可以使用REST API來刪除集羣。 –
再次使用REST API。具體而言,作業資源上的'GET'並將其包裝在輪詢循環中 - https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs/get。所以,提交> monitor> shutdown –
好的。因此,外部腳本必須輪詢作業狀態,然後根據狀態啓動羣集上的不同操作。使用自動關閉和縮放功能管理DataProc羣集的任何工具/第三方軟件?因爲自動縮放也存在同樣的問題。 DataFlow自行處理自動縮放。 –