Как указать максимальное количество ядер, которые будут выделены для запроса в улье?

Я выполняю несколько запросов в улье. У меня есть кластер Hadoop с 6 узлами. Общее количество ядер в кластере равно 21.

Мне нужно выделить только 2 ядра для процесса python, чтобы остальные доступные ядра использовались другим основным процессом.

Код

from pyhive import hive
hive_host_name = "subdomain.domain.com"
hive_port = 20000
hive_user = "user"
hive_password = "password"
hive_database = "database"

conn = hive.Connection(host=hive_host_name, port=hive_port,username=hive_user, database=hive_database, configuration={})
cursor = conn.cursor()
cursor.execute('select count(distinct field) from somedata')

person Vishnu    schedule 13.11.2019    source источник
comment
Заголовок и текст вашего вопроса не кажутся хорошо выровненными - вы спрашиваете, как ограничить ресурсы задания MR или драйвер (ваш код Python)?   -  person mazaneicha    schedule 13.11.2019
comment
@mazaneicha да, общая карта и сокращение ресурсов не должны превышать более 2 вместе взятых   -  person Vishnu    schedule 13.11.2019


Ответы (1)


Попробуйте передать следующий параметр в карте конфигурации:

yarn.nodemanager.resource.cpu-vcores=2

Значение по умолчанию для этого параметра равно 8.

Описание: Number of CPU cores that can be allocated for containers.

Ваш обновленный код будет выглядеть так:

from pyhive import hive
hive_host_name = "subdomain.domain.com"
hive_port = 20000
hive_user = "user"
hive_password = "password"
hive_database = "database"
configuration = {
    "yarn.nodemanager.resource.cpu-vcores": 2
}

conn = hive.Connection( \
                       host=hive_host_name,
                       port=hive_port,
                       username=hive_user,
                       database=hive_database,
                       configuration=configuration
                      )
cursor = conn.cursor()
cursor.execute('select count(distinct field) from somedata')

Справочный URL

person Ambrish    schedule 27.11.2019