Что за JBOD в хадупе? а КОРОВА с хадупом?

Впервые в hadoop, установите кластер серверов Debian 3 только для практики.

Я изучал передовые методы работы с hadoop и наткнулся на: JBOD без файловой системы RAID: ext3, ext4, xfs - ничего из того причудливого материала COW, который вы видите с zfs и btrfs

Итак, я задаю эти вопросы ...


Везде, где я читал, JBOD лучше, чем RAID в hadoop, и что лучшими файловыми системами являются xfs, ext3 и ext4. Помимо файловой системы, которая имеет смысл, почему они лучшие ... как вы реализуете этот JBOD? Вы увидите мое замешательство, если выполните поиск в Google самостоятельно, JBOD намекает на линейный придаток или комбинацию всего лишь нескольких дисков, вроде как логический том, по крайней мере, так некоторые люди объясняют это, но, похоже, hasoop хочет Несовместимый JBOD. Ни одно тело не расширяет это ...

  • Вопрос 1) Что все в мире Hadoop подразумевают под JBOD и как вы это реализуете?
  • Вопрос 2) Все ли так просто, как монтировать каждый диск в отдельный каталог?
  • Вопрос 3) Означает ли это, что hadoop лучше всего работает на JBOD, где каждый диск просто монтируется в другой каталог?
  • Вопрос 4) И тогда вы просто указываете hadoop на эти data.dirs?

  • Вопрос 5) Я вижу, что JBODS идет двумя путями: либо каждый диск идет на отдельное монтирование, либо линейное объединение дисков, что может быть выполнено в mdadm --linear mode, или lvm, я уверен, может это сделать, поэтому я не вижу большого разобраться с этим ... И если это так, где mdadm --linear или lvm могут использоваться, потому что люди JBOD ссылаются на это объединение дисков, то это лучший способ "JBOD" или линейно объединить диски для хадуп?


Это не по теме, но может ли кто-нибудь проверить, правильно ли это? Файловые системы, которые используют cow, копирование при записи, такие как zfs и btrfs, просто замедляют работу hadoop, но не только то, что реализация cow является пустой тратой с hadoop.

  • Вопрос 6) Почему COW и такие вещи, как RAID, являются пустой тратой на hadoop? Я вижу это так, как будто ваша система дает сбой, и вы используете право if, чтобы восстановить ее, к тому времени, когда вы восстановите свою систему, в hdfs было так много изменений, что, вероятно, эта машина будет просто считаться неисправной, и было бы лучше воссоедините его с нуля (представьте его как новый новый датанод) ... Или как система hadoop увидит старый датанод? Я предполагаю, что он не будет думать, что это старый или новый или даже датанод, он просто будет рассматривать его как мусор ... Идк ...

  • Вопрос 7) Что произойдет, если Hadoop обнаружит, что узел данных упал с кластера, а затем узел данных снова подключится к сети с данными, которые немного старше? Есть ли степень, до какого возраста должны быть данные ??? как вообще эта тема?


ОТВЕТЫ НА ВОПРОСЫ 1 - 4

  • Я только что понял, что мой вопрос настолько прост, но мне так сложно его объяснить, что мне пришлось разделить его на 4 вопроса, и я все еще не получил ответа, который ищу, от того, что звучит как очень умные люди , поэтому я должен спросить иначе ..

  • На бумаге я мог бы легко или с рисунком ... Попробую еще раз словами ..

  • Если запутались в том, что я задаю в вопросе JBOD ...

  • ** просто интересно, о каком JBOD все говорят в мире hadoop **

  • JBOD определяются по-другому с помощью hadoop, чем в обычном мире, и я хочу знать, как лучший способ реализовать hadoop - это объединить jbods (sda + sdb + sdc + sdd) или просто оставить диски в покое (sda, sdb, sdc , SDD)

  • Я думаю, что приведенное ниже графическое представление лучше всего объясняет, о чем я прошу

(СПОСОБ JBOD 1)

  • нормальный мир: jbod - это объединение дисков - тогда, если бы вы использовали hadoop, вы бы наложили data.dir (где виртуальные сайты hdfs) на каталог внутри этого объединения дисков, ТАКЖЕ все диски будут отображаться как 1 .. . Итак, если бы у вас были sda, sdb и sdc в качестве дисков данных на вашем узле, вы бы сделали их как некоторый entity1 (либо с оборудованием материнской платы, либо mdadm или lvm), который является линейным объединением sda, sdb и sdc . затем вы монтируете этот объект1 в папку в пространстве имен Unix, например / mnt / jbod /, а затем настраиваете hadoop для работы в нем.

  • ОБЗОР ТЕКСТА: если каждый диск 1, диск 2 и диск 3 имели размер 100 ГБ, 200 ГБ и 300 ГБ соответственно, то этот jbod был бы большим, а hadoop от этого узла увеличился бы на 600 ГБ.

