В автономном режиме все (namenode, datanode, tasktracker, jobtracker) работает в одной JVM на одной машине. В псевдораспределенном режиме все работает каждый в своей собственной JVM, но все еще на одной машине. С точки зрения клиентского интерфейса не должно быть никакой разницы, но я не удивлюсь, если требования к сериализации будут более строгими в псевдораспределенном режиме.
Мое объяснение вышеизложенного состоит в том, что в псевдораспределенном режиме все должно быть сериализовано для передачи данных между JVM. В автономном режиме не обязательно, чтобы все было сериализуемо (так как все в одной JVM, у вас есть общая память), но я не помню, написан ли код для использования этого факта, так как это не так нормальный вариант использования Hadoop.
РЕДАКТИРОВАТЬ: Учитывая, что вы не видите ошибку, я думаю, это похоже на проблему в том, как кодируется задание MapReduce. Возможно, он полагается на что-то вроде общей памяти среди редукторов? Если это так, это будет работать в автономном режиме, но не в псевдораспределенном режиме (или действительно распределенном режиме, в этом отношении).