Что будет если записать много маленьких файлов в hdfs

Обновлено: 04.07.2024

Я читал, что множество маленьких файлов, хранящихся в HDFS, может быть проблемой, потому что много маленьких файлов означает много объектов Hadoop NameNode памяти.

Однако, поскольку каждый блок хранится в именованном узле как объект, чем он отличается для большого файла? Сохраняете ли вы 1000 блоков из одного файла в памяти или 1000 блоков для 1000 файлов, объем памяти NameNode используется одинаково?

Аналогичный вопрос для заданий на карте. Поскольку они работают с блоками, как это имеет значение, если блоки состоят из маленьких файлов или из больших?

1 ответ

На высоком уровне вы можете рассматривать HNDoop NameNode как трекер для определения местоположения блоков, составляющих "файлы", хранящиеся в HDFS; блоки используются для разбиения больших файлов на более мелкие части при хранении в кластере HDFS.

  • Когда в HDFS хранится много небольших файлов, также есть много блоков, и NameNode должен отслеживать все эти файлы и блоки в памяти.

Например, когда у вас есть большой файл - если вы сначала объедините все эти файлы в большие файлы - у вас будет меньше файлов, хранящихся в HDFS, и у вас также будет меньше блоков.

Сначала давайте обсудим, как соотносятся размер файла, блоки HDFS и память NameNode:

Это легче увидеть с примерами и цифрами.

Наш HDFS NameNode's block size для этого примера 100 МБ.

Давайте представим, что у нас есть тысяча (1000) файлов размером 1 МБ, и мы храним их в HDFS. При хранении этих 1000 файлов размером 1 МБ в HDFS у нас также будет 1000 блоков, составляющих эти файлы в нашем кластере HDFS.

  • Каждый блок, хранящийся в HDFS, требует около 150 байтов памяти NameNode, что составляет около 150 КБ памяти для этих 1000 блоков, представляющих 1000 файлов размером 1 МБ.

Теперь рассмотрим, что мы объединяем или объединяем эти 1000 файлов размером 1 МБ в один файл размером 1000 МБ и сохраняем этот файл в HDFS. При хранении файла объемом 1000 МБ в HDFS он будет разбит на блоки в зависимости от размера нашего кластера HDFS; в этом примере наш размер блока составлял 100 МБ, что означает, что наш файл размером 1000 МБ будет храниться в виде десяти (10) блоков по 100 МБ в кластере HDFS.

  • Каждый блок, хранящийся в HDFS, требует около 150 байтов памяти NameNode, что составляет около 1,5 КБ памяти для этих 10 блоков, представляющих файл размером 1 000 МБ.

С большим файлом у нас есть те же данные, которые хранятся в кластере HDFS, но мы используем 1% памяти NameNode по сравнению с ситуацией со многими маленькими файлами.

Блоки ввода и количество задач Map для задания связаны между собой.

Когда дело доходит до Map Задачи, как правило, у вас будет 1-карта задач на блок ввода. Размер входных блоков здесь имеет значение, потому что накладные расходы начинаются и заканчиваются новыми задачами; то есть, когда задачи Map завершаются слишком быстро, сумма этих накладных расходов становится большей частью времени завершения каждой задачи, и завершение всей работы может быть медленнее, чем та же самая работа, но с меньшим количеством больших входных блоков. Для задания на основе MapReduce2 задачи Map также включают запуск и остановку контейнера YARN на уровне управления ресурсами для каждой задачи, что добавляет накладные расходы. (Обратите внимание, что вы также можете указать заданиям MapReduce использовать пороговое значение минимального размера ввода при работе со многими небольшими входными блоками, чтобы устранить некоторые из этих недостатков)

В блоке в распределенной файловой системе Hadoop хранится несколько небольших файлов, или в блоке хранится только 1 файл?

Несколько файлов не сохраняются в одном блоке. BTW, один файл может храниться в нескольких блоках. Отображение между файлом и идентификаторами блоков сохраняется в NameNode.

В отличие от файловой системы для одного диска, файл в HDFS, который меньше, чем один блок, не занимает полных блоков базового хранилища.

HDFS предназначен для обработки больших файлов. Если файлов слишком много, тогда NameNode может загружаться, поскольку он хранит пространство имен для HDFS. Проверьте статью о том, как облегчить проблему со слишком большим количеством небольших файлов.

Ну, вы можете сделать это с помощью файловой системы HAR (Hadoop Archive), которая пытается упаковать несколько небольших файлов в блок HDFS специального файла детали, управляемого файловой системой HAR.

В блоке будет сохранен один файл. Если ваш файл больше, чем BlockSize (64/128/..), то он будет разбит на несколько блоков с соответствующим BlockSize.

