Разница между запрошенной и выделенной памятью - Spark на Kubernetes - PullRequest
0 голосов
/ 16 марта 2020

Я запускаю задание Spark в кластере Kubernetes, используя команду spark-submit, как показано ниже,

bin/spark-submit \
    --master k8s://https://api-server-host:443 \
    --deploy-mode cluster \
    --name spark-job-name \
    --conf spark.kubernetes.namespace=spark \
    --conf spark.kubernetes.container.image=docker-repo/pyspark:55 \
    --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark-submit \
    --conf spark.kubernetes.pyspark.pythonVersion=3 \
    --conf spark.executor.memory=4G \
    --files local:///mnt/conf.json \
    local:///mnt/ingest.py

, и когда я проверяю запрос и лимит для модуля executor, он показывается ниже. Для модуля выделено почти 1700 МБ.

Limits:
  memory:  5734Mi
Requests:
  cpu:     4
  memory:  5734Mi

Почему это так?

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

В дополнение к ответу @CptDolphin, имейте в виду, что Spark всегда выделяет spark.executor.memoryOverhead дополнительной памяти (максимум 10% от spark.executor.memory или 384 МБ, если явно не настроено) ) и может выделить дополнительные spark.executor.pyspark.memory, если вы определили это в своей конфигурации.

1 голос
/ 16 марта 2020

То, что вы определяете как модуль (как отдельную систему), может использовать - это одно, а то, что вы определяете как spark или java, или любое другое приложение, работающее внутри этой системы (модуль), - это другое; думайте о нем как о обычном компьютере с ограничениями, а затем о вашем приложении со своими ограничениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...