---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/user-guide/problems/mapreduce-debug.md
  - https://ytsaurus.tech/docs/ru/user-guide/problems/mapreduce-debug.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

# Отладка MapReduce программ

<!-- source: ru/_includes/user-guide/problems/mapreduce-debug/local-emulation.md -->
## Локальная эмуляция запуска джоба

Вы можете эмулировать запуск джоба на любом компьютере, например на разработческом сервере. Подробнее о локальной эмуляции джоба см. в разделах [Утилита для локальной отладки джобов](https://ytsaurus.tech/docs/ru/user-guide/problems/jobtool.md) и [Диагностика медленных джобов](https://ytsaurus.tech/docs/ru/user-guide/problems/jobshell-and-slowjobs.md).
<!-- endsource: ru/_includes/user-guide/problems/mapreduce-debug/local-emulation.md -->

<!-- source: ru/_includes/user-guide/problems/mapreduce-debug/stderr-running.md -->
## Получение текущего stderr выполняющегося джоба

В ходе выполнения операции может получиться, что завершились все джобы, кроме одного. В системе YTsaurus можно получить stderr, который джоб написал к текущему моменту.

В команде `yt` для этого реализован режим `yt get-job-stderr`.

```bash
yt get-job-stderr --operation-id 35060d89-f9328e09-3f403e8-6f4eb4b5 --job-id fe270b54-a938652-3fc0384-2144
```

Stderr в выводе обрезается по тем же правилам, как для сохранения в файлах в Кипарисе: несколько первых мегабайт плюс несколько последних мегабайт.
<!-- endsource: ru/_includes/user-guide/problems/mapreduce-debug/stderr-running.md -->

## Получение полных stderr всех джобов операции

В системе YTsaurus существует возможность сохранить полные stderr всех джобов в таблицу. Можно выгрузить stderr тех джобов, которые не были прерваны (aborted).

Для включения описанного поведения:

{% list tabs %}

- В Python

  Используйте параметр `stderr_table`. Например:

  ```python
  yt.wrapper.run_map_reduce( mapper, reducer, '//path/to/input', '//path/to/output', reduce_by=['some_key'], stderr_table='//path/to/stderr/table', )
  ```
- В С++

  Используйте настройку [StderrTablePath](https://github.com/ytsaurus/ytsaurus/blob/07c9c385ae116f56d8ecce9fa6765fa1a90e95cc/yt/cpp/mapreduce/interface/operation.h#L563).

- В SDK на других языках

  Можно передать настройку `stderr_table_path` напрямую в спецификацию операции. Описание данной опции см. в разделе [Настройки операций](https://ytsaurus.tech/docs/ru/user-guide/data-processing/operations/operations-options.md).

{% endlist %}

<!-- source: ru/_includes/user-guide/problems/mapreduce-debug/stderr-table.md -->
Stderr-таблица имеет следующие колонки:

1. `job_id` — id джоба.
2. `part_index` — если stderr одного джоба большой, он разбивается на части. Значение `part_index` указывает на номер конкретной части stderr.
3. `data` — непосредственно сами данные stderr.

Таблица отсортирована по `job_id`, `part_index`.

Прочитать такую таблицу можно с помощью команды [read_blob_table](https://ytsaurus.tech/docs/ru/user-guide/storage/blobtables.md#read_blob_table).
<!-- endsource: ru/_includes/user-guide/problems/mapreduce-debug/stderr-table.md -->
