2015-12-30 3 views
0

Это может быть очень простой. Где единый узел HDFS хранит файлы в отношении фактической файловой системы?Где HDFS хранит его файлы

Я использую виртуальную машину Cloudera для изучения Hadoop.

Для например: Файл с именем sample.txt в/дома/Cloudera могут быть скопированы в HDFS с помощью

hadoop fs -copyFromLocal /home/cloudera/sample.txt hdfs://localhost/user/cloudera/sample.txt 

Если я использую Linux для поиска/пользователя/каталог Cloudera в действительности нет такого каталога.

Теперь предположим, что я изменяю содержимое /home/cloudera/sample.txt, чем эти изменения не отражаются в файле, который хранится в HDFS.

У меня есть два вопроса:

  • Где один узел HDFS хранить файлы по фактической файловой системе ?
  • Почему изменения, внесенные в исходный файл, не являются , отраженным в файле на HDFS.

ответ

1

блоки данных HDFS хранятся в $ {dfs.data.dir}, который по умолчанию указывает на $ {hadoop.tmp.dir}/ДПП/данных. В системе Linux значение hasoop.tmp.dir равно/tmp. Проверьте свой файл hdfs-default.xml, если вы хотите переопределить значения по умолчанию.

Я не уверен, что вы подразумеваете под изменениями «не отражается на файле в HDFS». Эти файлы представляют собой только блоки данных, которые вы не можете просто читать и ожидать, чтобы иметь тот же контент, что и ваш файл при доступе через hdfs: // ...

+0

Значит, у нас есть две копии одного и того же файла? – Geek

+2

Вы должны перестать думать в терминах файлов и начать думать в терминах блоков, фрагментов файлов, которые распределяются между вашими узлами данных. Имеете ли вы две копии одного и того же блока или нет, зависит от коэффициента репликации вашей установки (по умолчанию 3). – kliron

+0

Ничего себе, звучит kool. Предположим, у меня есть кластер из двух узлов, и я копирую на нем свой файл. Как я могу узнать, какие новые блоки были созданы из-за этой копии? – Geek

1

Когда вы загружаете данные в HDFS из локальной файловой системы (как показано на рис. ваш пример), HDFS разбивает содержимое на блоки данных, которые хранятся в dfs.datanode.data.dir (опция от hdfs-default.xml config file) каждой машины, на которой запущен демон Data node. Метаданные (включая имя каждого файла, временные метки и т. Д.) Управляются демонами имен узлов в отдельной базе данных. Структура файла, которую вы можете видеть в datanode data dir, не имеет ничего общего с фактической структурой файловой системы HDFS.

При изменении исходного файла, который вы только что загрузили в HDFS, это изменение, очевидно, не влияет на данные, хранящиеся в томе HDFS. Это то же самое, как если бы вы скопировали файл с флеш-накопителя usb в свой домашний каталог, а затем изменили исходный файл на usb, задаваясь вопросом, почему изменения не распространялись в вашем homedir.

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