Где HDFS хранит данные

Я пытаюсь понять, где хранит данные в HDFS. Я имею в виду конфигурационные файлы: core-site.xml и hdfs-site.xml

Свойством, которое я установил, является:

  • В core-site.xml:

    <property>
        <name>hadoop.tmp.dir</name>
        <value>/hadoop/tmp</value>
    </property>
    
  • В hdfs-site.xml:

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/hadoop/hdfs/namenode</value>
    </property>
    
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/hadoop/hdfs/datanode</value>
    </property>
    

В приведенном выше расположении, например dfs.datanode.data.dir, блоки данных должны храниться в этом каталоге. Правильно ли это?

Я ссылался на ссылку apache hadoop, и из этого я вижу следующее:

  • core-default.xml: hadoop.tmp.dir → База для других временных каталогов.

  • hdfs-default.xml dfs.datanode.data.dir → Определяет, где в локальной файловой системе данные DFS node должны хранить свои блоки.

    Значение по умолчанию для этого свойства: → file://${hadoop.tmp.dir}/dfs/data

Так как я явно предоставил значение для dfs.datanode.data.dir (hdfs-site.xml), означает ли это, что данные будут храниться в этом месте? Если да, добавит ли dfs/data в каталог ${dfs.datanode.data.dir}, в частности, он станет → /hadoop/hdfs/datanode/dfs/data?

Однако я не видел, чтобы эта структура каталогов создавалась.

Одно наблюдение, которое я видел в моем env:

Я видел, что после запуска некоторых программ MapReduce этот каталог создается, а именно: /hadoop/tmp/dfs/data создается.

Итак, не уверен, что данные будут храниться в каталоге, как это было предложено с помощью свойства dfs.datanode.data.dir.

Есть ли у кого-то подобный опыт?

Ответы

Ответ 1

Данные для файлов hdfs будут сохранены в каталоге, указанном в dfs.datanode.data.dir, а суффикс /dfs/data, который вы видите в значении по умолчанию, не будет добавлен.

Если вы отредактируете hdfs-site.xml, вам придется перезапустить службу DataNode, чтобы изменения вступили в силу. Также помните, что изменение значения исключает возможность службы DataNode предоставлять блоки, которые были сохранены в предыдущем местоположении.

Наконец, над вашими значениями указаны file:/... вместо file://.... Для URI файла требуется дополнительная косая черта, так что это может привести к тому, что эти значения вернутся к значениям по умолчанию.