Hadoop S3 Нет свободного места на устройстве - PullRequest
0 голосов
/ 02 января 2012

Я выполняю задание уменьшения карты, которое требует небольшого ввода (~ 3 МБ, список целых чисел размера z), с разреженным матричным кешем размером n x m и в основном выводит z разреженных векторов размерности (n x 1). Вывод здесь довольно большой (~ 2 ТБ). Я использую 20 узлов m1.small в Amazon EC2 с хранилищем S3 в качестве входных и выходных данных.

Однако я получаю IOException: на устройстве не осталось места. Кажется, что в логах Hadoop записано s3 байта, но файлы не создаются. Когда я использовал меньший ввод (меньший z), вывод был там правильно после завершения работы. Таким образом, я считаю, что он заканчивается во временном хранилище.

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

Спасибо за вашу помощь.

Пример кода (также пытались разбить на карту и сократить работу с той же ошибкой)

public void map(LongWritable key, Text value, 
Mapper<LongWritable, Text, LongWritable, VectorWritable>.Context context) 
throws IOException, InterruptedException
{
    // Assume the input is id \t number
    String[] input = value.toString().split("\t");
    int idx = Integer.parseInt(input[0]) - 1;

    // Some operations to do, but basically outputting a vector
    // Collect the output
    context.write(new LongWritable(idx), new VectorWritable(matrix.getColumn(idx)));
};   

1 Ответ

0 голосов
/ 03 января 2012

Amazon EMR поддерживает несколько версий . Это значения по умолчанию 0.20.205

hadoop.tmp.dir - /tmp/hadoop-$ndomuser.name} - База для других временных каталогов.

mapred.local.dir - $ {hadoop.tmp.dir} / mapred / local - локальный каталог, в котором MapReduce хранит промежуточные файлы данных. Может быть разделенный запятыми список каталогов на разных устройствах для распределения дискового ввода-вывода. Каталоги, которые не существуют, игнорируются.

mapred.temp.dir - $ {hadoop.tmp.dir} / mapred / temp - общий каталог для временных файлов.


Запустите команду du --max-depth=7 /home/xyz | sort -n на hadoop.tmp.dir и проверьте, какой каталог занимает больше места. Хотя hadoop.tmp.dir говорит о временном, он также хранит файлы системы и данных.

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