среда, Декабрь 21, 2011

Зачем нужен Экономайзер?

В то время когда на рынке имеется например Yandex.Market?
Ответ простой, рыночная среда она похожа на океан, в котором есть крупные особи, мелкие и планктон. Место есть для всех настойчивых и стремящихся выжить.

После даже не длительного изучения проблем процесса fuzzy matching по базе данных товаров, я стал с уважением относиться к любым командам создающим подобные проекты. Безусловно, лидирующей командой можно назвать команду Яндекс.Маркета. Когда примерно представляешь какие алгоритмы скрываются "под капотом" и в "движках" больших братьев (намеренно буду избегать термин "Конкурент", поскольку он уводит мысль в другую ипостась, не конструктивного плана), то по-хорошему завидуешь их R&D возможностям, и интеллектуальным ресурсам.

Тем не менее, я считаю, что на рынке есть возможность для появления нового игрока, пусть другого, более мелкого масштаба, с другой бизнес - моделью, и имеющего не нулевые шансы на выживание. Как вы наверное догадались, я говорю про Экономайзер.

Также не исключаю появление нового движка реализующего unsupervised подход к этой проблематике, что можно сравнить с полуручным наполнением каталогов в Yahoo, на тот момент когда пришел Google.

Считаю, что на рынке может быть несколько проектов аналогов Маркету, принадлежащих крупным холдингам, таким образом они могут стать стратегическими инвесторами в "Экономайзер".

Первая и главная цель создания Экономайзера, появление unsupervised движка к проблематике сравнения товаров. Возможно это будет open - source решение, а возможно в виде SaaS сервиса.

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

Как раз над этим я сейчас и работаю. Если вы хотите помочь мне, напишите мне.
Разморозка. Проект Экономайзер

Рад сообщить, что на регулярной основе буду писать в блог о своем проекте - Экономайзер.
Получится настоящий in da start up сериал, оправдывающий название блога.

Несмотря на то, что для всех слово стартап с момента начала его активного использования с 2000-х годов, изрядно набило оскомину, и хотя я лично называю Экономайзер просто "проект"; придется придерживаться жанра и называть его стартапом, которым он безусловно скоро станет.

Спустя год с момента появления бета-версии economaizer.com - я решил разморозить проект и уже два месяца активно веду R&D по данному направлению.

Считаю, что для ускорения работы над ним мне потребуется помощь деятельных людей, поэтому если вы владеете java, ruby, python и желаете на практике применять такие инструменты как Apache Hadoop, Apache Mahaout прошу вас связаться со мною. Компенсации, работа в офисе в центре Москвы и прочее, включая макбук обговариваются :)

Контакты для связи: invisible.trust@gmail.com с пометкой economaizer


пятница, Декабрь 02, 2011

Проблема при работе с hadoop при запуске задачи.

Настраивая по этому руководству hadoop http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/ на действующих серверах, я обратил внимание что скорость выполнения задач не возросла, а появились ошибки.

Если вы видите примерно следующее сообщение в вашем логе:
11/12/02 14:22:10 WARN mapreduce.Job: Error reading task outputhttp://localhost:50060/tasklog?plaintext=true&attemptid=attempt_201112021419_0001_m_000003_1&filter=stdout
11/12/02 14:22:10 WARN mapreduce.Job: Error reading task outputhttp://localhost:50060/tasklog?plaintext=true&attemptid=attempt_201112021419_0001_m_000003_1&filter=stderr
11/12/02 14:22:27 INFO mapreduce.Job: map 100% reduce 22%
11/12/02 14:22:41 INFO mapreduce.Job: Task Id : attempt_201112021419_0001_m_000002_0, Status : FAILED

То это означает, что hadoop не может получить результаты от одной из машин (или если их много - то от нескольких).
К примеру, в моем случае, это был сам master, который я также использовал для map-reduce задач.

Подобная проблема в моем случае решилась установкой имени хоста в значение "master" в файле /etc/hosts

В начале, останавливаем кластер /usr/local/hadoop/bin/stop-all.sh (если вы стартовали вручную, то сами знаете как остановить ;)

Делаем:
sudo nano /etc/hostname

Пишем туда:
master

Затем:
sudo /etc/init.d/hostname.sh

(в некоторых случаях требуется, sudo /etc/init.d/hostname restart, по моему на одном Debian такое было)

Выходим/входим под юзером hduser. Заново стартуем кластер. Вуаля:
11/12/02 14:30:16 INFO mapreduce.Job: Running job: job_201112021429_0001
11/12/02 14:30:17 INFO mapreduce.Job: map 0% reduce 0%
11/12/02 14:30:29 INFO mapreduce.Job: map 33% reduce 0%
11/12/02 14:30:39 INFO mapreduce.Job: map 33% reduce 11%
11/12/02 14:30:42 INFO mapreduce.Job: map 66% reduce 11%
11/12/02 14:30:48 INFO mapreduce.Job: map 100% reduce 22%
11/12/02 14:30:54 INFO mapreduce.Job: map 100% reduce 100%
11/12/02 14:30:56 INFO mapreduce.Job: Job complete: job_201112021429_0001
11/12/02 14:30:56 INFO mapreduce.Job: Counters: 33

Это мои показатели для примера из настройки на кластере из двух машин.

UPDATE
Как подсказал мне Сергей Ярославцев, проблема может скрываться и в других местах, для этого лучше смотреть log hadoop

1) Если большое кол-во файлов на разделе, а hadoop работает под отдельным пользователем и группой, то просто может не хватать прав форкать tmp файлы
2) Можно поиграться с размерами файлов и параметров


mapred.task.timeout
1800000


Всегда можно глянуть сюда:
cat /var/log/hadoop/userlogs/attempt___ | less

пример:
"This conf/slaves file lists the hosts, one per line"

Дело в том, что на файловой системе не для пользователя root и вообще есть системные ограничения, накладываемые архитектурой FS. Например (боюсь ошибиться, не вспомню навскидку). Но... 65536 файлов в директории
Например, в ext3 выделяется 655360 inodes на раздел и когда они кончаются, записать ничего нельзя.
Есть еще понятие тюнинга JVM
При больших обьемах лучше монтировать отдельный раздел с параметрами noatime, nodiratime
(noatime и nodiratime – отключение записи времени последнего доступа (для файлов/директорий))

Полезная ссылка по тюнингу http://software.intel.com/en-us/articles/hadoop-and-hbase-optimization-for-read-intensive-search-applications/