Могут ли задачи Hadoop выполняться параллельно на одном узле

Я новичок в Hadoop, и у меня есть следующие вопросы по этому поводу.

Это то, что я понял в хаупе.

1) Когда какой-либо файл записывается в Hadoop, он сохраняется во всех узлах данных фрагментами (по умолчанию 64 МБ).

2) Когда мы запустим задание MR, из этого блока будет создано разделение, и на каждом узле данных будет обработано разделение.

3) Из каждого считывателя разделенных записей будет использоваться для создания пары ключ/значение на стороне преобразователя.

Вопросы :

1) Может ли один узел данных обрабатывать более одного разделения одновременно? Что делать, если емкость узла данных больше?

Я думаю, что это было ограничением в MR1, а в MR2 YARN мы лучше используем ресурсы.

2) Будет ли разбиение считываться последовательно на узле данных или его можно обрабатывать параллельно для создания пары ключ/значение? [Путем случайного доступа к местоположению диска в разделении узла данных]

3) Что такое терминология слота в архитектуре map/reduce? Я читал один из блогов, и в нем говорится, что YARN обеспечит лучшее использование слотов в Datanode.


person user1927808    schedule 03.03.2014    source источник


Ответы (1)


Позвольте мне сначала обратиться к части what I have understood in hadoop.

  1. Файл, хранящийся в файловой системе Hadoop, НЕ хранится на всех узлах данных. Да, он разбит на чанки (по умолчанию 64 МБ), но количество DataNodes, на которых хранятся эти чанки, зависит от a.File Size b.Current Load on Data Nodes c.Replication Factor и d.Physical Proximity. NameNode учитывает эти факторы при принятии решения о том, какие узлы данных будут хранить фрагменты файла.

  2. Опять же, каждый узел данных НЕ МОЖЕТ обрабатывать разделение. Во-первых, DataNodes отвечают только за управление хранением данных, а не за выполнение заданий/задач. TaskTracker — это подчиненный узел, отвечающий за выполнение задач на отдельных узлах. Во-вторых, только те узлы, которые содержат данные, необходимые для этого конкретного задания, будут обрабатывать разбиения, если только нагрузка на эти узлы не слишком высока, и в этом случае данные в разбиении копируются на другой узел и обрабатываются там.

Теперь переходя к вопросам,

  1. Опять же, узлы данных не несут ответственности за обработку заданий/задач. Обычно мы называем комбинацию dataNode + taskTracker узлом, поскольку они обычно находятся на одном узле, выполняя разные обязанности (хранение данных и выполнение задач). Данный узел может обрабатывать более одного разделения одновременно. Обычно одно разделение назначается одной задаче карты. Это означает, что несколько задач карты выполняются на одном узле, что возможно.

  2. Данные из входного файла считываются последовательно.

  3. Производительность узла определяется количеством Slots. Если узел имеет 10 слотов, это означает, что он может обрабатывать 10 задач параллельно (эти задачи могут быть задачами Map/Reduce). Администратор кластера обычно настраивает количество слотов на каждый узел с учетом физической конфигурации этого узла, такой как память, физическое хранилище, количество ядер процессора и т. д.

person Chaos    schedule 03.03.2014