Тестирование Hadoop с использованием MRUnit - PullRequest
9 голосов
/ 25 мая 2011

Я переоборудую набор существующих модульных тестов Hadoop, которые ранее выполнялись в кластере в памяти (используя MiniMRCluster), в MRUnit. Существующие тестовые наборы, по сути, обеспечивают входные данные для фазы Map, а затем тестируют выходные данные для фазы Reduce.

У меня три вопроса, и лучший ответ на любой из них будет отвечать:

1) Что я потерял архитектурно при модульном тестировании с MRUnit вместо кластера в памяти?

2) Стоит ли разбивать существующие тестовые примеры на тесты только по карте и тесты только по сокращению или нет? Есть ли случаи, когда мне пришлось бы их разбивать?

3) Существуют ли какие-либо сценарии тестирования, которые MRUnit не может охватить?

Ответы [ 2 ]

10 голосов
/ 30 мая 2011

Процесс модернизации научил меня некоторым потенциальным ответам, которые я собираюсь опубликовать здесь.Я все же предпочел бы услышать, что говорят другие, поэтому я не приму этот ответ.

1) Я потерял по крайней мере две вещи.Во-первых, сантехника МР издевается.Таким образом, есть вероятность, что некоторые из «насмешек» скрывают проблему, которая может существовать в работе MR.Во-вторых, задание MR состоит из ввода из файловой системы и вывода в файловую систему, в дополнение к разделению и упорядочению между картой и фазой сокращения.MRUnit не полностью обрабатывает эти аспекты Hadoop, поэтому, если работа MR зависит от этих функций, они не могут быть протестированы.Тем не менее, все еще можно переписать тесты, чтобы протестировать только детали Map / Reduce .

2) По большей части не стоит разбивать существующие тесты.Если существующий тест зависит, например, от разделителя, то может иметь смысл разбить тест, чтобы можно было проверить Map и Reduce без участия разделителя.В целом, однако, не стоит делать «просто делать это».

3) Да - разделители для одного.Выходные форматы для другого.Это может быть не так уж важно для некоторых людей, но многие из наших существующих работ основаны на этих двух функциях, и, поскольку модульные тесты соответствуют окончательному выводу из выходного формата, мне приходится переписывать довольно много тестов.чтобы заставить их работать.

[править]

просто прочитайте сообщение в блоге от Cloudera, в котором также содержится ответ:

http://www.cloudera.com/blog/2009/07/debugging-mapreduce-programs-with-mrunit/

0 голосов
/ 19 апреля 2012

Взгляните на MRUNIT-101 , в течение недели или около того мы добавим возможность проверять реальные выходные форматы

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