HDFS - операция чтения данных

Опубликовано: 18 Февраля, 2022

HDFS - это распределенная файловая система, в которой данные хранятся в сети обычных машин. HDFS работает с шаблоном доступа к потоковым данным, что означает, что он поддерживает функции «одна запись» и « много чтения» . Операция чтения в HDFS очень важна и очень необходима для того, чтобы мы при работе с HDFS знали, как на самом деле выполняется чтение в HDFS (распределенная файловая система Hadoop). Давайте разберемся, как работает чтение данных HDFS.

Чтение в HDFS кажется простым, но это не так. Всякий раз, когда клиент отправляет запрос в HDFS для чтения чего-либо из HDFS, доступ к данным или DataNode, где хранятся фактические данные, не предоставляется напрямую клиенту, потому что у клиента нет информации о данных, то есть о том, на каком DataNode хранятся данные или где реплика данных сделана на DataNodes. Не зная информации о DataNodes, клиент никогда не сможет получить доступ или прочитать данные из HDFS.

Вот почему клиент сначала отправляет запрос в NameNode, поскольку NameNode содержит все метаданные или информацию, которые нам требуются для выполнения операции чтения в HDFS. Как только запрос получен NameNode, он отвечает и отправляет клиенту всю информацию, такую как количество DataNodes, местоположение, где сделана реплика, количество блоков данных и их местоположение и т. Д. Теперь клиент может читать данные со всей этой информацией, предоставленной NameNode. Клиент читает данные параллельно, поскольку в кластере доступна реплика тех же данных. После считывания всех данных все блоки объединяются в исходный файл.

Разберемся данные читаемые на HDFS с подходящей диаграммой

Компоненты, которые мы должны знать, прежде чем изучать операцию чтения HDFS.

NameNode: основная цель Namenode - управлять всеми метаданными. Как мы знаем, данные хранятся в виде блоков в кластере Hadoop. Итак, на каком DataNode или в каком месте хранится этот блок файла, упоминается в MetaData. Журнал транзакции, происходящей в кластере Hadoop, когда или кто читает или записывает данные, вся эта информация будет храниться в метаданных.

DataNode: DataNode - это программа, запускаемая в подчиненной системе, которая обслуживает запрос чтения / записи от клиента и используется для хранения данных в виде блоков.

Клиент HDFS: Клиент HDFS является промежуточным компонентом между HDFS и пользователем. Он связывается с Datanode или Namenode и получает важные выходные данные, которые запрашивает пользователь.

На изображении выше мы видим, что сначала мы отправляем запрос нашему клиенту HDFS, который представляет собой набор программ. Теперь этот клиент HDFS связывается с NameNode, потому что у него есть вся информация или метаданные о файле, который мы хотим прочитать. NamoNode отвечает, а затем отправляет все метаданные обратно клиенту HDFS. Как только клиент HDFS знает, из какого места он должен выбрать блок данных, он просит поток ввода данных FS указать эти блоки данных на узлах данных. Затем поток ввода данных FS выполняет некоторую обработку и делает эти данные доступными для клиента.

Давайте посмотрим, как читать данные из HDFS.

Используя команду HDFS:

С помощью приведенной ниже команды мы можем напрямую читать данные из HDFS ( ПРИМЕЧАНИЕ. Убедитесь, что все ваши демоны Hadoop работают).

Команды для запуска демонов Hadoop

start-dfs.sh
start-yarn.sh

Синтаксис для чтения данных из HDFS:

hdfs dfs -get <source-path> <destination-path>     # here source path is file path on HDFS that we want to read
                                                  

                                                                                # destination path is where we want to store the readed file on local machine
 

Командование

В нашем случае у нас есть один файл с именем dikshant.txt с некоторыми данными в корневом каталоге HDFS. Приведенную ниже команду мы можем использовать для вывода списка данных в корневом каталоге HDFS.

 hdfs dfs -ls /

приведенная ниже команда будет считывать данные из корневого каталога HDFS и сохранять их в папке / home / dikshant / Desktop на моем локальном компьютере.

 hdfs dfs -get /dikshant.txt / home / dikshant / Рабочий стол

На изображении ниже мы видим, что данные успешно считываются и сохраняются в каталоге / home / dikshant / Desktop, и теперь мы можем увидеть его содержимое, открыв этот файл.