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. Прочтите внутреннюю схему выполнения файла
2.1 Теперь поговорим о чтении файлов HDFS
1: клиент инициирует запрос на чтение к NameNode.
2: NameNode проверяет разрешения запроса, проверяет, есть ли у него разрешение на операцию, и проверяет, существует ли файл.
3: NameNode возвращает черный список загруженного файла.
4: Верните черный список клиенту и отсортируйте хост, на котором расположена каждая реплика.
5: В соответствии с реальной ситуацией выберите оптимальный хост, считываемый каждым блоком.
6: Клиент устанавливает конвейер с каждым хостом DataNode, на котором хранится блок.
7: Чтение данных из нескольких узлов данных одновременно (параллельное чтение)