Основы Big data

Конспект вебинара HonorCup E=DC2 для сдачи HCNA Storage.

Big data – вся совокупность огромных объемов данных (структуированных и неструктуированных), которые не могут быть обработаны для получения воспринимаемых человеком результатов в рамках текущих программно-аппаратных средств.

Big data is a term for data sets that are so large or complex that traditional data processing application software is inadequate to deal with them.

Во многом понятие big data – маркетинговый булшит: многие процессы связанные сейчас с большими данными были и до этого (БД крупных контент провайдеров, биллинг крупных провайдеров связи и проч – распределенные системы хранения). Да и Hadoop появился в 2005, Google File System в 2000, а термин big data в 2008.

 

Зачем надо

Проблема в том, что объем данных растет, причем особенно растет объем неструктуированных данных и сейчас их более ¾ от общего количества. По информации от gartner (исслед./консал. компания):

  • 5 экзабайт (10^18 байт) до 2003 года было сгенерировано и сохранено данных
  • 5 экзабайт в 2011 году генерировались за два дня
  • 5 экзабайт в 2013 году генерировались за 10 минут
  • к 2010 году объем глобальных данных преодолел 1 зетабайт (10^21 байт)
  • к 2020 году общее количество сгенерированных данных будет 40 зетабайт (рост в 40 раз за 10 лет)

Факторы роста:

  • Мобильные телефоны
  • Рост коммуникаций (соцсети, мессенжеры, etc)
  • Рост каналов передачи данных
  • Изменение структуры данных
  • Рост качества фото/видео и результирующий рост их объема

И в тоже время, текущие реляционные БД не способны справится с растущим объемом данных.

 

Предпосылки проблемы
Источники данных различны и они генерируются пользователями в повседневной жизни. Помимо пользователей данные генерируются и устройствами и этих устройств становится все больше (умные часы/холодильники/чайники, не говоря про IT оборудование/системы).

Без развития ИТ технологий появление новых устройств и контент услуг из-за повышающегося объема был бы невозможен. Поэтому развитие ИТ технологий сыграло большую роль в появлении проблематики Big Data – развитие обеспечило платформу для роста потребностей через планомерное повышение производительности, максимального объема, уменьшение стоимости, появление cloud технологий, технологий noSQL и newSQL.

 

Работа с данными

Эволюция работы с данными или повышение ценности данных:

  • Отчеты вида что произошло
  • Excel/OLAP позволили отвечать на вопрос почему это произошло
  • Мониторинг позволил знать, что происходит сейчас
  • Анализ/предсказание/оптимизация позволили смотреть в будущее (предсказание эпидемий по запросам симптомов в google)

Процедура обработки big data по сути не отличается от обработки обычных данных: сбор данных, хранение, управление, аналитика данных. Источники/средства/методы сбора данных зависят в основном от источника.

 

Структуированные и неструктуированные данные

Три типа данных по пригодности их для автоматизированной работы с данными (обработки/аналитики/оценки ценности/извлечения информации):

  • Под структуированными (structured data) данными подразумеваются данные, пригодные для этих операций  (записи в базах данных, таблицах).
  • Неструктуированные (unstructured data) данные требуют новых баз и инструментов для возможности этих операций над ними (фото, аудио, видео, текстовые документы, веб-страницы).
  • Различают так же полуструктуированные данные (semi-structured data), данные могут быть частично автоматизировано обработаны (текстовые документы, веб-страницы, логи).

С big data постоянно приходится работать двум типам IT-компаний:

  • контент провайдеры
  • телеком провайдеры

Уровень структуированности проходящих через них данных у обоих типов компаний довольно плох.

 

Характеристики

Под big data попадают данные со следующими характеристиками (четыре V big data):

  • Volume (объем) – огромный объем
  • Variety (вариативность) – огромное количество типов данных
  • Velocity (скорость) – растет скорость объема, причем неструктуированные данные растут быстрее структуированных
  • Value (ценность) – невозможно оценить ценность данных и она может отличаться

К тому же, зачастую, такие данные записаны один раз и в них вносятся редкие модификации, но им требуется долговременное хранение (фотки с отпуска).

Технологии

Object-based storage

К двум существующим вариантам хранения добавляется новый тип OBS (не путать OBS и NoSQL Object database – это разные вещи):

  • Блоковое (iSCSI, FC) – блоки данных передаются к системе хранения напрямую. Высокая скорость и низкие задержки, но высокая стоимость, относительно плохая масштабируемость (не подходит для big data) и проблемы с передачей данных между разными SAN сетями. Сценарии использования: базы данных Enterprise (Oracle, MSSQL).
  • Файловое (NFS, CIFS, POSIX) – создание файловой системы на основе блочного хранилища, передаются сами файлы. Легкое управление, простая работа с приложениями, простая передача данных между разными сетями. Средняя масштабируемость с рядом ограничений. Сценарии: file sharing, интеграция приложений в Enterprise.
  • OBS – Object-based storage (HTTP, REST, S3) или распределенная файловая система (в русской wiki) – при использовании OBS создается слой объектного управления на основе блоковых систем хранения.  По сути, OBS – это распределенная файловая система. Почти неограниченное масштабирование за счет использования объектов (уникальный ключ, файл данных, метаданные, пользовательские метаданные) и функции саморегуляции объектов. Использование стандартных Internet протоколов для передачи данных (по аналогии с файловыми системами) позволяет обеспечить простое взаимодействие разных систем между собой. Сценарии: бекапы, архивация данных в Enterprise. Используется контент провайдерами гигантами для хранения неструктуированных данных (фото  в facebook, песни Spotify, файлы в Dropbox, Amazon S3, Microsoft Azure).
