У меня вопрос о том, что такое метаданные в файле fsimage. Я прочитал, что все мутации в пространство имен файловой системы, такие как переименование файлов, изменения разрешений, создания файлов, выделения блоков, находятся внутри fsimage. Но данные о местоположении блока также? Содержит ли он информацию о том, где (на каком datanode) расположены блоки? Я получаю из этого источника: http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/, что метаданные о том, где хранятся блоки, строятся блочными репортами datanodes. Это правда? Таким образом, Fsimage не содержит информации о местах расположения блоков?Содержимое fsimage hdfs
ответ
Да, насколько я знаю, fsimage не содержит информации о блоках. Эта информация хранится узлами данных. Namenode получает эту информацию, когда она запускается из datanodes.
NameNode поддерживает два типа данных
Места обитания Блока: Поскольку файлы нарезанные на блоки, NN должны знать, какая часть где. Эти данные хранятся в Память и never сохраняется на диске, DNs периодически разговаривают с NN и делят блокрепортаж.
файловой системы (метаданные): такие, как иерархии файловой системы, права доступа и т.д. Эта информация сохраняется на диске
при namenodes запуске он загружает «снимок» файловой системы из fsimage и применяет журналы редактирования от редактирует, после этого процесса мы получаем новый снимок. с этой точки на nenenode может принимать файлы системные запросы от клиентов/DN
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...