От HDFS в облака: разбираем Google Cloud Storage Connector for Hadoop

Автор Категория , ,
От HDFS в облака: разбираем Google Cloud Storage Connector for Hadoop

Говоря про перспективы развития экосистемы Apache Hadoop с учетом современного тренда на SaaS-подход к работе с большими данными (Big Data), сегодня мы рассмотрим, как работает коннектор облачного хранилища Google для этого фреймворка. Читайте далее, чем HCFS отличается от HDFS и каковы преимущества практического использования Google Cloud Storage Connector for Hadoop.

Что такое Google Cloud Storage и зачем ему коннектор к Apache Hadoop

Напомним, Google Cloud Storage – это единое хранилище объектов, которое предоставляет доступ к данным через унифицированный API, являясь облачным управляемым решением. Оно поддерживает как высокопроизводительные вычисления, так и архивный вариант использования [1]. Существует несколько способов получить доступ к данным, хранящимся в Google Cloud Storage [2]:

  • через приложения Spark, PySpark или Hadoop с использованием префикса gs: //;
  • в рамках shell-оболочки Hadoop с помощью команды hadoop fs -ls gs: // bucket / dir / file;
  • через браузер Cloud Console Cloud Storage;
  • с использованием команд gsutil cp или gsutil rsync.

Для облегчения связи Google Cloud Storage с Big Data на базе приложений Apache Hadoop или Spark, в 2019 году был выпущен специальный коннектор (Google Cloud Storage Connector, GCSC). Он представляет собой клиентскую Java-библиотеку с открытым исходным кодом, которая работает в JVM Hadoop, включая узлы данных, элементы MapReduce, исполнители Spark и пр., позволяя получить доступ к облачному хранилищу. Благодаря коннектору приложения Big Data с открытым исходным кодом, такие как задания Hadoop и Spark, могут читать и записывать данные непосредственно в облачное хранилище, а не в HDFS. Аналогичную возможность Cloud Storage Connector предоставляет через интерфейс командной строки Hadoop-совместимых файловых систем (Hadoop Compatible File System, HCFS), например, Apache Ozone. С учетом современного тренда на перевод ИТ-инфраструктуры в облако, хранение данных в Cloud-хранилище имеет следующие преимущества по сравнению с HDFS [3]:

  • отсутствие накладных расходов на администрирование хранилища, в т.ч. обеспечение обновлений и высокой доступности HDFS;
  • сокращение затрат на эксплуатацию Big Data системы по сравнению с давно работающим кластером Hadoop HDFS с тремя репликами на постоянных дисках;
  • разделение хранилища данных от вычислений позволяет масштабировать каждый уровень независимо от других;
  • хранилище остается доступным даже после завершения работы кластеров Hadoop;
  • возможно совместное использование сегментов облачного хранилища между эфемерными (ephemeral) кластерами Hadoop, которые используются только во время выполнения заданий.

На уровне реализации Google Cloud Storage Connector представляет собой open-source интерфейс HCFS под лицензией Apache 2.0 для облачного хранилища и состоит из четырех основных компонентов [3]:

  • gcs – реализация HDFS и каналов ввода/вывода;
  • util-hadoop – общие утилиты, обеспечивающие функциональность Hadoop, совместно с другими коннекторами, в т. ч. аутентификацию и авторизацию;
  • gcsio – высокоуровневая абстракция JSON API для облачного хранилища;
  • util – служебные функции (обработка ошибок, конфигурация транспорта HTTP и пр.), используемые компонентами gcs и gcsio.
Архитектура Google Cloud Storage Connector for Hadoop, Hadoop
Архитектура Google Cloud Storage Connector for Hadoop

7 главных плюсов Google Cloud Storage Connector

