juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2010-01-19 04:44 pm

задача с интервью

Есть огромный диск (ну типа gfs); там миллионы фолдеров, короче, большое дерево. Надо построить график, по оси X дата, по оси Y сколько файлов модифицировано в тот день.

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

[identity profile] smalgin.livejournal.com 2010-01-20 01:11 am (UTC)(link)
А где подвох? Распараллелить findfirst-findnext тупой дихотомией вроде бы тривиально, ну а дальше work stealing queue подберет остатки... где грабли-то?

[identity profile] ivan-gandhi.livejournal.com 2010-01-20 01:44 am (UTC)(link)
:) Да, можно и так. Мне в решении понравилось, что для wfs нужна queue, так вот эту queue и раздёргивать на threads.

[identity profile] smalgin.livejournal.com 2010-01-20 02:20 am (UTC)(link)
Про wfs я не знаю, а gfs has single master machine with in-memory metadata storage, никаких грабель не предвидится, разделяй и властвуй :)

[identity profile] ivan-gandhi.livejournal.com 2010-01-20 02:25 am (UTC)(link)
А, я не в курсе был.

wfs - это width first search

Я, кстати, не верю, что будет всё равно, читать ли директории с одной машины или с кучи машин.

[identity profile] kashnikov.livejournal.com 2010-01-20 08:35 pm (UTC)(link)
Кстати, wfs, довольно редко употребляется. Обычно всё-таки Breadth-First Search. Возможно, поэтому собеседник и был смущен названием ;-)

[identity profile] ivan-gandhi.livejournal.com 2010-01-20 09:31 pm (UTC)(link)
Да, BFS, конечно, правильнее.

[identity profile] softmaster.livejournal.com 2010-01-20 01:12 am (UTC)(link)
скорость чтения с диска быстрее, чем машины обрабатывают? если нет, лучше одной машиной последовательно читать, чем параллелить и вызывать лишний random seek.

я бы делал так:
главный процесс раздаёт фолдеры всем машинам из очереди (начальный стейт очереди "/" (root)) ,
на каждой машине клиентский процесс берет фолдер из раздатчика, траверсит, файлы добавляет в локальный мап date/number, фолдеры отдаёт распределяющему процессу.
как очередь кончится, все процессы отдают мапы главному для слияния по датам.
главный процесс может ранниться на одной машине с клиентским, остальные машины - только клиентский.

[identity profile] ivan-gandhi.livejournal.com 2010-01-20 01:45 am (UTC)(link)
Да, но только один процесс может закончить через секунду, а другой - через два дня.

[identity profile] softmaster.livejournal.com 2010-01-20 03:12 am (UTC)(link)
если бы был api для рандом доступа к списку файлов в фолдере, можно разделять на одинаковые куски(по тысяче файлов, например) и раздавать куски фолдера разным машинам.
обычный find first/find next только последовательный

[identity profile] hill-report.livejournal.com 2010-01-20 01:48 am (UTC)(link)
баян
если студент прослушал курс по параллельным системам, он сразу же ответит.

[identity profile] ivan-gandhi.livejournal.com 2010-01-20 02:26 am (UTC)(link)
Ну это, видимо, кое-где.

[identity profile] zamotivator.livejournal.com 2010-01-20 02:43 pm (UTC)(link)
Можно примеры хороших курсов по данной теме?

[identity profile] hill-report.livejournal.com 2010-01-20 02:46 pm (UTC)(link)
http://cs.unc.edu/~prins/Classes/633/

[identity profile] zamotivator.livejournal.com 2010-01-20 02:55 pm (UTC)(link)
Большое спасибо!

[identity profile] lev.livejournal.com 2010-01-20 02:06 am (UTC)(link)
а зачем несколько машин? узкое место диск

[identity profile] ivan-gandhi.livejournal.com 2010-01-20 02:07 am (UTC)(link)
Эх... ну хорошо, не диск. Файловая система.

