Я исследовал распределенные базы данных и файловые системы, и хотя изначально меня больше интересовал Hadoop / HBase, потому что я программист на Java, я нашел этот очень интересный документ о Ceph, что является большим плюсом, теперь интегрирован в ядро Linux.
Ceph как масштабируемая альтернатива HDFS
Я кое-что не понял и надеюсь, что кто-нибудь из вас сможет мне это объяснить. Вот:
Простая хеш-функция отображает идентификатор объекта (OID) на группу размещения, группу OSD, в которой хранится объект и все его реплики. Существует ограниченное количество групп размещения для создания верхней границы количества OSD, в которых хранятся реплики объектов, хранящихся в любом заданном OSD. Чем выше это число, тем выше вероятность того, что отказ нескольких узлов приведет к потере данных. Если, например, каждое OSD имеет отношения реплик с каждым другим OSD, отказ всего трех узлов во всем кластере может уничтожить данные, которые хранятся на всех трех репликах.
Вы можете объяснить мне, почему большее количество групп размещения увеличивается вероятность потери данных? Я бы подумал, что все наоборот.
В настоящее время я исследую ceph как альтернативу нашему хранилищу данных. Я нашел ваш вопрос, немного прочитал и надеюсь, что эта идея имеет смысл. То, как они делают динамическое распределение данных, предполагает, что если у вас большое количество OSD (значительно больше, чем уровень репликации). Тогда кажется, что было бы возможно (и вероятно), что алгоритм распределения поместит некоторые части файлов на огромное количество OSD, так что если вы потеряете N узлов (где N больше, чем ваш уровень репликации), весьма вероятно, что вы приведет к потере ваших данных (или, по крайней мере, к значительному повреждению). Что не удивительно. Я ожидал бы потери данных, если бы вы потеряли 3 узла в своем кластере (как их пример), если ваш уровень репликации не был 4 или выше.