Помимо основного назначения GCSC, которое состоит в облегчении взаимодействия данных в облачном хранилище с локальными Hadoop/Spark-заданиями, ключевыми преимуществами Google Cloud Storage Connector можно назвать следующие [3]:

  • оптимизация механизма чтения колоночных Big Data форматов (Parquet, ORC), которая позволяет интеллектуально читать только те фрагменты файла (столбцы), нужные для обработки запроса. Коннектор полностью поддерживает раскрытие предикатов и читает только байты, запрашиваемые уровнем вычислений с помощью fadvise. Она пришла из Linux и позволяет приложениям предоставлять ядру операционной системы подсказку насчет шаблона доступа ввода-вывода: последовательное сканирование или случайный поиск. Это позволяет ядру выбирать подходящие методы упреждающего чтения и кэширования для увеличения пропускной способности или уменьшения задержки.
  • совместная блокировка – изоляция для изменений каталога облачного хранилища, которая изолирует операции изменения каталога, выполняемые через shell-оболочку HDFS (команда hadoop fs) и другие интерфейсы API HCFS для Cloud Storage. Это предотвращает несогласованность данных во время конфликтующих операций каталога с облачным хранилищем, упрощает восстановление любых неудачных операций с каталогом и облегчает миграцию с HDFS в Cloud Storage.
  • Распараллеливание модификации каталогов, помимо использования пакетного запроса, Cloud Storage Connector выполняет пакеты Cloud Storage параллельно, сокращая время переименования для каталога с 32 000 файлов с 15 минут до 1 минуты 30 секунд.
  • оптимизация задержки за счет уменьшения количества необходимых запросов облачного хранилища для высокоуровневых операций файловой системы Hadoop;
  • параллельное выполнение glob-алгоритмов обеспечивает наилучшую производительность при работе с глубокими и широкими файловыми деревьями;
  • восстановление скрытых каталогов во время удаления и переименования вместо операций со списками и glob-объектами уменьшает временную задержку и устраняет необходимость в разрешениях на запись для запросов на чтение;
  • согласованность чтения облачного хранилища разрешает запросы одной и той же версии объекта, предотвращая разночтение отличающихся версий и повышая производительность.

При том, что коннектор поставляется под эгидой корпорации Google, его исходный код полностью открыт и поддерживается Google Cloud Platform (GCP), включая предварительную настройку в Cloud Dataproc и облачных сервисах Hadoop и Spark, управляемых GCP. Однако, GCSC также может использоваться в других дистрибутивах Apache Hadoop – от MapR, Cloudera или Hortonworks. Это позволяет легко переносить локальные данные HDFS в облако или группировать рабочие нагрузки в GCP [3]. Данный факт является еще одним аргументом в пользу применения SaaS-подхода. В частности, из наиболее крупных примеров практического использования Google Cloud Storage Connector стоит отметить кейс соцсети Twitter, которая мигрировала с локальных Хадуп-кластеров в облачное объектное хранилище в 2018-2019 годах [4]. Примечательно, что именно на базе этого внедрения было реализовано одно из вышеотмеченных преимуществ – повышение эффективности чтения колоночных форматов с помощью разработанного Twitter прототипа использования запросов диапазона для чтения только столбцов. Это было сделано в середине 2018 года в рамках массового тестирования SQL-запросов для больших данных по колоночным файлам в облачном хранилище на примере датасета размером более 20 петабайт [3]. В следующей статье мы продолжим разговор про облачные сервисы аналитики Big Data и разберем, как устроена Хадуп-платформа Dataproc от Google: архитектура, принципы работы и механизмы обеспечения информационной безопасности.

Как на практике эффективно работать с облачными и локальными компонентами экосистемы Apache Hadoop для хранения и аналитики больших данных в проектах цифровизации частного бизнеса, а также государственных и муниципальных предприятий, вы сможете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

 

Источники

  1. https://www.infoq.com/news/2019/09/Google-Cloud-Storage-Hadoop/
  2. https://cloud.google.com/dataproc/docs/concepts/connectors/cloud-storage
  3. https://cloud.google.com/blog/products/data-analytics/new-release-of-cloud-storage-connector-for-hadoop-improving-performance-throughput-and-more
  4. https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/the-start-of-a-journey-into-the-cloud.html