Размер блока Hadoop - это концепция хранения Hadoop. Каждое время Когда вы храните файл в Hadoop, он будет разделен на размеры блоков и на основе коэффициента репликации и местоположения данных он будет распределен по кластеру.

Когда вы нажимаете файл на HDFS, он будет разделен на блоки. Каждый блок похож на отдельный файл, имеющий максимальный размер, как описано размером блока.

Каждый блок будет содержать файл .meta вместе с ним, чтобы сохранить информацию метаданных блока на Hadoop.

Если файл очень мал, то весь файл будет находиться в одном блоке, а блок (файл хранения) будет иметь тот же размер, что и файл и метафайл.

  • Подключитесь к любым данным Node на вашем кластере [если у вас есть доступ;]]. Затем перейдите в каталоги хранения для этого Node, и вы можете увидеть фактические блоки, хранящиеся в данных Node, как показано ниже.

(Dir соответствуют моему кластеру -/data2/dfs/dn/):

БЛОК Размер: 1 ГБ

В блоке используется только КБ хранилища для небольших файлов или может быть, когда размер файла - это мой размер блока + несколько KB

-rw-r - r-- 1 hdfs hdfs 91K Сен 13 16:19 blk_1073781504

-rw-r - r-- 1 hdfs hdfs 19K 13 сентября 16:21 blk_1073781504_40923.meta​​p >

Когда файл больше, чем размер блока, блок будет выглядеть как что-то ниже

-rw-r - r-- 1 hdfs hdfs 1.0G 31 авг 12:03 blk_1073753814

-rw-r - r-- 1 hdfs hdfs 8.1M Aug 31 12:04 blk_1073753814_12994.meta​​p >

Я надеюсь, что это объяснит материал для хранения блоков. Если вы хотите узнать, как ваши файлы хранятся в блоках, запустите

блок в распределенной файловой системе Hadoop хранит несколько небольших файлов или блок хранит только 1 файл?

несколько файлов не хранятся в одном блоке. Кстати, один файл может храниться в нескольких блоках. Сопоставление между файлом и идентификаторами блоков сохраняется в NameNode.

В отличие от файловой системы для одного диска, файл в HDFS, который меньше одного блока, не занимает полного блока базового хранилища.

HDFS предназначен для обрабатывать большие файлы. Если слишком много небольших файлов, то NameNode может быть загружен, так как он хранит пространство имен для HDFS. Проверьте это статьи о том, как облегчить проблему со слишком большим количеством небольших файлов.

Ну, вы можете сделать это с помощью файловой системы HAR (Hadoop Archive), которая пытается упаковать несколько небольших файлов в блок HDFS специального файла части, управляемого файловой системой HAR.

блок будет хранить один файл. Если ваш файл больше этого BlockSize(64/128/..), то он будет разделен на несколько блоков с соответствующим блока.

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

когда вы нажимаете файл на HDFS, он будет разделен на блоки. Каждый блок как отдельный файл, имеющий максимальный размер, как описано в блоке размер.

каждый блок будет содержать .мета-файл вместе с ним, для хранения метаданных блока на Hadoop.

Если файл очень маленький, то весь файл будет в одном блоке, а блок (файл хранения) будет иметь тот же размер, что и файл и мета-файл.

  • подключиться к любому узлу данных в кластере [ если у вас есть доступ ;)]. Затем перейдите к каталоги хранения для этого узла, и вы можете увидеть фактические блоки, хранящиеся на узле данных, как показано ниже.

(Dir в соответствии с моим кластером - / data2/dfs/dn/):

размер блока: 1 ГБ

компакт-диск /данных/ДПП/ду -> текущая -> завершена -> subDir0 -> (вот золото)

блок используется только КБ памяти для небольших файлов или может быть, когда размер файла мой blocksize + некоторые КБ

- rw-r--r-- 1 hdfs hdfs 91K Sep 13 16: 19 blk_1073781504

- rw-r--r-- 1 hdfs hdfs 19K Sep 13 16:21 blk_1073781504_40923.мета!--1-->

когда файл больше, то размер блока блок будет выглядеть как что-то, как показано ниже

- rw-r--r-- 1 hdfs hdfs 1.0 G 31 августа 12: 03 blk_1073753814

- rw-r--r-- 1 hdfs hdfs 8.1 M Aug 31 12:04 blk_1073753814_12994.мета!--1-->

Я надеюсь, что это объяснит блок хранения вещей. Если вы хотите узнать подробно, как ваши файлы хранятся в блоках, запустите

hdfs fsck-блоки-места

Дайте мне знать, если я пропустил что-нибудь здесь.

основной момент нужно понимать в hdfs, file is partioned into blocks based on size и не то, что будут какие-то блоки в памяти, где хранятся файлы (это заблуждение)

