Может быть возможно разделить ваши данные так, чтобы каждое подмножество (животные, спорт, жизнь) было локальным для одного и того же узла, хотя вы не можете надежно выбрать идентификатор физического узла, на котором они хранятся.
Пока вы можете программно идентифицировать каждую запись как часть набора (животное, спорт, жизнь и т. Д. В вашем случае), вы можете реализовать свой собственный Partitioner . Это похоже на реализацию хеш-функции, когда все ключи с одинаковым хеш-кодом будут сокращены одним и тем же редуктором.
[Исходный ввод] -> [Identity Mapper] -> [Ваш пользовательский Partitioner] -> [Identity Reducer]
Как уже упоминали другие пользователи, HDFS по умолчанию реплицирует выходные данные на другие узлы. Поэтому вам придется отключить репликацию в этом случае, если вы хотите гарантировать локальность данных. Конечно, это происходит за счет отказоустойчивости.