English

Пара слов о Big Data

Согласно русской страницы википедии Big Data, или большие данные, это:

обозначение структурированных и неструктурированных данных огромных объёмов и значительного многообразия, эффективно обрабатываемых горизонтально масштабируемыми программными инструментами, появившимися в конце 2000-х годов и альтернативных традиционным системам управления базами данных и решениям класса Business Intelligence.

Английская версия уже намного лучше определяет Big Data:

Big data refers to data sets that are too large or complex to be dealt with by traditional data-processing application software. Data with many fields (rows) offer greater statistical power, while data with higher complexity (more attributes or columns) may lead to a higher false discovery rate.

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

В данной статье мы не будем сильно погружаться в Big Data, а только пройдёмся по верхам. Если хотите больше подробностей, то посмотрите видео Владимира Красильщика Анти-введение в Big Data. Хоть видео уже лет 5, но оно очень хорошо даёт понимание про Big Data. Если кратко, то вот небольшой набор пунктов про Big Data:

  • много данных как результат избыточности, неизменяемости и репликации;
  • гибкое хранилище и возможность делать разнообразные запросы (Cassandra, HDFS, Amazon S3, ...);
  • надёжное «заведение» данных (Apache Storm, Spark Streaming, Apache Kafka, ...);
  • крутые аналитические инструменты (Hadoop, Spark, …), которые дают ответ на основе всех данных;
  • «доставляет головную боль...» (c).

Это конечно не достаточные условия для того, чтобы быть большими данными, но даёт неплохое представление о них, и, в особенности, последний пункт.

Вообще, чтобы понятно насколько Big Data сейчас является одним из важных направлений в IT стоит немного окунуться в исторические данные и посмотреть, как росло количество данных в мире. В 2013 г. общее количество хранящейся в мире информации составило 1,2 зеттабайта (зетта- – 1021). По прогнозам компании IDC общее количество должно было удваиваться каждые 2 года и составить к 2020 г. порядка 40 зеттабайт. У такой быстрого роста информации даже есть специальный термин – информационный взрыв. Сегодня IDC оценивает этот объем в 59 зеттабайта и прогнозирует его рост до 163 зеттабайт к 2025 году. Большая часть данных, которая сейчас генерируется идёт в основном не от людей, а различного рода устройствами (IoT и прочие) в ходе их взаимодействия друг с другом и сетями данных. Если уж вы хотите немного больше узнать про текущую ситуацию, то обратитесь к вот этой статье.

В последние несколько лет данные стали новой нефтью, но в необработанном виде они имеют малую ценность, но будучи переработанными становятся золотой жилой для компании. Многие компании другие уже давно просекли фишку и очень так неплохо зарабатывают на нас с вами. Некоторые даже делают вид что их заботит наша безопасность, но не стоит им так слепо доверять, это всё-таки бизнес для них.

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

В 2001 Meta Group году выделила набор признаков из трёх V, которые характеризуют большие данные:

  • Volume — Объёмы.
  • Velocity — Скорость.
  • Variety — Разнообразие.

А дальше многие другие компании присоединились и добавилось ещё несколько V:

  • Veracity — Достоверность.
  • Viability — Жизнеспособность.
  • Value — Ценность.
  • Variability — Переменчивость.
  • Visualization — Визуализация.

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

И тут мы приходим к вопросу: так про что всё-таки Big Data? И самый простой ответ, который может быть получен – Big Data это про распределённые системы. Можно сказать, что Big Data без распределённых систем станут просто обычными данными. Если говорить про распределённые системы, то есть очень хорошее определение двух серьёзных проблем в них:

2. Доставить сообщение ровно один раз.

1. Гарантировать порядок доставки сообщений.

2. Доставить сообщение ровно один раз.

А, если серьёзно, то распределённые системы – это ядро обработки больших данных. Только особого смысла эти системы не имеют без самих данных. И так мы плавно переходим к источникам данных, а в наше время их сейчас предостаточно. Сейчас буквально каждое устройство, подключенное к сети, является источником данных.

Если сейчас всё генерирует данные, то должны быть компании, которые на этом зарабатывают. И да, их очень много. Даже в 2015 году их уже было достаточное количество, а сейчас их и того больше. Информация про стартапы хоть и стара, но хорошо даёт понять масштабы использования Big Data, которая только и растёт с каждым годом. Тут прям очень хорошо подойдёт один мем, так как не все довольны такой тенденцией по сбору данных о них.

«Это я кричу на web 3.0 и прочий скам, в который скатывается интернет.»

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

  • машинное обучение и нейронные сети;
  • смешение и интеграция (data fusion);
  • имитационное моделирование;
  • генетические алгоритмы;
  • распознавание образов;
  • прогнозная аналитика;
  • методы Data Mining;
  • сетевой анализ.

Но также некоторые источники выделяют ещё краудсорсинг, визуализацию и многие другие методы. Тут можно сказать, что все средства хороши для работы с большими данными. И, возможно, вы, адаптируете существующие подходы и методы к работе с Big Data.

А вот насчёт технологий, то их существует большая прорва. Многие даже создают шуточные сайты, на подобии этого. Давайте ради приличия выделим небольшое количество и мы.

Большую популярность для хранения и работы с большими данными проявили себя NoSQL решения, так как хорошо подходят для работы с неструктурированными данными. Мы бы выделили среди них MongoDB и Apache HBase.

Среди подходов обработки все давно слышали про MapReduce, так как это было довольно элегантное решение для распределенной обработки данных на большом количестве устройств. Но MapReduce не мог бы существовать без Apache Hadoop, так как большим количеством компьютеров нужно чем-то управлять, да и кто будет выдавать данные для обработки. Идя далее, мы не можем не упомянуть Apache Spark, фреймворк, который был специально сделан для обработки неструктурированных данных.

Дальше есть смысл выделить пару языков, которые очень хорошо подошли для работы с большими данными. Обычно выделяют тройку языков: R, Python, Java / Scala. Последние объединил в группу, так как они оба используют JVM машину для работы, хоть их синтаксис и отличается между собой. Помимо эти языков, также используют старичка C++, хорошо зарекомендовавшего себя Go, а также популярный среди научных кругов MATLAB. Среди перспективных новичков выделяют Julia, но на данный момент ему все ещё не хватает хорошей пакетной базы.

Конечно, можно использовать почти любой язык программирования, но основная проблема – отсутствие пакетов, которые специально заточены под работу с большими данными. Так например язык Rust был бы неплох для работы, но в данный момент существует не такое уж большое количество библиотек направленных на работу с данными.

В заключении хотелось бы только подытожить всё написанное. Технология идёт полным ходом и количество инструментов и подходов для работы с большими данными будет только увеличиваться, так как данные в нашей реальность – новое золото.

Под конец хотелось бы обратить ваше внимание вот на эту статью, а точнее на Data Landscape 2021.