О проблеме локализации и управлении чанками в Hadoop

Я работаю над своим выпускным проектом, тема, которую мы пытаемся достичь, — поиск изображений в Hadoop. Мы используем библиотеку OpenCV для обработки изображений. Пока у нас есть работающий прототип, но эффективность не соответствует нашим ожиданиям.

Теперь мы хотим убедиться, что наше задание карты правильно назначено подчиненному узлу, на котором расположены данные (т. е. мы хотим, чтобы задание, назначенное этому узлу, обрабатывало только фрагменты на конкретном узле). И в моем понимании это означает, что мне нужно знать местонахождение каждого фрагмента моих данных и некоторую другую информацию о фрагменте (например, какой фрагмент назначен какому подчиненному узлу ... и т. д.). Я нашел некоторую информацию об интерфейсе администрирования Http (тот, который использует порт 50030 от по умолчанию) Но этого недостаточно, и сбор нужной мне информации занимает много времени. Итак, есть ли способ увидеть такую ​​информацию? Любые файлы журналов или API?

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

Короче говоря,

  1. Могу ли я получить какую-либо информацию об уровне блоков через журналы/API от Hadoop? Например, количество чанков, расположение этих чанков и т. д., информации о Http-интерфейсе для jobtracker недостаточно.
  2. Есть ли способ помешать назначению заданий, назначению фрагментов и тому, как Hadoop разделяет входные данные?

Заранее спасибо.


person user2535650    schedule 13.08.2013    source источник
comment
Что вы имеете в виду под кусками?   -  person Mike Park    schedule 13.08.2013
comment
Hadoop будет разделять данные, которые вы храните на нем, на части и размещать их на разных подчиненных узлах, они называются фрагментами в оригинальной статье о файловой системе Google.   -  person user2535650    schedule 14.08.2013
comment
Попался, в мире Hadoop они называются блоками. Хотел убедиться, что я был прав на ваших условиях, прежде чем ответить   -  person Mike Park    schedule 14.08.2013


Ответы (1)


  1. Вы можете получить информацию о блоке/фрагменте через код или через командную строку. См. Как проверить распределенные данные через hdfs для информации командной строки.

  2. Да, наверное. Вы можете переопределить InputSplit/RecordReader, чтобы изменить способ разделения входных данных, но вы не сможете легко сделать именно то, что хотите.

person Mike Park    schedule 14.08.2013
comment
Извините, за такую ​​задержку. Спасибо, ваша ссылка решила часть наших проблем здесь. - person user2535650; 23.08.2013