Как остановить кластерный движок gcloud

Я не мог найти простой способ добиться этого. Но после нескольких повторений попыток это то, что я сделал, и его работа над огромным списком запросов. В основном мы использовали это для пакетной операции для огромного запроса в нескольких подзапросах.

// Break down your huge workload into smaller chunks, in this case huge query string is broken 
// down to a small set of subqueries
// Here if needed to optimize further down, you can provide an optimal partition when parallelizing
val queries = sqlContext.sparkContext.parallelize[String](subQueryList.toSeq)

// Then map each one those to a Spark Task, in this case its a Future that returns a string
val tasks: RDD[Future[String]] = queries.map(query => {
    val task = makeHttpCall(query) // Method returns http call response as a Future[String]
    task.recover { 
        case ex => logger.error("recover: " + ex.printStackTrace()) }
    task onFailure {
        case t => logger.error("execution failed: " + t.getMessage) }
    task
})

// Note:: Http call is still not invoked, you are including this as part of the lineage

// Then in each partition you combine all Futures (means there could be several tasks in each partition) and sequence it
// And Await for the result, in this way you making it to block untill all the future in that sequence is resolved

val contentRdd = tasks.mapPartitions[String] { f: Iterator[Future[String]] =>
   val searchFuture: Future[Iterator[String]] = Future sequence f
   Await.result(searchFuture, threadWaitTime.seconds)
}

// Note: At this point, you can do any transformations on this rdd and it will be appended to the lineage. 
// When you perform any action on that Rdd, then at that point, 
// those mapPartition process will be evaluated to find the tasks and the subqueries to perform a full parallel http requests and 
// collect those data in a single rdd. 

Если вы не хотите выполнять какие-либо преобразования на контенте, такие как разбор полезной нагрузки ответа и т. д. Затем вы можете использовать foreachPartition вместо mapPartitions для немедленного выполнения всех этих http-вызовов.

29
задан Avihoo Mamka 12 July 2016 в 08:43
поделиться

4 ответа

Вы можете временно уменьшить количество узлов в вашем кластере до нуля, запустив:

gcloud container clusters resize $CLUSTER_NAME --size=0

Затем позже увеличьте масштаб, запустив его с ненулевым значением для флага размера.

68
ответ дан Alex Robinson 12 July 2016 в 08:43
поделиться

- зона также должна быть указана для возможности изменения размера узлов кластера до нуля в gcloud SDK v 2.0.27

gcloud container clusters resize $CLUSTER --size=0 --zone=$ZONE
17
ответ дан Stranger B. 12 July 2016 в 08:43
поделиться

Тот же эффект может быть достигнут в веб-консоли GCP, нажав кнопку «Изменить» на кластере и установив размер каждого узла пула равным 0.

Ссылка: https://cloud.google.com/kubernetes-engine/docs/how-to/resizing-a-cluster

4
ответ дан sean 12 July 2016 в 08:43
поделиться

Очевидно, что эта проблема нуждается в улучшенном решении, поскольку мне все еще приходилось использовать консоль GCP в Kubernetes Engine -> Clusters.

Я изменил количество узлов, работающих в моем кластере, на 0, а также изменил минимальное количество узлов на 0, потому что автоматическое масштабирование было включено, а затем оно заработало.

Приведенная выше команда gcloud предоставляет полезную информацию, но она не работает из-за включенной функции автоматического масштабирования. Лучшим решением было бы уменьшить минимальное количество узлов до 0, прежде чем изменить размер кластера до нуля, как показано ниже:

gcloud container clusters update [CLUSTER_NAME] --enable-autoscaling \
    --min-nodes 0 --max-nodes 10 --node-pool [NODE_POOL_NAME]

Или вы можете полностью отключить автоматическое масштабирование:

gcloud container clusters update [CLUSTER_NAME] --no-enable-autoscaling \
--node-pool [NODE_POOL_NAME] --project [PROJECT_ID]]

Теперь вы можете изменить размер узлов кластера до нуля:

gcloud container clusters resize [CLUSTER_NAME] --size=0
5
ответ дан Dalton Whyte 12 July 2016 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: