Подтвердить что ты не робот

Размер блока данных в HDFS, почему 64 МБ?

Размер блока данных по умолчанию для HDFS/hadoop составляет 64 МБ. Размер блока на диске обычно составляет 4 КБ. Что означает размер блока 64 МБ? → Означает ли это, что наименьшая единица чтения с диска составляет 64 МБ?

Если да, в чем преимущество этого? → легко для непрерывного доступа к большому файлу в HDFS?

Можем ли мы сделать то же самое, используя исходный размер блока 4KB на диске?

4b9b3361

Ответ 1

What does 64MB block size mean?

Размер блока - это наименьшая единица данных, которую может хранить файловая система. Если вы сохраните файл размером 1k или 60Mb, он займет один блок. Как только вы перейдете границу 64Mb, вам понадобится второй блок.

If yes, what is the advantage of doing that?

HDFS предназначен для обработки больших файлов. Допустим, у вас есть файл 1000 Мб. С размером блока 4k вам нужно будет сделать 256 000 запросов для получения этого файла (1 запрос на блок). В HDFS эти запросы проходят через сеть и имеют много накладных расходов. Каждый запрос должен обрабатываться именем Node, чтобы выяснить, где этот блок можно найти. Это много трафика! Если вы используете блоки 64Mb, количество запросов уменьшается до 16, что значительно снижает стоимость накладных расходов и нагрузку на имя Node.

Ответ 2

Дизайн HDFS изначально был вдохновлен дизайном файловой системы Google (GFS). Вот две причины больших размеров блоков, как указано в исходной бумаге GFS (примечание 1 к терминологии GFS и терминологии HDFS: chunk = block, chunkserver = datanode, master = namenode, примечание 2: полужирное форматирование - мое):

Большой размер куска предлагает несколько важных преимуществ. Первый, он уменьшает потребности клиентов в взаимодействии с мастером, потому что чтение и запись на одном и том же фрагменте требуют только одного первоначального запроса хозяину для информации о местоположении куска. Это особенно важно для наших рабочих нагрузок, потому что приложения в основном читают и записывают большие файлы последовательно. [...] Второй, так как на большом фрагменте клиент с большей вероятностью выполнит много операций на определенном фрагменте, он может уменьшить накладные расходы сети, сохраняя постоянное TCP-соединение с сервером chunks поверх длительный период времени. В-третьих, он уменьшает размер метаданных, хранящихся на главном компьютере. Это позволяет нам сохранять метаданные в свою очередь, дает другие преимущества, которые мы обсудим в разделе 2.6.1.

Наконец, я должен указать, что текущий размер по умолчанию в Apache Hadoop составляет 128 МБ.

Ответ 3

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

Кроме того, если слишком много блоков, это будет напрягать имя Node. Обратите внимание, что имя Node должно хранить в памяти все метаданные (данные о блоках). В Apache Hadoop размер блока по умолчанию составляет 64 МБ, а в Cloudera Hadoop по умолчанию - 128 МБ.

Ответ 4

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

Ответ 5

В HDFS размер блока управляет уровнем декомпозиции репликации. Чем меньше размер блока, тем ваши блоки распределяются более равномерно по данным DataNodes. Чем выше размер блока, ваши данные потенциально менее равномерно распределены в вашем кластере.

Итак, какова точка, затем выбирая более высокий размер блока вместо некоторого низкого значения? Теоретически равное распределение данных - это хорошо, поскольку слишком низкий размер блока имеет некоторые существенные недостатки. Емкость NameNode ограничена, поэтому с блоком размером 4 КБ вместо 128 МБ также имеется 32768 раз больше информации для хранения. MapReduce также может получать прибыль от равномерно распределенных данных, запустив больше задач для карт на более NodeManager и больше ядер процессора, но на практике теоретические преимущества будут потеряны из-за невозможности выполнения последовательных буферизированных чтений и из-за латентности каждой задачи карты.

Ответ 6

Ниже приводится описание книги "Hadoop: The Definitive Guide", 3-е издание (p45).

Почему блок в HDFS настолько большой?

Блоки HDFS большие по сравнению с блоками дисков, и причина в том, что минимизировать затраты на поиск. Сделав блок достаточно большим, время для передачи данных с диска может быть значительно больше, чем время поиска начала блока. Таким образом, время передачи большой файл из нескольких блоков работает при передаче диска Скорость.

Быстрый расчет показывает, что если время поиска составляет около 10 мс и скорость передачи составляет 100 МБ/с, чтобы время поиска составляло 1% от время передачи, нам нужно сделать размер блока около 100 МБ. по умолчанию на самом деле 64 МБ, хотя многие установки HDFS используют 128 МБ блоки. Эта цифра будет по-прежнему пересматриваться вверх как передача скорости растут с новыми поколениями дисковых накопителей.

Однако этот аргумент не должен заходить слишком далеко. Задачи карты в MapReduce обычно работает с одним блоком за раз, поэтому, если вы тоже несколько задач (меньше узлов в кластере), ваши задания будут работать медленнее чем они могли бы в противном случае.

Ответ 7

В нормальном размере блока ОС 4K, а в hadoop - 64 Мб. Потому что для легкого обслуживания метаданных в Namenode.

Предположим, что у нас есть только 4k размера блока в hadoop, и мы пытаемся загрузить 100 МБ данных в этот 4k, тогда нам нужно все больше и больше блоков размером 4k. И namenode необходимо поддерживать все эти 4k блоков метаданных.

Если мы используем размер блока размером 64 Мб, тогда данные будут загружаться только в два блока (64 МБ и 36 МБ). Если размер метаданных увеличивается,

Вывод: Чтобы уменьшить нагрузку на namenode, hdfc предпочитает 64 МБ (по умолчанию) или 128 МБ размера блока

Ответ 8

Причина, по которой Hadoop выбрала 64 МБ, заключалась в том, что Google выбрал 64 МБ. Причина, по которой Google выбрала 64MB, объясняется аргументом Goldilocks.

Наличие меньшего размера блока приведет к увеличению накладных расходов на поиск.

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

Значительно больший размер блока начинает уменьшать доступный доступный доступный parallelism и может в конечном итоге затруднить планирование локальных задач для задач.

См. публикацию Google Research: MapReduce http://research.google.com/archive/mapreduce.html