Инструменты для оптимизации масштабируемости приложения Hadoop? - PullRequest
2 голосов
/ 04 июля 2010

Я работаю с моей командой над небольшим приложением, которое принимает много входных данных (лог-файлов за день) и выдает полезный вывод после нескольких (сейчас 4, в будущем возможно 10) шагов уменьшения карты (Hadoop& Java).

Теперь я сделал частичную POC-версию этого приложения и запустил его на 4 старых рабочих столах (мой тестовый кластер Hadoop).Что я заметил, так это то, что если вы сделаете разбиение «неправильным», характеристики горизонтального масштабирования будут разрушены до неузнаваемости.Я обнаружил, что сравнение тестового прогона на одном узле (скажем, 20 минут) и на всех 4 узлах привело к ускорению на 50% (около 10 минут), где я ожидал ускорения на 75% (или, по крайней мере,> 70%) (около 5).или 6 минут).

Общий принцип горизонтального масштабирования карты - обеспечить максимально возможную независимость разделов.Я обнаружил, что в моем случае я делал разделение каждого шага «неправильно», потому что я просто использовал разделитель Hash по умолчанию;это заставляет записи переходить к другому разделу на следующем шаге уменьшения карты.

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

В описанном выше случае я нашел это решение вручную.Я понял, что пошло не так, подумав об этом, когда я работал в машине.

Теперь мой вопрос ко всем вам: - Какие инструменты доступны для обнаружения подобных проблем?- Есть ли какие-либо руководящие принципы / контрольные списки для подражания?- Как мне измерить такие вещи, как «количество записей, которые перешли раздел»?

Любые предложения (инструменты, учебные пособия, книги, ...) очень ценятся.

Ответы [ 2 ]

0 голосов
/ 05 августа 2010

Взгляните на плагин Karmashpere (ранее известный как hadoop studio) для Netbeans / Eclipse: http://karmasphere.com/Download/download.html. Есть бесплатная версия, которая может помочь в обнаружении и тестовом выполнении заданий hadoop. Я немного проверил, и это выглядит многообещающе.

0 голосов
/ 08 июля 2010

Убедитесь, что вы не столкнулись с проблемой небольших файлов. Hadoop оптимизирован для сквозной обработки, а не для задержки, поэтому он будет обрабатывать многие файлы журнала, объединенные в один большой файл последовательности, гораздо быстрее, чем многие отдельные файлы, хранящиеся в hdf. Таким образом, использование файлов последовательностей исключает дополнительное время, необходимое для ведения учета на отдельной карте, сокращает количество задач и улучшает локальность данных. Но да, важно, чтобы выходные данные вашей карты были достаточно хорошо распределены между редукторами, чтобы гарантировать, что несколько редукторов не будут перегружены непропорциональным объемом работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...