Google File System (GFS)
Статья из цикла «Google Platform»
Google File System (GFS) – распределенная файловая система (ФС) Google. Система является проприетарной, по некоторым сведениям работа над GFS была начата еще в 2000 году; общие принципы построения были довольно подробно описаны в документе [1], представленном на ACM SIGOPS Operating Systems Review в 2003 году.
Архитектура
GFS предназначена для хранения больших объемов данных (петабайты). Файлы в ФС поделены на куски фиксированного размера (в терминологии GFS – «chunk») по 64 Мб (в общем случае).
Файлы данных хранятся на Chunk-узлах (в терминологии GFS – «Chunkserver»). Chunkserver на аппаратном уровне представляет commodity-оборудование. Поэтому (и не только поэтому) для обеспечения надежного хранения данных данные в GFS автоматически реплицируются как минимум трижды.
Кроме Chunkserver'ов в GFS есть единственный Master-сервер. Master представляет собой вычислительный узел, ответственный за координацию и мониторинг Chunkserver'ов. По аналогии с NameNode в HDFS, Master в GFS отвечает за:
- работу с метаданными – пространства имен, file-to-chunk маппинг, информация о доступе к данным;
- операции над chunk'ами, в т.ч. сборка мусора («осиротевших» chunk’ов);
- мониторинг Chunkserver'ов посредством hearbeat-сообщений.
Как и в случае с NameNode в HDFS, Master-узел в GFS является потенциальным «узким местом» системы, имеет избыточное число ответственностей и является единичной точкой отказа.
Базовые принципы
Описанная архитектура полностью удовлетворяет принципам, заложенным инженерами Google в GFS, а именно:
- Аппаратные неисправности в кластерных системах нужно рассматривать как норму, а не как исключение;
- Данные уже имеют огромный размер и их объем будет только расти. Система ввода-ввода должна быть спроектирована с расчетом на размер данных, которыми она будет оперировать;
- Файлы изменяются путем добавления новых данных в конец файла, а не путем переписывания существующих данных. Запись в произвольные места, как не непоследовательное чтение данных из файла гипернеэффективны. Эффективно использование подхода «write once, read many»;
- Дизайн распределенной ФС, не должен полагаться на дизайн приложений, его использующих. Т.о. файловая система должна знать минимальное количество сведений о клиентах и характере операций над данными, которые эти клиенты осуществляют.
Особенности GFS
GFS разделяет потоки данных и потоки команд. Так, как показано на иллюстрации 1, потоки команд проходят от Master к клиентам и от Master к Chunkserver’ам. В то время как потоки данных проходят от Chunkserver к клиентам напрямую, минуя Master. Это позволяет увеличить способность к масштабируемости всего GFS кластера в целом, т.к. Master не является «узким местом» при обмене данными с клиентами.
Кроме «стандартных» для ФС команд: create, delete, open, close, read, write – GFS также поддерживает операции snapshot и record append. Snapshot эффективно создает копию файла или директории, а record append позволяет добавлять данные в конец файла одновременно нескольким клиентам с гарантией атомарности изменений.
Выше я упоминал, что, как и во всех системах, построенных по архитектуре Master-Slave, Master сервер в GFS является единичной точкой отказа.
Для того, чтобы максимально нивелировать влияние недоступности Master на общую доступность системы в GFS функционирует система логгирования
операций и checkpoint'ов (при достижении лога определенных объемов).
Кроме того, есть:
- система мониторинга за доступностью Master;
- «Shadow» Master, которые позволяет минимизировать время «поднятия» нового Master;
- каноническое имя Master, по которому обращаются к Master-серверу клиенты, позволяет с помощь DNS alias за максимально короткий срок переключить клиентов на новый Master.
Будущее и итоги
GFS – распределенная файловая система, оптимизированная для работы с большими наборами данных. Система рассчитана на многопоточное добавление данных и их последовательное чтение, а также поддерживает стандартные для файловых систем операции.
GFS является масштабируемой высокодоступный системой с надежным хранением данных.
Инновационные принципы и концепции, описанные в [1], легли в основу HDFS – open-source распределенной файловой системы, ключевой компоненты платформы Hadoop.
В то же время, GFS имела как ряд недостатком, которые в конечном итоге влияли на возможность масштабируемости и доступность системы, так и ряд принципиальных ограничений - неспособность к геораспределенности, невозможность работать в real-time и/или near-real-time режиме.
Хотя в 2013 GFS уже не выглядит системой без недостатков, но на момент описания ее в research paper [1] в 2003 году она шла на шаг вперед своего времени. Обновленная версия GFS имеет название Colossus [10]. О Colossus речь пойдет в одной из следующих статей из цикла.
Список источников*
- [1] Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung. The Google File System. ACM SIGOPS Operating Systems Review, 2003.
- [10] Andrew Fikes. Storage Architecture and Challenges. Google Faculty Summit, 2010.
* Полный список источников, используемый для подготовки цикла.
Комментариев нет:
Отправить комментарий