Object storage systems allow retention of massive amounts of unstructured data. Object storage is used for purposes such as storing photos on Facebook, songs on Spotify, or files in online collaboration services, such as Dropbox.

Структура технологии хранения OBS.

  • OSD – Object storage device – хранилище данных.
  • MDS – MetaData server, по сути name сервер. По имени файла находит OSD и дает ее ссылку Client. Хранит связующую информацию между файлами и OSD.
  • Clientобращается к MDS для логического доступа к данным OSD по полученному от MDS адресу.

Сравнение доступа к данным в файловой и OBS моделях.

  • В файловой системе традиционных систем хранения используется дерево-каталог (иерархическая структура). Если много файлов и файловая структура многоуровневая, нагрузка на корневой каталог высока, что влияет на производительность.
  • В случае ODS используется плоская, децентрализованная структура, что хорошо сказывается на производительности при больших объемах данных.

Если свести к одному, то вот основные преимущества OBS:

  • Плоская архитектура, позволяющая простой доступ и масштабирование
  • Автоматическое управление – OBS может настраивать политики атрибутов (метаданных) на основе потребности со стороны приложений
  • Множество пользователей (арендаторов) – при использовании OBS ее могут использовать разные клиенты
  • Безопасность и целостность данных на основе текущих технологий

 

Distributed Parallel Processing

DPP (Distributed Parallel Processing) или MPP (massively parallel processing) – параллельная обработка данных, важный аспект в контексте Big data. К примеру, приходит запрос на чтение объекта в хранилище OBS, MPP используя вычислительные мощности нескольких серверов находит объект в конкретном хранилище. Практической реализацией параллельной обработки является технология MapReduce, используемая в Hadoop (о нем ниже). Причем сам Google от нее уже давно отказался в силу ограничений в масштабировании (ой лол) и проблем в автоматизации внедрения и эксплуатации в пользу Cloud Dataflow.

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

 

Erasure Code

На первый взгляд Erasure Code напоминает защиту технологии посредством использования XOR на RAID массивах. EC используются Huawei в продукте OceanStor 9000 для защиты данных. Большие файлы (более 4ГБ) рубятся на мелкие, части файлов могут быть распределены между разными устройствами OceanStor 9000. Используя EC можно задать настройки уровня избыточности N+M (1/2/3/4).

 

Storage Tiering

Еще одно понятие в Big data – разделение данных по категориям. Какие-то данные целесообразно хранить на SSD т.к. к ним часто обращаются, а какие-то можно положить на HDD или даже в ленточную библиотеку. Практической реализацией гибкого многоуровневого подхода по хранению данных является технология SmartTier, используемая в СХД Huawei на RAID 2.0+.

 

QoS

Обработка данных должна происходить с тем или иным приоритетом – QoS. Практической реализацией гибкого многоуровневого подхода по хранению данных является технология SmartQoS, используемая в СХД Huawei.

 

Hadoop
Hadoop – продукт Apache foundation с открытым кодом. Представляет собой набор утилит/библиотек для разработки и выполнения программ, работающих на кластерах из сотен и тысяч узлов. Hadoop широко используется для обработки неструктуированных данных. Появился еще в далеком 2005 году.

Hadoop состоит из (картинка не совсем актуальна):

  • HDFS (Hadoop distributed file system) – файловая система для хранения файлов больших размеров в формате OBS
  • Hadoop Common – набор библиотек управления файловыми системами
  • YARN – сценарии создания инфраструктуры, планирование ресурсов кластеров
  • MapReduce (о нем было выше)

 

Новые базы данных

В вебинаре не сказали о NoSQL/New, но несколько раз сказали о проблемах при работе с большими данными традиционных реляционных баз из-за их слишком сложной архитектуры. Cказал А, говори Б. БД для big data являются NoSQL/NewSQL БД, хотя даже в случае NoSQL не подразумевается во всех реализациях полный отказ от SQL (not only SQL – что-то похожее на SQL NoSQL БД может поддерживать).

Причем для применения в BigData такие базы должны иметь на своем борту технологии параллельной обработки (MapReduce), платформу по аналитике данных и зачастую основываются на распределенной файловой системе (HDFS).

NoSQL

Смотрим англоязычную вики Wiki, есть куча разных типов построения NoSQL баз и по каждому типу есть отдельная статья, выпишу только наиболее популярные типы и примеры:

  • Key-value database: Redis, Oracle NoSQL Database, Amazon DynamoDB, DBM
  • Document-oriented database & XML database: MongoDB, CouchDB, Elasticsearch, Amazon SimpleDB
  • Graph database: ArangoDB, OrientDB, SAP HANA (еще и IN-memory)
  • Object database. БД: Amazon Simple Storage Service, ObjectDB, db4o, GemStone
  • И еще множество типов, куда подпадает Mnesia на Erlang

NewSQL

Определение из Wiki:

NewSQL (англ. новый SQL) — класс современных реляционных СУБД, стремящихся совместить в себе преимущества NoSQL и транзакционные требования классических баз данных. Потребность в данных системах возникла в первую очередь у компаний, работающих с критическими данными (например, финансового сектора), которым требовались масштабируемые решения, в то время как решения NoSQL не могли предоставить транзакций и не отвечали требованиям надёжности данных.

Самам известным примером NewSQL является SAP HANA – in-memory newSQL DB.

 

 

Вопросы

все вопросы/ответы по теме тут

Leave a Reply