1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/weiwei02-WHadoop

Клонировать/Скачать
hdfs.md 20 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 07.06.2025 13:10 09fcd4a

#Hadoop распределенная файловая система

Когда размер набора данных превышает возможности хранения одной физической машины, необходимо разделить данные и хранить их на нескольких отдельных компьютерах. Файловая система, управляющая файлами, хранящимися на сети нескольких компьютеров, называется распределенной файловой системой (распределенная файловая система). Эта система построена на сети и имеет сложность сетевой программной инженерии, поэтому распределенная файловая система сложнее обычной дисковой файловой системы. Например, распределенная файловая система должна обеспечивать сохранность данных при сбоях узлов.

Hadoop имеет распределенную систему, известную как HDFS, то есть Hadoop Distributed Filesystem. В предыдущих версиях Hadoop она также называлась DFS, и это одно и то же. Hadoop представляет собой комплексное абстрактное представление файловой системы, а HDFS — флагманская файловая система Hadoop.

Дизайн HDFS>HDFS хранит огромные файлы в режиме потоковой обработки данных, работая на кластерах коммерческого оборудования.

Мы можем интерпретировать вышеупомянутое следующим образом:

  • Огромные файлы: "Огромные файлы" здесь означают файлы размером от сотен мегабайт до сотен гигабайт, а также терабайты. В настоящее время уже существуют кластеры Hadoop с петабайтами данных.* Потоковая обработка данных: Концепция HDFS такова, что наиболее эффективным режимом доступа является однократное написание и многократное чтение. Датасеты обычно копируются из источников данных и затем используются для различных анализов на протяжении длительного времени. Каждый анализ обычно включает большую часть или весь датасет, поэтому задержка времени чтения всего датасета важнее задержки времени чтения первой записи.

  • Коммерческое оборудование: Hadoop не требует запуска на дорогостоящем и надежном оборудовании. Он разработан для работы на кластерах из коммерческого оборудования (обычного оборудования, которое можно приобрести в различных магазинах). Поэтому для больших кластеров вероятность отказа узлов остается высокой. HDFS спроектирован так, чтобы продолжать работу при возникновении вышеупомянутых отказов без заметного влияния на пользователя. Также стоит изучить и те приложения, которые не подходят для работы с HDFS. В настоящее время некоторые области не подходят для работы с HDFS, но это может измениться в будущем.* Низкая задержка при доступе к данным: Приложения, требующие низкой задержки доступа (например, в пределах нескольких десятков миллисекунд), не подходят для работы с HDFS. Помните, что HDFS оптимизирован для приложений с высокой пропускной способностью данных, что может привести к увеличению задержки времени. В настоящее время для приложений с низкой задержкой лучше всего подходит HBase.* Огромное количество маленьких файлов: Поскольку namenode хранит метаданные файловой системы в оперативной памяти, общее количество файлов, которое может быть хранено, ограничено объемом оперативной памяти namenode. По опыту, информация о каждом файле/директории и блоке данных занимает около 150 байт. Например, если есть миллион файлов, и каждый файл занимает один блок данных, то потребуется как минимум 150 мегабайт оперативной памяти. Хотя хранение миллиона файлов возможно, хранение миллиардов файлов превышает возможности современного оборудования.

  • Многопользовательское написание и произвольное изменение файлов: В HDFS файл может иметь только одного writer'а, и все операции всегда добавляют данные в конец файла. Он не поддерживает операции с несколькими writer'ами и не поддерживает произвольное изменение данных в любом месте файла.### Концепция HDFS

1. Блоки данных

Каждый диск имеет стандартный размер блока данных, который является минимальной единицей для чтения и записи данных на диске. Файловая система, построенная на основе одного диска, управляет блоками файловой системы с помощью блоков диска, размер которых может быть целым числом блоков диска. Размер блока файловой системы обычно составляет несколько тысяч байт, в то время как размер блока диска обычно составляет 512 байт. Эта информация — размер блока файловой системы — является прозрачной для пользователей файловой системы, которые читают и записывают файлы. Тем не менее, система предоставляет некоторые инструменты (например, ds и fsck), чтобы поддерживать файловую систему, которые выполняют операции над блоками файловой системы. HDFS также имеет концепцию блока (block), но размер блока намного больше, по умолчанию составляет 64 МБ. Как и файловая система на одном диске, файлы в HDFS также разделяются на несколько блоков (chunk) размером блока, которые являются независимыми единицами хранения. Однако в отличие от других файловых систем, файлы в HDFS, размер которых меньше одного блока, не занимают весь объем блока.

2. Namenode и Datanode

HDFS-кластер состоит из двух типов узлов, работающих в режиме менеджер-работник, то есть одного Namenode (менеджер) и нескольких Datanode (работники).Namenode управляет пространством имен файловой системы. Он поддерживает дерево файловой системы и все файлы и директории в этом дереве. Эта информация сохраняется в двух файлах на локальном диске: файле пространства имен и файле журнала изменений. Namenode также отслеживает информацию о том, на каких узлах данных находятся блоки каждого файла, но не сохраняет эту информацию постоянно, так как она восстанавливается узлами данных при запуске системы.

Клиент (client) представляет пользователя, взаимодействуя с Namenode и Datanode для доступа к всей файловой системе. Клиент предоставляет интерфейс файловой системы, похожий на POSIX (Portable Operating System Interface), поэтому пользователи могут реализовать свои функции без знания Namenode и Datanode.

