26 ноября 2013

Google Platform. Введение

Google Platform. Введение

Вводная статья цикла «Google Platform»

Хранение и обработка данных – это задача, которую человечество с переменным успехом решает ни одну тысячу лет. Проблемы, связанные с решением этой задачи, связаны не только с физическим объемом данных (volume), но и со скоростью изменчивости этих данных (velocity) и многообразием (variety) источников данных – то, что аналитики Gartner в своих статьях [11, 12] обозначили как «3V».

Количественные изменения в системе неизменно переходят в качественные [13]. Изобретение письменности, книгопечатанье, автоматизированные средства обработки данных разумно рассматривать, как ответ на вызов, который ставит проблема 3V.

Современная Computer Science сейчас встретилась с проблемой Больших данных, решения которой от ИТ ждут частные компании, правительства, научное сообщество (которое не занято в computer science).

Но в мире есть одна компания, которая встретилась с проблемой Big Data еще порядка 10 лет назад. По моему ощущению (т.к. чтобы заявить достоверно нужны открытые данные, которых в свободном доступе нет) ни одна коммерческая или некоммерческая организация не оперирует большим объемом данных, чем эта компании.

Именно эта компания являлась основным контрибьютором идей платформы Hadoop, а также многих компонентов экосистемы Hadoop, таких как HBase, Apache Giraph, Apache Drill.

Как Вы догадались, речь идет о Google.

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

Хронология Big Data в Google

Условно историю развития «Big Data»-решений в Google можно поделить на 2 периода:

  • 1-ый период (2003-2008): в этот период были описаны набор принципов и концепций, которые сейчас де-факто являются стандартом в мире обработки больших объемов данных (на commodity-оборудовании).
  • 2-ой период (с 2009 по настоящий момент): были описаны технологии обработки данных, которые, с большой долей вероятности, будут использоваться для решения «Big Data»-задач уже в недалеком будущем.

2003-2008

В этот период инженерами Google были описаны и опубликованы в свободном доступе research papers о 3-ех системах, которые в Google используют для решения своих задач:

  • распределенная файловая система Google File System (GFS) [1];
  • высокопроизводительная база данных Bigtable [3], ориентированная на хранение петабайт данных;
  • программная модель MapReduce [2], предназначенная для распределенной обработки больших объемов данных.

Влияние работ, опубликованных Google, на первые шаги становления отрасли Big Data сложно переоценить.

Наиболее известным примером реализации концепций, описанных Google, является платформа Hadoop. Так прототипом файловой системы HDFS является GFS; идеи, положенные в основу архитектуры HBase, взяты из BigTable; а фреймворк вычислений Hadoop MapReduce (без YARN) является реализацией принципов, заложенных в аналогичном фреймворке Google MapReduce.

Сама платформа Hadoop с 2008 года в течение нескольких лет будет набирать популярность и к 2010-2011 году де-факто станет стандартом для работы с Большими Данными. Сейчас Hadoop уже «локомотив» в мире Big Data и оказывает огромное влияние на этот сегмент ИТ. Но когда-то такое же огромное влияние на Hadoop оказали описанные в Google архитектурные подходы к построению Big Data платформы.

Сама же платформа Google все это время развивалась, адаптировалась под все новые и новые требования, у поисковика появлялись новые сервисы, в том числе те, чья природа соответствовала скорее интерактивному режиму обработки, чем пакетному; размеры chunk’ов (кластеров в GFS) не подходили для эффективного хранения не всех типов данных; появлялись требования, связанные с геораспределеность и поддержкой распределенных транзакций.

Эти новый вызовы были приняты и успешно решались инженерами Google.

2009-2013

К 2009-2010 годам как в самой компании Google, так и в академической среде достаточно подробно исследовали достоинства и ограничения комплекса подходов для построения Big Data платформы, описанного инженерами Google в период с 2003 по 2008 год. Да и сама платформа Google за период до 2009 года развивалась и эволюционировала.

Итак, в (условно) 2-ой этап развития Big Data платформы в Google – 2009-2013 - исследователями компании с разной степенью детализации были описаны следующие программные системы:

  • Colossus (GFS2) – распределенная файловая система, являющаяся развитием GFS [10].
  • Spanner – масштабируемое геораспределенное хранилище с поддержкой версионности данных, являющийся развитием BigTable [8].
  • Dremel – масштабируемая система обработки запросов в режиме близком к режиму реального времени (near-real-time), предназначенная для анализа связанных read-only данных [4].
  • Percolator – платформа для инкрементальной обработки данных, которая используется для обновления поисковых индексов Google [9].
  • Caffeine – инфраструктура поисковых сервисов Google, использующая GFS2, next-generation (итеративный) MapReduce и next-generation BigTable [6].
  • Pregel – масштабируемая, отказоустойчивая и распределенная система обработки графов [7].
  • Photon – масштабируемая, отказоустойчивая и геораспределенная система обработки потоковых данных [5].

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

Вместо заключения

Вместо заключения приведу цитату человека, который уже доказал свою способность успешно предсказывать будущего отрасли Big Data, CEO Cloudera Майка Олсона:

If you want to know what the large-scale, high-performance data processing infrastructure future looks like, my advice would be to read the Google research papers that are coming out right now. Mike Olson, Cloudera CEO

Список источников, используемый для подготовки цикла

Основные источники

  • [1] Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung. The Google File System. ACM SIGOPS Operating Systems Review, 2003.
  • [2] Jeffrey Dean, Sanjay Ghemawat. MapReduce: simplified data processing on large clusters. Proceedings of OSDI, 2004.
  • [3] Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A.Wallach, et al. Bigtable: A Distributed Storage System for Structured Data. Proceedings of OSDI, 2006.
  • [4] Sergey Melnik, Andrey Gubarev, Jing Jing Long, Geoffrey Romer, et al. Dremel: Interactive Analysis of Web-Scale Datasets. Proceedings of the VLDB Endowment, 2010.
  • [5] Rajagopal Ananthanarayanan, Venkatesh Basker, Sumit Das, Ashish Gupta, Haifeng Jiang, Tianhao Qiu, et al. Photon: Fault-tolerant and Scalable Joining of Continuous Data Streams, 2013.
  • [6] Our new search index: Caffeine. Google Official blog.
  • [7] Grzegorz Malewicz, Matthew H. Austern, Aart J. C. Bik, James C. Dehnert, Ilan Horn, et al. Pregel: A System for Large-Scale Graph Processing. Proceedings of the 2010 international conference on Management of data, 2010.
  • [8] James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, JJ Furman, et al. Spanner: Google’s Globally-Distributed Database. Proceedings of OSDI, 2012.
  • [9] Daniel Peng, Frank Dabek. Large-scale Incremental Processing Using Distributed Transactions and Notifications. Proceedings of the 9th USENIX Symposium on Operating Systems Design and Implementation, 2010.
  • [10] Andrew Fikes. Storage Architecture and Challenges. Google Faculty Summit, 2010.

Дополнительные источники

Автор статьи

,
DS/ML Preacher, Microsoft MVP && Coffee Addicted