* TEXTO-GRAPHICAL OF LINEAR CONCAT OF DISKS BEING A JBOD: * disk1 2 and 3 used for datanode for hadoop * disk1 is sda 100gb * disk2 is sdb 200gb * disk3 is sdc 300gb * sda + sdb + sdc = jbod of name entity1 * JBOD MADE ANYWAY - WHO CARES - THATS NOT MY QUESTION: maybe we made the jbod of entity1 with lvm, or mdadm using linear concat, or hardware jbod drivers which combine disks and show them to the operating system as entity1, it doesn't matter, either way its still a jbod * This is the type of JBOD I am used to and I keep coming across when I google search JBOD * cat /proc/partitions would show sda,sdb,sdc and entity1 OR if we used hardware jbod maybe sda and sdb and sdc would not show and only entity1 would show, again who cares how it shows * mount entity1 to /mnt/entity1 * running "df" would show that entity1 is 100+200+300=600gb big * we then setup hadoop to run its datanodes on /mnt/entity1 so that datadir property points at /mnt/entity1 and the cluster just gained 600gb of capacity

... другая точка зрения ...

(СПОСОБ JBOD 2)

  • в hadoop мне кажется, что они хотят, чтобы каждый диск был отделен. Поэтому я бы смонтировал диск sda, sdb и sdc в пространстве имен unix в / mnt / a и / mnt / b и / mnt / c ... кажется, из чтения в Интернете многие эксперты hadoop классифицируют jbods как просто связка дисков, чтобы в unix они выглядели как диски, а не как объединение дисков ... и тогда, конечно, я могу объединить их, чтобы стать одним объектом либо с диспетчером логических томов (lvm), либо с mdadm (рейдовым или линейным способом, linear предпочтительнее для jbod) ...... но ...... не давайте не объединять их, потому что в мире хадупов кажется, что jbod - это просто группа дисков, сидящих отдельно друг от друга ...

  • если каждый диск 1 и disk2 и диск 3 были размером 100 ГБ, 200 ГБ и 300 ГБ соответственно, то каждый монтируемый disk1 -> / mnt / a и disk2 -> / mnt / b и disk3 -> / mnt / c будет каждый размером 100 ГБ и 200 ГБ и 300 ГБ соответственно, а емкость hadoop от этого узла увеличится на 600 ГБ.

TEXTO-GRAPHICAL OF LINEAR CONCAT OF DISKS BEING A JBOD * disk1 2 and 3 used for datanode for hadoop * disk1 is sda 100gb * disk2 is sdb 200gb * disk3 is sdc 300gb * WE DO NOT COMBINE THEM TO APPEAR AS ONE * sda mounted to /mnt/a * sdb mounted to /mnt/b * sdc mounted to /mnt/c * running a "df" would show that sda and sdb and sdc have the following sizes: 100,200,300 gb respectively * we then setup hadoop via its config files to lay its hdfs on this node on the following "datadirs": /mnt/a and /mnt/b and /mnt/c.. gaining 100gb to the cluster from a, 200gb from b and 300gb from c... for a total gain of 600gb from this node... nobody using the cluster would tell the difference..

РЕЗЮМЕ ВОПРОСА

** Какой метод все ссылаются на ЛУЧШУЮ ПРАКТИКУ для hadoop - это комбинация jbod или разделение дисков - который, согласно онлайн-документации, по-прежнему является jbod? **

  • Оба случая получат hadoop 600 ГБ ... это всего лишь 1. выглядит как concat или один объект, который представляет собой комбинацию всех дисков, что я всегда считал jbod ... Или это будет как 2, где каждый диск в системе монтируется в другой каталог, конечный результат одинаков для емкости hadoop ... просто интересно, лучший ли это способ для производительности

person user2580961    schedule 17.07.2013    source источник


Ответы (2)


Я могу попытаться ответить на несколько вопросов - скажите мне, где вы не согласны.

