140630 Facebook Emotions 1749 4f881e85b96bea3a796ae8d7e0ab44c4

Архитектура систем хранения данных в Facebook

Месяц тому мы писали о принципах кэширования, которые используются в Facebook. Теперь стоит поговорить о том, как организована структура хранения и обмена данных в дата-центрах социальной сети. В настоящий момент объемы данных, хранимых в этих дата-центрах, составляют более 300 петабайт. Само собой, вся информация должна быть доступной в любой момент. Как же это организовано?

В компании работой с данными занимается большая команда. Это и не удивительно, если учесть, сколько же информации проходит через дата-центры Facebook каждый день. Различные специалисты посORCFileтоянно работают над созданием новых систем хранения и обработки данных. После создания такой системы ее вначале испытывают в полевых условиях, а затем либо внедряют, либо дорабатывают, или же убирают, если что-то пошло не так.

При этом в аппаратной части, на элементарном уровне, все обычно — используются стандартные RAID-массивы и дисковые системы хранения данных. А вот за счет оригинальных систем работы с данными такие массивы могут быть масштабированы в любое время, для любых нагрузок. Кроме того, используется платформа Hadoop для того, чтобы упростить процессы репликации и синхронизации в ДЦ компании.

Центром всей системы можно назвать основную надстройку Hive, где используется система индексов. Кроме того, для работы с Hive используется специально созданный язык HiveQL. Следовательно, в СУБД при необходимости значительно ускоряется выполнение так называемых семантических проверок, при выполнении ряда запросов.

Для ускорения используется предварительное сжатие запросов, с эвристической выборкой настроек и алгоритма компрессии, для каждого блока данных. Система же обработки запросов получила название Map-Reduce, Corona. Эта система используется исключительно для работы с большими и очень большими таблицами.

В общем порядке используется организация данных как двумерных таблиц, где анализ проводится построчно. Кроме того, в Hive работает комплексный многоколонный формат записей, называемый RCFile. Такой формат специально адаптирован под хранение реляционных таблиц на отдельных кластерах файловой системы.

Данные в RCFile размещаются структурно, и структура хранения данных представляет собой определенное сочетание различных элементов, включачя формат хранения данных, подход к сжатию данных и методы оптимизации чтения данных. Все это позволяет обеспечить несколько преимуществ, которые являются ключевыми: это быстрая загрузка данных, высокая скорость обработки запросов и очень эффективное использование свободного дискового объема, с одновременной адаптивностью динамических шаблонов, которые используются для доступа к нужному массиву информации.

Как следствие, преобразование данных из таблицы производится вначале построчно, а затем — по отдельным колонкам. При этом отдельные столбцы различных таблиц записываются четко друг за другом, со смежными блоками. Сжатие производится кодеком Zlib / LZO.

Это позволяет, при необходимости использования определенных данных, распаковывать только часть информации. Исходные данные при использовании структуры RCFile сжимаются примерно в пять раз. Если бы не такой уровень сжатия, то информация Facebook занимала бы объем дискового пространства в полтора эксабайта, а сама социальная сеть работала бы чрезвычайно медленно.

RCFile

Правда, с появлением большого количества новых пользователей (при проникновении социальной сети в развивающиеся страны) пришлось искать дополнительное решение, позволившее бы еще более эффективно хранить данные. Такое решение было найдено, когда специалисты Facebook обратились за помощью к компании Hortonworks. Совместная разработка обеих команд получила название ORCFile, это формат хранения данных, где проведена значительная оптимизация распределенного хранения данных на платформе Hadoop.

Использование ORCFile позволяет сжимать табличные данные в индивидуальном порядке, с одновременной разбивкой их по блокам размером в 256 МБ. Каждый блок получил название «полоса». После ряда доработок формата инженерам удалось добиться индивидуального использования различных методов компрессии для кажого из блока данных. Как результат, скорость записи данных возросла почти в полтора раза.

Facebook_ORCFile

Общим результатом проведенных работ стала возможность значительной экономии дискового пространства с 8-кратной степенью сжатия и одновременным увеличением скорости обработки.

comments powered by Disqus