2015-08-27 5 views
1

У меня есть 50 хостов, пытающихся запустить карту, уменьшить работу ниже на Riak. Я получаю ошибку ниже, где некоторые из хостов жалуются на достигнутый worker_limit.worker_limit_reached на параллельной карте уменьшить вакансии

Ищете некоторые сведения о том, могу ли я настроить систему, чтобы избежать этой ошибки? Не удалось найти слишком много документации вокруг worker_limit.

{ "фаза": 0, "Ошибка": "[worker_limit_reached]", "вход": "{< < \" provisionentry \ ">>, < < \" R89Okhz49SDje0y0qvcnkK7xLH0 \ ">>}" , "type": "result", "stack": "[]"} с запросом MapReduce (путь = '/ mapred', reply_headers = {'content-length': '144', 'access-control-allow-headers ':' Content-Type ',' server ':' MochiWeb/1.1 WebMachine/1.10.8 (это подделка, tho) ',' connection ':' close ',' date ':' Thu, 27 Aug 2015 00: 32:22 GMT ',' access-control-allow-origin ':' * ',' access-control-allow-methods ':' POST, GET, OPTIONS ',' content-type ':' application/json '} , verb = 'POST', headers = {'Content-Type': 'application/json'}, data = MapReduceJob (входы = MapReduceInputs (bucket = 'provisionentry', key = u'34245e92-ccb5-42e2-a1d9-74ab1c6af8bf ', index =' testid_bin '), q uery = [MapReduceQuery (карта = MapReduceQuerySpec (язык = 'Эрл', модуль = 'DataTools', функция = 'map_object_key_value'))]))

ответ

1

Карта уменьшить в Riak не очень хорошо масштабируется, и поэтому не хорошо работают как часть обслуживания, ориентированного на пользователя.

Он подходит для периодических административных задач или предварительных вычислений, когда количество заданий может быть ограничено.

Поскольку фаза карты задания представляет собой запрос на покрытие, вам нужно будет задействовать как минимум 1/n_val (округленный) vnodes на каждой карте, используя по одному работнику по одному. Поскольку вы не можете гарантировать, что выбранные наборы покрытий не пересекаются, вам не следует ожидать, что вы сможете одновременно выполнять больше сокращающих работу карты, чем задание рабочего предела.

По умолчанию рабочий предел равен 50 (https://github.com/basho/riak_pipe/blob/develop/src/riak_pipe_vnode.erl#L86), но вы можете настроить его, установив {worker_limit, 50} в разделе riak_pipe файла app.config или advanced.config.

Имейте в виду, что каждый рабочий - это процесс, поэтому вам может потребоваться увеличить лимит процесса для виртуальной машины erlang.

 Смежные вопросы

  • Нет связанных вопросов^_^