2013-05-19 4 views
3

Я хочу понять счетчики файловой системы в hadoop.Понимание счетчиков файловой системы Hadoop

Ниже приведены счетчики для работы, с которой я работал.

В каждом задании, которое я запускаю, я наблюдаю, что прочитанные байты файла карты почти равны количеству прочитанных байтов HDFS. И я замечаю, что байты файлов, написанные на карте, представляют собой сумму байтов файлов и байтов hdfs, которые считывает файл-манипулятор. Помощь Pls! Являются ли те же данные считываемыми как локальным файлом, так и hdfs, и оба записываются в локальную файловую систему по фазе карты?

   Map       

FILE_BYTES_READ 5.062.341.139

HDFS_BYTES_READ 4.405.881.342

FILE_BYTES_WRITTEN 9.309.466.964

HDFS_BYTES_WRITTEN 0

Спасибо!

ответ

2

Это общий счетчик для распределения HDFS, фаза карты, сокращение фазы вашей работы.

Эти счетчики, как и вы, являются суммой байтов файлов и байтов hdfs. Hadoop использует вашу файловую систему HDFS для совместного использования ресурсов по кластеру.

+0

i ve justed вставил счетчики фазы карты. Я разбираюсь в знаниях о байтах файла. Я думаю, что это количество байтов, считанных локальной файловой системой. но почему это почти то же самое, что и hdfs-байты, прочитанные в каждом задании, которое я запускаю? –

+1

Поскольку Hadoop пытается оптимизировать локальные чтения, он распределяет ваш код туда, где находятся данные. Вот почему ваши HDFS-чтения являются локальными чтениями. –

7

Так что ответ на самом деле заключается в том, что то, что вы замечаете, зависит от конкретной работы. В зависимости от задания карты/редукторы будут записывать более или менее байты в локальный файл по сравнению с hdf.

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

Ниже приведен пример использования TeraSort с 100 ГБ данных, 1 млрд пар ключ/значение.

File System Counters 
      FILE: Number of bytes read=219712810984 
      FILE: Number of bytes written=312072614456 
      FILE: Number of read operations=0 
      FILE: Number of large read operations=0 
      FILE: Number of write operations=0 
      HDFS: Number of bytes read=100000061008 
      HDFS: Number of bytes written=100000000000 
      HDFS: Number of read operations=2976 
      HDFS: Number of large read operations=0 

Замечания. Количество байтов, считанных и записанных с HDFS, составляет почти ровно 100G. Это связано с тем, что необходимо сортировать 100G, и необходимо отсортировать окончательные отсортированные файлы. Также обратите внимание, что ему нужно сделать много локальных операций чтения/записи для хранения и сортировки данных, 2x и 3x - количество данных, которое оно читает!

В заключение, если вы просто не хотите работать, не заботясь о результате. Количество записанных байтов HDFS не должно быть 0, а ваше значение равно HDFS_BYTES_WRITTEN 0

+0

благодарит за ответ! это было полезно! –

Смежные вопросы