2013-05-27 3 views
2

У меня вопрос о том, что такое метаданные в файле fsimage. Я прочитал, что все мутации в пространство имен файловой системы, такие как переименование файлов, изменения разрешений, создания файлов, выделения блоков, находятся внутри fsimage. Но данные о местоположении блока также? Содержит ли он информацию о том, где (на каком datanode) расположены блоки? Я получаю из этого источника: http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/, что метаданные о том, где хранятся блоки, строятся блочными репортами datanodes. Это правда? Таким образом, Fsimage не содержит информации о местах расположения блоков?Содержимое fsimage hdfs

ответ

2

Да, насколько я знаю, fsimage не содержит информации о блоках. Эта информация хранится узлами данных. Namenode получает эту информацию, когда она запускается из datanodes.

3

NameNode поддерживает два типа данных

Места обитания Блока: Поскольку файлы нарезанные на блоки, NN должны знать, какая часть где. Эти данные хранятся в Память и never сохраняется на диске, DNs периодически разговаривают с NN и делят блокрепортаж.

файловой системы (метаданные): такие, как иерархии файловой системы, права доступа и т.д. Эта информация сохраняется на диске

при namenodes запуске он загружает «снимок» файловой системы из fsimage и применяет журналы редактирования от редактирует, после этого процесса мы получаем новый снимок. с этой точки на nenenode может принимать файлы системные запросы от клиентов/DN

1

Hadoop предоставляет инструмент, который преобразует файл fsimage в человекообразные форматы. http://hadoop.apache.org/docs/r2.3.0/hadoop-project-dist/hadoop-hdfs/HdfsImageViewer.html

Пример вывода:

bin/hdfs oiv -i fsimagedemo -p Indented -o fsimage.txt 

    FSImage 
    ImageVersion = -19 
    NamespaceID = 2109123098 
    GenerationStamp = 1003 
    INodes [NumInodes = 12] 
     Inode 
     INodePath = 
     Replication = 0 
     ModificationTime = 2009-03-16 14:16 
     AccessTime = 1969-12-31 16:00 
     BlockSize = 0 
     Blocks [NumBlocks = -1] 
     NSQuota = 2147483647 
     DSQuota = -1 
     Permissions 
      Username = theuser 
      GroupName = supergroup 
      PermString = rwxr-xr-x 
    ...remaining output omitted...