1.JBOD: просто связка дисков; массив дисков, каждый из которых доступен напрямую как независимый диск. С Полное руководство Hadoop, тема Почему бы не использовать RAID?, говорит, что производительность чтения и записи RAID ограничена самым медленным диском в массиве. Кроме того, в случае HDFS репликация данных происходит на разных машинах, находящихся в разных стойках. Это предотвращает потенциальную потерю данных даже в случае отказа стойки. Итак, в RAID нет необходимости. Namenode может использовать RAID, как указано в ссылке.

2. Да Это означает, что независимые диски (JBOD) установлены на каждой из машин (например, / disk1, / disk2, / disk3 и т. д.), но не разбиты на разделы.

3, 4 и 5 Прочтите приложение

6 и 7. Перейдите по этой ссылке, чтобы узнать, как репликация блоков происходит

Дополнение после комментария:

Q1. На какой метод все ссылаются - ЛУЧШАЯ ПРАКТИКА для hadoop - это комбинация jbod или разделение дисков, которое, согласно онлайн-документации, также является jbod?

Возможный ответ: Из окончательного руководства Hadoop -

Вы также должны установить свойство dfs.data.dir, которое определяет список каталогов для узла данных для хранения его блоков. В отличие от узла имен, который использует несколько каталогов для избыточности, узел данных циклически записывает между своими каталогами хранения, поэтому для производительности вы должны указать каталог хранения для каждого локального диска. Производительность чтения также выигрывает от наличия нескольких дисков для хранения, поскольку блоки будут распределены по ним, а одновременные чтения для отдельных блоков будут соответственно распределены по дискам.

Для максимальной производительности вы должны монтировать диски хранения с опцией noatime. Этот параметр означает, что информация о времени последнего доступа не записывается при чтении файла, что дает значительный прирост производительности.

Q2. Почему LVM - плохая идея?

Избегайте RAID и LVM на машинах TaskTracker и DataNode - это обычно снижает производительность.

Это связано с тем, что LVM создает логический слой над отдельными подключенными дисками на машине.

Проверьте эту ссылку на СОВЕТ 1 подробнее. Есть случаи, когда использование LVM выполняется медленно при выполнении заданий Hadoop.

person SSaikia_JtheRocker    schedule 17.07.2013
comment
да, вопросы с 1 по 4 были неправильно поняты, я отредактировал свои вопросы выше, чтобы включить новый раздел, который пытается его повторно задать - person user2580961; 18.07.2013
comment
Я немного расширил свой ответ. Я надеюсь, что это помогает! - person SSaikia_JtheRocker; 19.07.2013
comment
@ user2580961: С тех пор я не сэр, я не эксперт и все еще учусь. Вы можете принять ответ, если он вам помог и если вы считаете его вполне уместным. Благодарить. - person SSaikia_JtheRocker; 31.07.2013

Я опаздываю на вечеринку, но, может быть, я могу вмешаться:

JBOD

Вопрос 1) Что все в мире Hadoop подразумевают под JBOD и как вы это реализуете?

Просто связка дисков ... вы просто форматируете весь диск и включаете его в «hdfs-site.xmlandmapred-site.xmloryarn-site-xml» на узлах данных. Hadoop заботится о распределении блоков по дискам.

Вопрос 2) Это так просто, как монтировать каждый диск в отдельный каталог?

да.

Вопрос 3) Означает ли это, что hadoop лучше всего работает на JBOD, где каждый диск просто монтируется в другой каталог?

да. Hadoop вычисляет контрольные суммы данных и периодически проверяет эти контрольные суммы.

Вопрос 4) И тогда вы просто указываете hadoop на эти data.dirs?

Точно. Но есть каталоги для хранения данных (HDFS) и вычислений (MapReduce, YARN, ..), вы можете настроить разные каталоги и диски для определенных задач.

Вопрос 5) Я вижу, что JBODS идет двумя путями: либо каждый диск идет на отдельное монтирование, либо линейное объединение дисков, что может быть выполнено в mdadm --linear mode, или lvm, я уверен, может это сделать, поэтому я не вижу большое дело с этим ... И если это так, где mdadm --linear или lvm могут использоваться, потому что люди JBOD ссылаются на это объединение дисков, то это лучший способ "JBOD" или линейно объединить диски для хадупа?

Проблема в неисправных дисках. Если вы сохраните простоту и будете монтировать каждый диск за раз, вам просто нужно будет заменить этот диск. Если вы используете mdadm или LVM в конфигурации ja JBOD, у вас есть склонность к потере большего количества данных в случае отказа диска, поскольку конфигурация с чередованием или объединением может не выдержать отказа диска. Поскольку данные для большего количества блоков распределяются по нескольким дискам.