в основном несколько файлов не хранятся в одном блоке (если это не архив или файл Har).

Еще материалы по теме

PXF, Greenplum и оптимизация SQL-запросов к разным источникам данных

PXF, Greenplum и оптимизация SQL-запросов к разным источникам данных

AVRO и JSON В Apache Kafka: краткий ликбез по реестру схем

AVRO и JSON В Apache Kafka: краткий ликбез по реестру…

На заметку разработчику Spark-приложений: 3 ошибки PySpark и тонкости Outer Join

На заметку разработчику Spark-приложений: 3 ошибки PySpark и тонкости Outer…

Напиши отзыв и выиграй

Новое на сайте
Отзывы на Google

BigDataSchool

Курсы от инженеров и для инженеров. Всё чётко, по делу. Тренеры глубоко знают продукты, о которых читают лекции. read more

Принимал участие в обучении по курсу "KAFKA: Администрирование кластера Kafka". В целом понравилось, но хотелось бы более качественной организации работы с лабгайдами. Когда лектор выполняет лабораторную работу, не совсем удобно выполнять её параллельно - где-то отстаешь, где-то убегаешь вперед. Может будет лучше разделить на более мелкие модули. read more

Прошел Курс Администрирование кластера Hadoop. Подача материала хорошая, размеренная. Преподаватель отвечает на все вопросы, и пытается как можно прозрачней приподнести материал. read more

Обучался на программе HADM. Подача материала доступная. Порадовало соотношение теории и практики 50/50. Отзывчивый преподаватель. Однозначно рекомендую. read more

Заканчиваю прохождения курса "ADH: Администрирование кластера Arenadata Hadoop". Хочу сказать, что выстроен грамотный план обучения, где отслеживается отличное соотношение практики и теории. Преподаватель, Комисаренко Николай, обладает отличным чувством юмора, что позволило не скучать на серьезных темах, и обладает отличным навыком объяснять сложные вещи простыми словами. На курс приходил с большим числом вопросов, на все из которых получил грамотные ответы, после чего все разложилось по полочкам. read more

В декабре 2020 прошел курс "Администрирование кластера Kafka". Курс проводился удаленно. В части организации обучения придраться не к чему. Необходимую информацию прислали заранее, лабораторный стенд и портал обучения работали стабильно. Немного разочаровали лабораторные работы. На месте BigDataSchool я бы их переделал. В документах с лабами нужно сделать нормальное форматирование и нумерацию пунктов. Все пункты, необходимые для выполнения, нужно сделать в виде текста. В лабах много работ по созданию «обвязки» kafka (создание самоподписных сертификатов, развертывание MIT и т.п), которые можно сделать заранее. Это позволит студентам уделять больше времени изучению самой kafka. BigDataSchool идет навстречу и позволяет пользоваться лабораторным стендом гораздо дольше установленных часов обучения. Это очень к стати, если в течении дня Вы вынуждены отвлекаться от обучения. В целом, курс дает хорошую базу по kafka. Преподаватель хорошо подает материал, делает акценты в нужных местах, подробно отвечает на вопросы. read more

С 30 ноября по 4 декабря прошел курс "Администрирование кластера Hadoop". Учитывая, что я обладал довольно поверхностной информацией в данной теме (я CIO) - ушел с курсов просветленным. Многое стало понятным, в процессе обучения наложил знания на существующую инфраструктуру компании, в которой работаю. Рекомендую коллегам руководителям в ИТ - прокачаться на данном курсе, вы поймете куда двигаться в ближайшие 2-3 года. Админам, работающим или стремящимся в BigData- обязательно! Рекомендация - настойчиво, для тех кто "думает, что знает": перед курсом уделите время работе с командной строкой Linux! Total recall - обязательное условие. Много практической работы, и если есть затык в Linux - будете безнадежно отставать при выполнении лабораторных работ. read more

В октябре прошел курс Анализ данных с Apache Spark, это был второй раз, когда я обучался в этом месте. В целом, все хорошо, думаю что не последний. Не могу не подчеркнуть профессионализм преподавателя Королева Михаила, отвечал на поставленные вопросы, делился своим опытом. В общем, рекомендую! read more

Прошел тут курс "NIFI: Кластер Apache NiFi", вёл Комисаренко Николай. Живое и понятное обучение. Преподаватель отвечал на все вопросы от самых глупых, до самых умных и это было приятно. Так же порадовало, что преподаватель не идёт по заранее проложенным рельсам, а проходит весь путь вместе с вами, стараясь привнести, что-то новое. read more

Спасибо за обучение!

Очень крутое место, много практики, понятное объяснение заданной темы. Еще вернусь :) read more

