Оригинальный адрес:Пенто.Специализация/2018/09/10/…
Hadoop
Экология — огромная и полностью функциональная экология, но она по-прежнему вращается вокругHadoop
Его основные компоненты состоят из четырех частей, а именно:Common
,HDFS
,MapReduce
а такжеYARN
.
-
Common
даHadoop
Общие компоненты архитектуры; -
HDFS
даHadoop
распределенная система хранения файлов; -
MapReduce
даHadoop
Предоставляет модель программирования, которую можно использовать для параллельных операций с крупномасштабными наборами данных; -
YARN
даHadoop
После обновления архитектуры в настоящее время широко используется диспетчер ресурсов.
Небольшая цель — написать сообщение в блоге с полным решением для каждого основного компонента.Давайте сначала внимательно рассмотрим эту статью.HDFS
.
1. Введение
HDFS (распределенная файловая система Hadoop) предназначена для работы на оборудовании общего назначения (commodity hardware
)ВверхHadoop
распределенная файловая система. Он сильно отличается от других распределенных систем, прежде всегоHDFS
Он отказоустойчив и может быть развернут на недорогом оборудовании. также,HDFS
Обеспечивает высокоскоростной доступ к данным приложений, подходящий для приложений с большими наборами данных.
В настоящее время,HDFS
в видеApache Hadoop
, URL-адрес:hadoop.apache.org/
2. Преимущества HDFS
2.1 Предотвращение аппаратных сбоев
ОдинHDFS
Экземпляры могут содержать сотни или тысячи серверов, каждый из которых хранит часть данных файловой системы, и в этом случае сбои оборудования являются нормой. иHDFS
Выявляйте сбои и быстро и автоматически восстанавливайтесь после них.
2.2 Доступ к потоковым данным
HDFS
Разработанный для пакетной обработки, а не интерактивного использования пользователями, он ориентирован на высокую пропускную способность доступа к данным без стремления к низкой задержке доступа к данным.
2.3 Работа с большими наборами данных
HDFS
Основная цель состоит в том, чтобы обрабатывать приложения с большими объемами данных, а размер файлов приложений, работающих на них, обычно невелик.TB
уровень.HDFS
Обеспечивает высокую совокупную пропускную способность данных и масштабируется до сотен узлов в кластере и поддерживает десятки миллионов файлов для одного приложения.
2.4 Простая непротиворечивая модель
HDFS
Приложение - это «написать один раз, прочитать» модель доступа к файлам. Эта модель может упростить согласованность данных и может достичь высокой пропускной способности. Официальные документы указывают, что есть планы по поддержке дополнительных функций, написанных в файл.
2.5 Мобильные вычисления заменяют мобильные данные
«Перемещение вычислений дешевле, чем перемещение данных», когда вычислительная программа и данные находятся на одном физическом узле, операция наиболее эффективна, особенно когда объем данных особенно велик, мобильные вычисления намного превосходят перемещаемые наборы данных. Мобильные вычисления могут свести к минимуму перегрузку сети и увеличить общую пропускную способность системы.HDFS
Дизайн заключается в том, чтобы переместить вычисления ближе к месту, где находятся данные, а не перемещать данные туда, где работает приложение.HDFS
Предоставляет интерфейс для приложений, чтобы приблизиться к данным.
2.6 Переносимость между разнородными аппаратными и программными платформами
HDFS
предназначен для облегчения переноса с одной платформы на другую. Это способствует широкому внедрениюHDFS
В качестве предпочтительной платформы обработки больших данных для большого количества приложений.
3. NameNode и DataNodes
NameNode
иDataNode
даHDFS
Важные точки знания системы.HDFS
даmaster/slave
Архитектура. ОдинHDFS
Кластер состоит из одногоNameNode
и многочисленныеDataNode
композиция, файл разбивается на один или несколько блоков, эти блоки хранятся в группеDataNode
середина.
так какHDFS
Он построен на языке Java, поэтому, если это машина, поддерживающая язык Java, она может работатьNameNode
иDataNode
. И из-за высокой переносимости Java,HDFS
Также имеет очень широкий спектр применения. типичныйHDFS
Режим развертывания — указать физический хост для запускаNameNode
, то остальные машины работаютDataNode
, в реальной ситуации развертывания обычно один хост развертывает одинDataNode
.
есть одинNameNode
В значительной степени упрощает системную архитектуру.NameNode
это всеHDFS
Решатель метаданных и репозиторий. Этот дизайн системы таков, что пользовательские данные никогда не проходят черезNameNode
, понятноNameNode
как центр всей системы.
Архитектура выглядит следующим образом:
Первый на картинкеrack
В переводе «стойка» его можно понимать как два кластера в разных местах, и каждый кластер имеет свой способ соединения. во-вторых вDataNode
В нем хранится не файл, а файловый блок (Блок), вHDFS
, каждый большой файл разбивается на несколькоBlock
, затем поместите этиBlock
распределены по разнымDataNode
, и каждыйBlock
Будет несколько копий, а также они будут храниться в другихDataNode
середина.
Можно видеть, что приведенный выше рисунок объясняет две операции «чтения» и «записи» соответственно:
- Когда клиент хочет
HDFS
При записи файла файл разбивается на рисункеBlock
записано на обе стойкиDataNode
В общем, это два физических хоста в двух стойках, видно, что данные файла не проходят.NameNode
. Процесс записи данных см. в разделе ("7. Конвейер репликации данных"). - Когда клиент хочет
HDFS
При чтении файла команда операции передаетсяNameNode
,ПотомNameNode
Преобразование в операцию соответствующего блока данных, команда соответствующегоDataNode
Возвращает требуемые данные клиенту.
Существует также не показанная диаграмма узлов, называемая
Secondary Namenode
, является вспомогательной фоновой программой, в основном отвечающей заNameNode
общайтесь, сохраняйте регулярноHDFS
Снимки и резервные копии метаданных и др.NameNode
содержание, каждый деньStandby
,когдаNameNode
Замена в случае отказаNameNode
использовать.
NameNode
NameNode
Является главным сервером, который управляет пространством имен файловой системы, управляет клиентским доступом к файлам и выполняет операции с пространством имен файловой системы, такие как открытие, закрытие и переименование файлов и каталогов. Это также определилоBlock
прибытьDataNode
отображение.
NameNode
принимает все решения о репликации блоков, которые периодически реплицируютсяDataNode
перениматьHeartbeat
иBlockreport
. ПолучатьHeartbeat
значитDataNode
Нормальная операция,Blockreport
ВключаютDataNode
Список всех блоков.
DataNode
DataNode
Обычно по одному на узел в кластере, используется для хранения данных и отвечает за обслуживание запросов на чтение и запись от клиентов файловой системы. а также согласноNameNode
Инструкции выполняют создание, удаление и копирование блоков.
4. Пространство имен файловой системы HDFS и метаданные
HDFS
Поддерживая традиционную иерархическую организацию файлов, иерархия пространства имен файловой системы аналогична большинству других существующих файловых систем, и пользователь или приложение могут создавать папки и хранить файлы в этой папке. ноHDFS
Жесткие ссылки и программные ссылки в Linux не поддерживаются.NameNode
поддерживает пространство имен файловой системы, которое записывает любые изменения в пространстве имен файловой системы или ее атрибутах,NameNode
Также хранит фактор репликации.
Копия блока данных называется коэффициенту копирования блока данных.
метаданные файловой системы (MetaData
) также хранятся вNameNode
середина,NameNode
использовать имяEditLog
Журнал транзакций для постоянной записи всех изменений, происходящих в метаданных файловой системы. Например, вHDFS
Создание нового файла приведет кNameNode
Вставить записьEditLog
, чтобы указать на это.NameNode
использовать файлы в своей локальной файловой системе хост-ОС для храненияEditLog
.
Принимая во внимание, что все пространство имен файловой системы (включая сопоставления блоков и файлов и атрибутов файловой системы) хранится в файлах с именамиFsImage
в файле.FsImage
Также хранится в виде файла вNameNode
в локальной файловой системе.
Сохранение метаданных
NameNode
Сохраняет все пространство имен файловой системы и отображение блоков файла во всей памяти. когдаNameNode
При запуске или когда контрольная точка запускается настраиваемым порогом, она считывает данные с диска.FsImage
иEditLog
И сначалаFsImage
загрузить метаданные файловой системы изEditLog
Все транзакции применяются к in-memoryFsImage
, и, наконец, синхронизируйте эту новую версию с дискомFsImage
. Затем он может обрезать старыйEditLog
, потому что его транзакция была применена к сохранениюFsImage
. Этот процесс называется контрольной точкой.
Цель контрольной точки — сделать снимок метаданных файловой системы и сохранить его вFsImage
для обеспеченияHDFS
Согласованное представление с метаданными файловой системы. Хотя читал прямо из памятиFsImage
очень эффективно, но прямоFsImage
Инкрементальное редактирование неэффективно. Мы не изменяем каждый редакторFsImage
, но вEditlog
Правки сохраняются в файле .
Во время КПП,Editlog
изменения будут применены кFsImage
. Это может быть за считанные секунды временных интервалов (DFS.NEMENODE.CHECKPOINT.PERIOD) TRIGER CHECK POINT или заданное количество кумулятивных операций файловой системы после триггера контрольно-пропускных пунктов (dfs.nameenode.Checkpoint.txns). Если оба эти два свойства, которые встречаются после порога, могут вызвать контрольную точку.
5. Репликация данных
HDFS
Предназначен для надежного хранения очень больших файлов на компьютерах в больших кластерах. Он хранит каждый файл в виде серии блоков, все блоки в файле, кроме последнего, имеют одинаковый размер,HDFS
Используемый размер блока по умолчанию составляет 128 МБ. Блоки файла копируются для достижения отказоустойчивости, а скопированные блоки файла обычно хранятся в разныхDataNode
середина. Размер блока данных и коэффициент репликации могут быть установлены пользователем.
Файлы в HDFS предназначены для однократной записи, и в любой момент времени может быть только один записывающий файл.
Объяснение: Как показано на рисунке,part-0
Фактор репликации файлаr:2
Блок данных разделения{1,3}
, поэтому блок данных 1 находится в 1-м, 3-мDataNode
Вкл, 3-й блок данных находится в 5-м, 6-мDataNode
начальство;part-1
Документация объясняет то же самое. И эта информация хранится вNameNode
середина.
Стратегия хранения реплик HDFS
Я лишь кратко представил информацию на картинке, собственноHDFS
Стратегия размещения реплик — тема, достойная изучения, так как она действительно связана сHDFS
Надежность и производительность, а также оптимизированная стратегия размещения реплик также делаютHDFS
Он имеет преимущества перед другими распределенными файловыми системами.
В большинстве практических случаев, когда коэффициент репликацииr = 3
час,HDFS
Стратегия размещения заключается в размещении реплики в операции записи.DataNode
, вторая реплика размещается на узле в другой удаленной стойке, а затем последняя реплика размещается на другом физическом узле в той же удаленной стойке.
Эта стратегия размещения может эффективно сократить обмен данными в стойке для повышения производительности системы. Поскольку связь между физическими узлами в разных стойках должна проходить через коммутаторы, и в большинстве случаев пропускная способность сети между компьютерами в одной стойке больше, чем пропускная способность сети между компьютерами в разных стойках.
Если коэффициент репликации больше 3, размещение 4-й и последующих реплик определяется случайным образом, при этом сохраняетсяна стойкуКоличество реплик ниже предела.
Верхний предел, как правило, (количество копий - 1) / стойка + 2
так какNameNode
не допускаетсяDataNode
имеет несколько копий одного и того же блока, поэтому максимальное количество копий, которое может быть создано в это времяDataNode
Всего.
Когда клиент просит прочитать,HDFS
Чтобы минимизировать глобальное потребление пропускной способности и задержки для чтения, предпочтительна копия данных, наиболее близкая к клиенту чтения.
Шестой, протокол связи
всеHDFS
Коммуникационные протоколы разделены на уровниTCP/IP
на договоре.
Семь, конвейер репликации данных
Когда клиент записывает данные с коэффициентом репликацииr = 3
изHDFS
файл,NameNode
использоватьreplication target choosing algorithm
забратьDataNode
список. Этот список содержит реплики, на которых будет размещен блок.DataNode
.
Затем клиент отправляет первыйDataNode
пиши, сначалаDataNode
Начать получать данные пачками, каждую часть записывать в свое локальное хранилище и передавать эту часть во вторую по спискуDataNode
. секундаDataNode
Начните снова получать каждую часть блока данных, записывайте эту часть в свое хранилище, затем сбрасывайте эту часть в третьюDataNode
. Наконец, третийDataNode
Запишите данные в его локальное хранилище.
видимый,DataNode
заключается в получении данных от предыдущего в конвейере, при пересылке данных к следующему в конвейере данные принимаются изDataNode
конвейер к следующемуDataNode
.
Восемь, действующий
Приложениями можно манипулировать различными способамиHDFS
на файл, который проходитFS Shell
можно манипулировать какLinux
Файловая система является общей, и часто используемые команды:
Action | Command |
---|---|
Создать папку foodir | bin/hadoop fs -mkdir /foodir |
удалить папку | bin/hadoop fs -rm -R /foodir |
Просмотр содержимого файла | bin/hdfs dfs -cat /foodir/myfile.txt |
загрузить файлы | bin/hdfs dfs -copyFromLocal ~/a.txt /foodir/ |
... | ... |
Вы обнаружите, что здесь есть два префикса команд, один из них
hadoop fs
,одинhdfs dfs
Разница в следующем:
hadoop fs
Ее можно использовать и в других файловых системах, а не только в файловой системе hdfs, а это значит, что у команды более широкий спектр применения; иhdfs dfs
HDFS специально для распределенной файловой системы.Также есть префикс
hadoop dfs
, это устарело, не рекомендуется использовать 🙅.
9. Утилизация пространства
9.1 Удаление и восстановление файлов
Если конфигурация корзины включена, тоFS Shell
Удаленные файлы не удаляются сразу изHDFS
удалено вHDFS
Переместите его в каталог корзины (/user/username/.Trash).
В корзину, после истечения срока жизни удаленного файла,NameNode
будет изHDFS
Удалить файл из пространства имен. Удаление файла приводит к освобождению блоков, связанных с файлом.
ПРИМЕЧАНИЕ. Когда пользователь удаляет файл,
HDFS
Между соответствующим увеличением свободного места в файле .
Если конфигурация мусорной корзины включена и вы хотите полностью ее удалить, выполните следующую команду:hadoop fs -rm -r -skipTrash a.txt
9.2 Сокращение фактора репликации
Когда коэффициент репликации файла уменьшается,NameNode
Выберите избыточные копии, которые можно удалить. СледующийHeartbeat
передавать эту информацию вDataNode
. Потом,DataNode
Соответствующий блок удаляется, и в кластере отображается соответствующее свободное место.
Ссылаться на
[1] Hadoop JavaDoc API
[2] Исходный код HDFS:Hadoop.Apache.org/version_con…
[3] Документация HDFS:Hadoop.Apache.org/docs/stable…