Вопрос 6) Почему COW и такие вещи, как RAID, являются пустой тратой на hadoop? Я вижу это так, как будто ваша система дает сбой, и вы используете право if, чтобы восстановить ее, к тому времени, когда вы восстановите свою систему, в hdfs было так много изменений, что, вероятно, эта машина будет просто считаться неисправной, и было бы лучше воссоедините его с нуля (представьте его как новый новый датанод) ... Или как система hadoop увидит старый датанод? Я предполагаю, что он не будет думать, что это старый или новый или даже датанод, он просто будет рассматривать его как мусор ... Идк ...

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

Поэтому теоретически нет смысла использовать RAID или COW для дисков Hadoop.

Это может иметь смысл, если вам приходится иметь дело с неисправными дисками, которые нельзя заменить мгновенно.

Вопрос 7) Что произойдет, если Hadoop обнаружит, что узел данных упал с кластера, а затем узел данных снова подключится к сети с данными, которые немного старше? Есть ли степень, до какого возраста должны быть данные ??? как вообще эта тема?

NameNode имеет список блоков и их расположение на узлах данных. У каждого блока есть контрольная сумма и расположение. Если узел данных выходит из строя в кластере, узел имен реплицирует блоки этого узла данных на другие узлы данных.

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

Возраст данных не важен, это касается только блоков. Если NameNode по-прежнему поддерживает блоки, а датанод имеет их, они будут использоваться снова.

ZFS / btrfs / COW

Теоретически дополнительные функции, которые предоставляют эти файловые системы, не требуются для Hadoop. Однако, поскольку вы обычно используете дешевые и огромные настольные диски 4 ТБ + для узлов данных, вы можете столкнуться с проблемами, если эти диски начнут выходить из строя.

ext4 перемонтирует себя только для чтения в случае сбоя, и на этом этапе вы увидите, что диск выпадает из HDFS на узле данных, на котором он настроен для потери дисков, или вы увидите, что узел данных умирает, если сбои диска недопустимы. Это может быть проблемой, потому что на современных дисках часто обнаруживаются некоторые поврежденные секторы, хотя они по-прежнему работают нормально, а проверка этих дисков и перезапуск датанода требует больших усилий.

Другая проблема - это вычисления с помощью YARN / MapReduce ... они также записывают промежуточные данные на диски, и если эти данные будут повреждены или не могут быть записаны, вы столкнетесь с ошибками. Я не уверен, что YARN / MapReduce также проверяет контрольную сумму своих временных файлов - я думаю, что это реализовано через.

ZFS и btrfs обеспечивают некоторую устойчивость к этим ошибкам на современных дисках, поскольку они могут лучше справляться с поврежденными метаданными и избегать длительных fsck проверок из-за внутреннего подсчета контрольных сумм.

Я использую кластер Hadoop на ZFS (просто JBOD с LZ4) с большим количеством дисков, на которых видны некоторые битые секторы и на которые не распространяется гарантия, но которые все еще работают хорошо, и он отлично работает, несмотря на эти ошибки.

Если вы можете заменить неисправные диски мгновенно, это не имеет большого значения. Если вам нужно жить с частично сломанными дисками, ZFS / btrfs купит вам некоторое время перед заменой дисков.

COW не требуется, потому что Hadoop заботится о репликации и безопасности. Сжатие может быть полезно, если вы храните данные в кластере без сжатия. LZ4 в ZFS не должен снижать производительность и может ускорить последовательное чтение (как это делают HDFS и MapReduce).

Представление

Аргументом против RAID является то, что по крайней мере MapReduce реализует нечто похожее. HDFS может читать и писать одновременно на все диски, и обычно выполняется несколько заданий map и reduce, которые могут использовать весь диск для записи и чтения своих данных.

Если вы разместите RAID или чередование ниже Hadoop, этим заданиям придется ставить в очередь чтение и запись на один контроллер RAID, и в целом это, вероятно, будет медленнее.

В зависимости от ваших задач может иметь смысл использовать что-то вроде RAID-0 для пар дисков, но сначала убедитесь, что последовательное чтение или запись действительно является узким местом для вашей работы (а не сеть, репликация HDFS, ЦП и т. Д. ), но сначала убедитесь, что то, что вы делаете, стоит усилий и хлопот.

person kei1aeh5quahQu4U    schedule 21.12.2014