[identity profile] lev.livejournal.com 2010-01-20 03:21 am (UTC)(link)
хмм
network drive с несколькими клиентами?
сканируем фолдер, если попался сабфолдер - выкладываем в общую очередь. файлы процессим. по исчерпанию - лезем в общую очередь за очередным фолдером.

[identity profile] ivan-gandhi.livejournal.com 2010-01-20 06:16 am (UTC)(link)
Ну! Правда, красиво! BFS с пулом обработчиков.

[identity profile] lev.livejournal.com 2010-01-20 07:40 am (UTC)(link)
softmaster, собственно, это и предложил

[identity profile] softmaster.livejournal.com 2010-01-20 07:46 pm (UTC)(link)
похоже, у меня получилось слишком многословно %)

[identity profile] itman.livejournal.com 2010-01-20 04:02 am (UTC)(link)
Кстати да. А разве у GFS директории уже не поделены между машинами?

Re: у GFS директории уже не поделены между машинами?

[personal profile] dememax 2010-01-20 03:36 pm (UTC)(link)
Папки, насколько я понимаю, у них - метаданные (http://labs.google.com/papers/gfs-sosp2003.pdf).

По следам GFS: Evolution on Fast-forward:

А метаданные живут под одним мастером на одной ячейке.
А мастер, как известно, загибается.
Зато есть мультиячейки.

[identity profile] dmzlj.livejournal.com 2010-01-20 04:29 am (UTC)(link)
map-reduce обычный? Только вопрос как диск устроен. Если это физически один диск, то одна история, если много дисков --- то несколько другая.
dememax: (скука)

Re: map-reduce обычный?

[personal profile] dememax 2010-01-20 02:53 pm (UTC)(link)
Нет, нет. Не стоит использовать патентованные технологии!
http://www.h-online.com/open/news/item/Google-patents-Map-Reduce-908602.html

Re: map-reduce обычный?

[identity profile] itman.livejournal.com 2010-01-20 03:38 pm (UTC)(link)
О, писец.... Как можно запатентовать то, что ты не изобрел :-((( Оказывается можно!
PS: хочется верить, что это действительно defensive.
Edited 2010-01-20 15:40 (UTC)

Re: Как можно запатентовать то, что ты не изобрел

[personal profile] dememax 2010-01-20 03:53 pm (UTC)(link)
Леонид, а что, собственно, вас удивляет?
История кишит такими примерами.
Кто успел, тот и съел!

Ну, дык, они заявляют, что они - белые и пушистые, что никому зла не желают, починяют примус...
А там, конечно, посмотрим, может это - своеобразная форма американского юмора.

Re: Как можно запатентовать то, что ты не изобрел

[identity profile] itman.livejournal.com 2010-01-20 03:59 pm (UTC)(link)
Да, Тесла был гениальным изобретателем, опередившим время, а Эдисон - хорошим предпринимателем. Именно поэтому он настолько засношал всем мозги с идей постоянного тока, что последний потребитель постоянного тока был отключен уже в нашем столетии! (21-ом если что) Ужас, какой ужас.

[identity profile] zamotivator.livejournal.com 2010-01-20 02:45 pm (UTC)(link)
*решения из комментов намеренно не читал, сам хочу понять*
Это задача на организацию эффективного storage, или задача "как эффективно посчитать количество меченных вершин в дереве"?
Кстати, а симлинки есть?

Re: Кстати, а симлинки есть?

[personal profile] dememax 2010-01-20 03:00 pm (UTC)(link)
The Google File System:

4.1 Namespace Management and Locking

...Unlike many traditional file systems, GFS does not have a per-directory data structure that lists all the files in that directory. Nor does it support aliases for the same file or directory (i.e, hard or symbolic links in Unix terms). GFS logically represents its namespace as a lookup table mapping full pathnames to metadata...

[identity profile] 109.livejournal.com 2010-01-31 11:33 am (UTC)(link)
ясен пень, очередь. но из предложенных гениальных решений непонятно, распределённая ли (тогда весь фокус в том, как её организовать), или все воркеры лезут на одну выделенную машину за следующим джобом (тогда не скалируется).