Как заставить ваш маппер писать в локальной файловой системе в hadoop - PullRequest
1 голос
/ 01 августа 2011

Я хочу написать файл и создать каталог в моей локальной файловой системе с помощью кода MapReduce.Также, если я создаю каталог в рабочем каталоге во время выполнения задания, как я могу переместить его в мою локальную файловую систему перед очисткой.

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Поскольку ваш маппер работает на некоторой / любой машине в вашем кластере, конечно, вы можете использовать базовые операции с файлами Java для записи файлов.Вы можете использовать org.apache.hadoop.hdfs.DFSClient для доступа к любым файлам в HDFS, чтобы скопировать их в локальный файл (я бы посоветовал вам копировать в HDFS и извлекать любые файлы из него после завершения заданий).

Конечно, ваши локальные файлы будут локальными для клиентского компьютера (я полагаю, на отдельных машинах), поэтому потребуется что-то вроде NFS, чтобы позволить записанным файлам быть доступными для вас на любом клиенте.Не упустите проблемы параллелизма.

0 голосов
/ 08 августа 2011

Мне также интересно писать файлы локально на датоде. Для этого я использовал java.io.FileWriter и java.io.BufferedWriter:

FileWriter fstream = new FileWriter("log.out",true);
BufferedWriter bout = new BufferedWriter(fstream);               
bout.append(build.toString());
bout.close();

Он создает файл только при выполнении через eclipse. При запуске в формате .jar с помощью следующей команды:

hadoop jar jarFile.jar Mainclass  

это ничего не создает. Я не знаю, проблема ли это в неправильном исполнении, неправильной настройке или просто в отсутствии чего-либо

На самом деле это только для создания файла журнала для отладки. Фактические файлы, которые я хочу, чтобы датодел записывал локально, создаются через Runtime.getRuntime(). Однако происходит то же самое. Если выполнение осуществляется через затмение, все в порядке. Вне затмения это выглядит нормально, но файл никогда не создается.

Перед тем, как делать это в кластере, он должен работать на одном узле, поэтому на данный момент все дело в установке на одном компьютере.

...