Принцип загрузки и чтения файлов HDFS - этого достаточно! ! !

HDFS

1. Загрузите внутреннюю схему выполнения файла

image.png

1.1. Позвольте мне рассказать о загрузке файлов в HDFS

  • 1: Во-первых, есть файл с именем 1.txt, если этот файл 300 МБ.
  • 2: Если клиент хочет загрузить этот 1.txt, он сначала найдет ведущий NameNode HDFS и инициирует запрос на загрузку.
  • 3: NameNode проверит, является ли разрешение запроса законным, проверит, существует ли родительский каталог и есть ли файлы с таким же именем.Если проверка не пройдена, она не пройдёт напрямую. Проверьте, взглянув на шаги ниже.
  • 4: Boss NameNode HDFS отправляет сообщение клиенту, запрос разрешен, и файл может быть загружен.
  • 5: После того, как клиент разбивает файл, он начинает загружать первый блок
  • 6: NameNode получает три подходящих DataNode в соответствии со стратегией размещения реплик.
  • 7: NameNode возвращает список хостов DataNode клиенту.
  • 8: Конвейер устанавливается между клиентом и DataNode1, DataNode2 и DataNode3.
  • 9: Клиент отправляет данные пакетами, каждый из которых имеет размер 64 КБ.
  • 10: DataNode (1, 2, 3) кэширует пакет, не получая его, а затем продолжает передавать пакет вниз.
  • 11: Каждый раз, когда DataNode получает пакет, он отправляет ответ ACK и сохраняет его в очереди ответов.
  • 12: После отправки блока DataNode сохранит данные на жестком диске.
  • 13: То же самое верно для других блоков

2. Прочтите внутреннюю схему выполнения файла

image.png

2.1 Теперь поговорим о чтении файлов HDFS

  • 1: клиент инициирует запрос на чтение к NameNode.
  • 2: NameNode проверяет разрешения запроса, проверяет, есть ли у него разрешение на операцию, и проверяет, существует ли файл.
  • 3: NameNode возвращает черный список загруженного файла.
  • 4: Верните черный список клиенту и отсортируйте хост, на котором расположена каждая реплика.
  • 5: В соответствии с реальной ситуацией выберите оптимальный хост, считываемый каждым блоком.
  • 6: Клиент устанавливает конвейер с каждым хостом DataNode, на котором хранится блок.
  • 7: Чтение данных из нескольких узлов данных одновременно (параллельное чтение)
  • 8: Объедините несколько блоков в полный файл.