Datanode — это рабочие узлы файловой системы. Они хранят и извлекают данные блоки по мере необходимости (по расписанию от клиента или Namenode) и регулярно отправляют Namenode список блоков, которые они хранят.

Без Namenode файловая система не может использоваться. В действительности, если машина, на которой работает Namenode, выйдет из строя, все файлы в файловой системе будут потеряны, так как мы не знаем, как восстановить файлы на основе блоков Datanode. Поэтому важно обеспечить отказоустойчивость Namenode, и Hadoop предлагает два механизма для этого.

1.Первый механизм — это резервное копирование файлов, составляющих устойчивое состояние метаданных файловой системы. Hadoop может настроить Namenode для работы на нескольких узлах. Постоянное состояние метаданных файловой системы сохраняется на жестком диске. Эти записи выполняются в реальном времени и являются атомарными операциями. Обычное конфигурирование состоит в том, чтобы записывать постоянное состояние на локальный жесткий диск и одновременно на удалённую сетевую файловую систему (NFS).2. Другим возможным подходом является запуск вспомогательного NameNode, который не может быть использован как основной NameNode. Важная роль вспомогательного NameNode заключается в периодическом объединении копии пространства имен с помощью редактируемого журнала, чтобы предотвратить его переполнение. Вспомогательный NameNode обычно запускается на отдельной машине, так как ему требуется большое количество времени процессора и памяти, аналогичной основному NameNode, для выполнения объединения. Он сохраняет копию объединенного пространства имен и активируется при отказе основного NameNode. Однако состояние вспомогательного NameNode всегда отстает от основного, поэтому при полном отказе основного NameNode частично могут быть потеряны данные. В этом случае обычно копия метаданных NameNode, хранящаяся на NFS, переносится на вспомогательный NameNode, который затем начинает работать как новый основной NameNode.

3. Федерация HDFS

Федерация HDFS, введенная в версиях Hadoop 2.x, позволяет системе масштабироваться путем добавления NameNode, каждый из которых управляет частью пространства имен файловой системы.В федерированной среде каждый namenode поддерживает объем пространства имен (namespace volume), который включает исходные данные пространства имен и все блоки данных и пулы блоков данных, находящиеся в этом пространстве имен. Объемы пространства имен независимы друг от друга и не обмениваются информацией, поэтому отказ одного namenode не влияет на доступность пространства имен, поддерживаемого другими namenode. Пулы блоков данных больше не разделяются, поэтому узлы данных в кластере должны регистрироваться у каждого namenode.Для доступа к федерированному кластеру HDFS клиенты должны использовать таблицу монтирования клиента для отображения путей файлов на namenode. Эта функциональность настраивается и управляется с помощью ViewFileSystem и URI viewfs.

4. Высокая доступность HDFS

В версиях Hadoop 2.x в HDFS была добавлена поддержка высокой доступности (HA).Hadoop обеспечивает высокую доступность (HA) с помощью активно-пассивного namenode. Когда активный namenode отказывает, пассивный namenode принимает на себя его функции и начинает обслуживать запросы от клиентов без заметного прерывания. Для достижения этой цели требуется следующая архитектурная модификация:

  • Namenode должны использовать высокодоступное общее хранилище для совместного использования редактируемого журнала. (В ранних версиях требовался фильтр NFS.) Для помощи в реализации, но в более поздних версиях будет предоставлено больше выбора, например, системы, построенные на ZooKeeper, таких как BookKeeper.)

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

  • Datanode должен отправлять отчеты о процессе данных блоков двум namenode, так как информация о маппинге блоков хранится в памяти namenode, а не на диске.

  • Клиенты должны использовать специальные механизмы для обработки отказа namenode, этот механизм прозрачен для пользователей.

После отказа активного namenode, запасной namenode может быстро (в течение нескольких десятков секунд) взять на себя управление.

Командная строка > Мы можем использовать HDFS для выполнения всех обычных операций файловой системы, таких как чтение файлов, создание новых директорий, перемещение файлов, удаление данных, перечисление содержимого директорий. Для получения подробной справки по каждому командному параметру можно ввести команду hadoop fs -help.

Сначала скопируем файл из локальной файловой системы в HDFS: root@master:/media/workspace/IntelliJIDEA/WHadoop# hadoop fs -copyFromLocal input/docs/quangle.txt /usr/weiwei/quangle.txt Затем скопируем файл обратно в локальную файловую систему: root@master:/media/workspace/IntelliJIDEA/WHadoop# hadoop fs -copyToLocal /usr/weiwei/quangle.txt input/docs/quangle.copy.txt Затем посмотрим, как HDFS отображает файловые директории: hadoop fs -ls /usr/weiwei Результат: Найдено 1 элемент -rw-r--r-- 2 root supergroup 119 2017-02-05 12:06 /usr/weiwei/quangle.txt Возвращаемый результат очень похож на вывод команды UNIX ls -l, с небольшими различиями. Первая колонка отображает режим файла. Вторая колонка показывает количество резервных копий файла (это отсутствует в традиционной файловой системе UNIX). Третья и четвертая колонки отображают пользователя и группу, к которым принадлежит файл. Пятая колонка показывает размер файла в байтах, а если это директория, то размер равен 0. Шестая и седьмая колонки отображают дату и время последнего изменения файла. Наконец, восьмая колонка отображает абсолютный путь к файлу или директории.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/weiwei02-WHadoop.git
git@api.gitlife.ru:oschina-mirror/weiwei02-WHadoop.git
oschina-mirror
weiwei02-WHadoop
weiwei02-WHadoop
master