Я бегло просмотрел hadoop'овский HDFS. Накидал небольшое сравнение его с MogileFS, которое мне так и так нужно было по проекту. М.б. будет полезно тем, кто знает один из этих проектов, и хотел бы потрогать второй.
* Обе системы используют один главный сервер метаданных (HDFS' NameNode = MFS' Tracker + Database), и N серверов данных (HDFS' DataNode = MFS' Storage Node).
* MogileFS использует MySQL в качестве хранилища метаданных о хранимых в FS файлах, HDFS - flat файлы и оперативку для оперативности.
* В обоих случаях крайне желательно позаботиться о том, чтобы главный сервер был весь из себя reilable, highly available и failover. Для HDFS есть несколько практик: Во-первых файлы с метаданными можно реплицировать на несколько физических девайсов в рамках сервера. Если есть запасной главный сервер, то на него можно реплицировать метаданные с помощью NFS или DRBD. В MogileFS это все делается типичными для MySQL-сервера практиками (Сам Tracker вроде данные у себя не держит, так что и в репликации не нуждается. Ему только нужно уметь свапаться при падении).
* HDFS сделан на Java. MogileFS - на Perl.
* HDFS исползует иерархическую огранизацию файлов. MofileFS - проскую key -> file.
* HDFS работает с блоками файлов по 64 мегабайта, MogileFS - с файлами целиком. Так что для хранения больших файлов HDFS предпочтительней.
* В HDFS есть подвижки в сторону уменьшения нагрузки на сеть - например, при репликации блоков файлов в первую очередь для репликации выбираются DataNode-ы в той же серверной стойке.
* В слечае, когда файл вдруг оказался чересчур реплицированным, то в MogileFS лишние копии не убиваются. HDFS за этим следит лучше.
* HDFS, как часть проекта Hadoop, больше подходит для произведения работы над большими объемами данными, когда не данные доставляются к вычислительному блоку, а наоборот, задача "приносится" поближе к данным, по принципу MapReduce.