Обучался на курсе HADM администрирование кластера Arenadata Hadoop. Интересный курс, хорошая подача. read more

Обучался на курсе по администрированию Apache Kafka. Хорошая подача материала, интересные практические задачи. Возникающие вопросы доходчиво и ясно объясняют. Остался очень доволен. read more

Был на курсе "Администрирование кластера Hadoop". Отличная подача материала. Очень много практики и технических подробностей. Подробный обзор стека технологий, платформы и инструментов. Рекомендую! read more

Учился на курсе Администрирование Hadoop. Курс вёл Николай Комиссаренко. Отлично подготовленная, продуманная, системная программа курса. Практические занятия организованы так, что у студентов есть возможность познакомиться с реальными особенностями изучаемого продукта. Отключил голову и прощёлкал лабы по книжке - здесь не работает. Преподаватель легко и развёрнуто отвечает на возникающие вопросы не только по теме предмета, но и по смежным. read more

Прошёл курс по администрированию Apache Kafka. Очень понравилась как подача материала, так и структура курса. Только вот времени маловато оказалось. не всё успел доделать, но это уже не к курсу претензии :). Практики было довольно много, и это хорошо read more

Прошёл курс "Hadoop для инженеров данных" у Николая Комиссаренко. Информация очень актуальна и полезна, заставляет задуматься о текущих методах работы с большими данными в нашей компании и, возможно, что-то поменять. Занятия с большим количеством практики, поэтому материал хорошо усваивается. Отдельное спасибо Николаю за то, что некоторые вещи объяснял простым языком, понятным даже для "чайников" в области Hadoop. read more

I did not find any disadvantages in the course. Pluses: + A lot of practice (50% of the time). + The teacher can explain difficult topics easy way. + Announced topics were considered. Besides additional materials were studied. read more

Посетил курс администрирование Hadoop. На курсе устанавливали кластер с нуля на виртуалках в облаке Amazon. Настраивали Kerberos, тестировали выполнение задач на кластере, управление ресурсами кластера. Т.к. кластер развернут в облаке, после завершения занятий можно самостоятельно работать с кластером из дома. Лекции вел Николай Комиссаренко, после обучения предоставил все материалы. На занятиях отвечал на дополнительные вопросы, рассмотрели как решить пару живых задач от студентов. Хороший курс для начала изучения BigData. Update Дополнительно прошел обучения по Airflow и NiFi. Курсы двух дневные упор на занятиях делался на использовании продуктов, администрированию уделялось меньше времени. Т.к. курсы короткие, то перед занятиями желательно почитать обзорные статьи по продуктам, чтобы не терять время на базовое погружение и задавать более предметные вопросы. Перед началом занятий желательно связаться с школой и запросить что больше интересуется на обучении. Может быть предложить свои кейсы, чтобы на лабораторных отработать не только общий функционал. read more

Был на основах хадупа, все материалы описаны доступным языком. В частности хочу отметить преподавателя Николая Комисаренко, как очень квалифицированного преподавателя и специалиста. read more

Отличные курсы по "Администрированию Hadoop" и отличная организация проведения занятий, все по делу и понятно. Очень понравилось, знания получены основательные. Материал подаётся основательно. Постараюсь ещё попасть на другие курсы. read more

Курс по Isilon у Николая Комиссаренко мне тоже понравился. Грамотный и отзывчивый. Возникали вопросы по курсу он отвечал на все вопросы. Спасибо. Успехов ему read more

Посетил курс администрирование Hadoop. На курсе устанавливали кластер с нуля на виртуалках в облаке Amazon. Настраивали Kerberos, тестировали выполнение задач на кластере, управление ресурсами кластера. Т.к. кластер развернут в облаке, после завершения занятий можно самостоятельно работать с кластером из дома. Лекции вел Николай Комиссаренко, после обучения предоставил все материалы. На занятиях отвечал на дополнительные вопросы, рассмотрели как решить пару живых задач от студентов. Хороший курс для начала изучения BigData. read more

Эффективный практический курс. Прошел курс Администрирование Hadoop в октябре 2018. Хорошо наполненный материал, оптимальная длительность курса и все делалось своими руками. Местами было непросто, но преодолимо. Оправдал все ожидания, после курса появилось целостное понимание создания и работы кластера. Николай, большое спасибо read more

Прошёл курс по администрированию Hadoop Cloudera. Отличная "живая" подача материала на "простом" языке. Как плюс работа с кластером построена на платформе AWS. На курсах не скучно, рекомендую! read more

Я узнал много нового посетив курс уважаемого Николая Комиссаренко по айзелону. Очень грамотный специалист обучение было очень полезным и грамотным. Спасибо вам большое read more

Читайте также: