AVRO

Apache Avro

Avro – это линейно-ориентированный (строчный) формат хранения файлов Big Data, активно применяемый в экосистеме Apache Hadoop и широко используемый в качестве платформы сериализации. Как устроен формат Avro для файлов Big Data: структура и принцип работы Avro сохраняет схему в независимом от реализации текстовом формате JSON (JavaScript Object Notation), что облегчает ее чтение и интерпретацию как программами, так и человеком [1]. Файл Авро состоит из заголовка и блоков данных. Заголовок содержит: 4 байта, ASCII ‘O’, ‘b’, ‘j’, далее 1. метаданные файла, содержащие схему – структуру представления данных. 16-байтное случайное число — маркер файла. Для блоков данных Avro может использовать компактную бинарную кодировку или человекочитаемый формат JSON, удобный для отладки. В отличие от многих других форматов Big Data, столбцовых (RCFile, Apache ORC и Далее …

Cassandra

Big Data, Большие данные, архитектура, обработка данных, NoSQL, SQL, Cassandra

Apache Cassandra – это нереляционная отказоустойчивая распределенная СУБД, рассчитанная на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, представленных в виде хэша. Проект был разработан на языке Java в корпорации Facebook в 2008 году, и передан фонду Apache Software Foundation в 2009 [1]. Эта СУБД относится к гибридным NoSQL-решениям, поскольку она сочетает модель хранения данных на базе семейства столбцов (ColumnFamily) с концепцией key-value (ключ-значение) [2]. Модель данных Apache Cassandra Модель данных Cassandra состоит из следующих элементов [3]: столбец или колонка (column) – ячейка с данными, включающая 3 части – имя (column name) в виде массива байтов, метку времени (timestamp) и само значение (value) также в виде байтового массива. С каждым значением связана метка времени — задаваемое пользователем 64-битное число, которое используется Далее …

CRISP-DM

CRISP-DM, обработка данных, Big Data, Большие данные, жизненный цикл, Machine Learning, машинное обучение

CRISP-DM (от английского Cross-Industry Standard Process for Data Mining) — межотраслевой стандартный процесс исследования данных. Это проверенная в промышленности и наиболее распространённая методология, первая версия которой была представлена в Брюсселе в марте 1999 года, а пошаговая инструкция опубликована в 2000 году [1]. CRISP-DM описывает жизненный цикл исследования данных, состоящий из 6 фаз, от постановки задачи с точки зрения бизнеса до внедрения технического решения. Последовательность между фазами определена не строго, переходы могут повторяться от итерации к итерации [1]. Все фазы CRISP-DM делятся на задачи, по итогам каждой должен быть достигнут конкретный результат [2]. Рассмотрим подробнее фазы жизненного цикла исследования данных по CRISP-DM [3]: Понимание бизнеса (Business Understanding) – определение целей проекта и требований со стороны бизнеса. Затем эти знания конвертируются в Далее …

Data Science

Big Data, Большие данные, обработка данных, машинное обучение, Machine Learning

Data Science – это наука о данных, объединяющая разные области знаний: информатику, математику и системный анализ. Сюда входят методы обработки больших данных (Big Data), интеллектуального анализа данных (Data Mining), статистические методы, методы искусственного интеллекта, в т.ч машинное обучение (Machine Learning). DS включает методы проектирования и разработки баз данных и прикладного программного обеспечения [1]. Немного истории: как появилась Data Science и при чем тут большие данные В отличие от термина «большие данные», который стал популярен с 2010-х гг., наука о данных зародилась намного раньше, во второй половине 20-го века. Первое упоминание этого понятия датируется 1974 годом, когда вышла книга Петера Наура. В этой публикации Data Science определяется как дисциплина по изучению жизненного цикла цифровых данных, от момента их появления до преобразования Далее …

Flink

Apache Flink, Apache Spark, Флинк, Спарк, Big Data, Большие данные

Apache Flink – это распределенная отказоустойчивая платформа обработки информации с открытым исходным кодом, используемая в высоконагруженных Big Data приложениях для анализа данных, хранящихся в кластерах Hadoop. Разработанный в 2010 году в Техническом университете Берлина в качестве альтернативы Hadoop MapReduce для распределенных вычислений больших наборов данных, Flink использует подход ориентированного графа, устраняя необходимость в отображении и сокращения [1]. Подобно Apache Spark, Flink имеет готовые коннекторы с Apache Kafka, Amazon Kinesis, HDFS, Cassandra, Google Cloud Platform и др., а также интегрируется со всеми основными системами управления кластерами: Hadoop YARN, Apache Mesos и Kubernetes. Кроме того, Флинк может использоваться в качестве основы автономного кластера [1]. Как устроен Apache Flink: архитектура и принцип работы Входные данные каждого потока Флинк берутся с одного или нескольких источников, например, из очереди сообщений Далее …

HBase

Big Data, Большие данные, архитектура, обработка данных, Hadoop, SQL

Apache HBase – это нереляционная, распределенная база данных с открытым исходным кодом, написанная на языке Java по аналогии BigTable от Google. Изначально эта СУБД класса NoSQL создавалась компанией Powerset в 2007 году для обработки больших объёмов данных в рамках поисковой системы на естественном языке. Проектом верхнего уровня Apache Software Foundation HBase стала в 2010 году. СУБД относится к категории «семейство столбцов» (wide-column store) и представляет собой колоночно-ориентированное, мультиверсионное хранилище типа «ключ-значение» (key-value). Она работает поверх распределенной файловой системы HDFS и обеспечивает возможности BigTable для Hadoop, реализуя отказоустойчивый способ хранения больших объёмов разреженных данных [1]. Как хранится информация в NoSQL СУБД: модель данных Модель данных HBase отличается от классических реляционных СУБД, реализуясь по типу ключ-значение – <table, RowKey, Column Family, Column, timestamp> -> Value [2]: данные организованы в Далее …

Impala

IMPA: Cloudera Impala Data Analytics

Impala – это массово-параллельный механизм интерактивного выполнения SQL-запросов к данным, хранящимся в Apache Hadoop (HDFS и HBase), написанный на языке С++ и распространяющийся по лицензии Apache 2.0. Также Импала называют MPP-движком (Massively Parallel Processing), распределенной СУБД и даже базой данных стека SQL-on-Hadoop. Как появился Apache Impala и чем это связано с Cloudera: история разработки Изначально рассматриваемый продукт был разработан компанией Cloudera и представлен на рынок в 2012 году, а 2 декабря 2015 года был принят в инкубатор фонда Apache Software Foundation. Поэтому сегодня Apache Импала обычно означает свободно распространяемое решение, а Cloudera Impala – коммерчески поддерживаемую версию от исходной компании-разработчика (Cloudera) [1]. Разумеется, Импала – это не единственное решение класса SQL-on-Hadoop. Помимо рассматриваемого продукта, такими аналитическими средствами для Big Data являются Далее …

MapReduce

Big Data, Большие данные, архитектура, обработка данных, Spark, Hadoop

MapReduce – это модель распределённых вычислений от компании Google, используемая в технологиях Big Data для параллельных вычислений над очень большими (до нескольких петабайт) наборами данных в компьютерных кластерах, и фреймворк для вычисления распределенных задач на узлах (node) кластера [1]. Назначение и области применения MapReduce можно по праву назвать главной технологией Big Data, т.к. она изначально ориентирована на параллельные вычисления в распределенных кластерах. Суть MapReduce состоит в разделении информационного массива на части, параллельной обработки каждой части на отдельном узле и финального объединения всех результатов. Программы, использующие MapReduce, автоматически распараллеливаются и исполняются на распределенных узлах кластера, при этом исполнительная система сама заботится о деталях реализации (разбиение входных данных на части, разделение задач по узлам кластера, обработка сбоев и сообщение между распределенными компьютерами). Далее …

NoSQL

Big Data, Большие данные, архитектура, обработка данных, SQL, HBase, Hadoop, Cassandra, NoSQL

NoSQL – это подход к реализации масштабируемого хранилища (базы) информации с гибкой моделью данных, отличающийся от классических реляционных СУБД. В нереляционных базах проблемы масштабируемости (scalability) и доступности (availability), важные для Big Data, решаются за счёт атомарности (atomicity) и согласованности данных (consistency) [1]. Зачем нужны нереляционные базы данных в Big Data: история появления и развития NoSQL-базы оптимизированы для приложений, которые должны быстро, с низкой временной задержкой (low latency) обрабатывать большой объем данных с разной структурой [2]. Таким образом, нереляционные хранилища непосредственно ориентированы на Big Data. Однако, идея баз данных такого типа зародилась гораздо раньше термина «большие данные», еще в 80-е годы прошлого века, во времена первых компьютеров (мэйнфреймов) и использовалась для иерархических служб каталогов. Современное понимание NoSQL-СУБД возникло в начале 2000-х годов, в Далее …

ORC

форматы Big Data файлов: Apache Parquet, ORC

ORC (Optimized Row Columnar) – это колоночно-ориентированный (столбцовый) формат хранения Big Data в экосистеме Apache Hadoop. Он совместим с большинством сред обработки больших данных в среде Apache Hadoop и похож на другие колоночные форматы файлов: RCFile и Parquet. Формат ORC был разработан в феврале 2013 года корпорацией Hortonworks в сотрудничестве с Facebook, а месяц спустя Cloudera и Twitter представили Apache Parquet [1]. Как устроен Apache ORC ORC оптимизирован для чтения потоков Big Data, включая интегрированную поддержку быстрого поиска нужных строк. Колоночное хранение данных позволяет читать, распаковывать и обрабатывать только те значения, которые необходимы для текущего запроса. Поскольку данные в ORC строго типизированы, поэтому при записи выбирается кодировка, наиболее подходящая для каждого типа данных, создавая внутренний индекс по мере записи файла Далее …

Parquet

Apache Parquet, апач паркет, формат данных

Apache Parquet — это бинарный, колоночно-ориентированный формат хранения больших данных, изначально созданный для экосистемы Hadoop, позволяющий использовать преимущества сжатого и эффективного колоночно-ориентированного представления информации. Паркет позволяет задавать схемы сжатия на уровне столбцов и добавлять новые кодировки по мере их появления [1]. Вместе с Apache Avro, Parquet является очень популярным форматом хранения файлов Big Data и часто используется в Kafka, Spark и Hadoop. Структура файла Apache Parquet Из-за архитектурных особенностей структура представления информации в Parquet сложнее, чем, например, в JSON, который также часто используется для Big Data. В частности, уровни определения (definition levels) и уровни повторения (repetition levels) позволяют оптимально хранить пустые значения и эффективно кодировать данные, информацию о схеме в  метаданные [2]. Уровни определения определяют количество необязательных полей в пути Далее …

RCFile

Hive, Big Data, Record Columnar File,Большие данные, архитектура, обработка данных, Hadoop, форматы данных

RCFile (Record Columnar File) – гибридный многоколонный формат записей, адаптированный для хранения реляционных таблиц на кластерах и предназначенный для систем Big Data, использующих MapReduce. Этот формат для записи больших данных появился в 2011 году на основании исследований и совместных усилий Facebook, Государственного университета Огайо и Института вычислительной техники Китайской академии наук [1]. Как устроен RCFile: структура, достоинства и недостатки Структура RCFile включает в себя формат хранения данных, методы сжатия и оптимизации чтения информации. Он способен удовлетворить все четыре требования к размещению данных [1]: быстрая загрузка данных; оперативная обработка запросов; эффективное использование дискового пространства хранения; высокая адаптивность к динамическим шаблонам доступа к данным. В формате RCFile данные сперва разделены на группы строк, внутри которых информация хранится в колоночном виде. Благодаря горизонтально-вертикальному разделению Далее …

Samza

Apache Samza, Апач Самза, Big Data, Большие данные, архитектура, обработка данных, Spark, Hadoop, Kafka

Apache Samza (Самза) – это асинхронная вычислительная Big Data среда с открытым исходным кодом для распределенных потоковых вычислений практически в реальном времени, разработанная в 2013 году в соцсети LinkedIn на языках Scala и Java. Проектом верхнего уровня Apache Software Foundation Самза стала в 2014 году [1]. Samza vs Apache Kafka Streams: сходства и различия Apache Samza часто сравнивают с Kafka Streams. На самом деле, эти продукты очень похожи между собой [2]: оба решения созданы одними и теми же разработчиками, которые внедрили Samza в LinkedIn, а затем основали компанию Confluent, где и была написана Kafka Streams; обе технологии тесно связаны с Kafka – они получают оттуда необработанные данные, производят вычисления и затем возвращают обработанные данные обратно; низкая задержка обработки данных (low Далее …

SEMMA

SEMMA, Data Mining, обработка данных, CRISP-DM, анализ данных, стандарты ИАД

SEMMA (аббревиатура от английских слов Sample, Explore, Modify, Model и Assess) – общая методология и последовательность шагов интеллектуального анализа данных (Data Mining), предложенная американской компанией SAS, одним из крупнейших производителей программного обеспечения для статистики и бизнес-аналитики, для своих продуктов [1].  Зачем нужен стандарт SEMMA В отличие от другого широко используемого стандарта Data Mining, CRISP-DM, SEMMA фокусируется на задачах моделирования, не затрагивая бизнес-аспекты. Тем не менее, этот стандарт позиционируется как унифицированный межотраслевой подход к итеративному процессу интеллектуального анализа данных [1]. Эта методология не навязывает каких-либо жестких правил, однако, используя ее разработчик располагает научными методами построения концепции проекта, его реализации и оценки результатов проектирования [2].Подход SEMMA сочетает структурированность процесса Data Mining и логическую организацию инструментальных средств для поддержки каждой операции обработки и анализу Далее …

Sequence

файл последовательностей, формат Sequence File, Big Data, Большие данные, архитектура, обработка данных, Hadoop

Sequence File (файл последовательностей) – это двоичный формат для хранения Big Data в виде сериализованных пар ключ/значение в экосистеме Apache Hadoop, позволяющий разбивать файл на участки (порции) при сжатии. Это обеспечивает параллелизм при выполнении задач MapReduce, т.к. разные порции одного файла могут быть распакованы и использованы независимо друг от друга [1]. Наряду с Apache Avro, Sequence File считается линейно-ориентированным (строковым) форматом Big Data, в отличие от колоночных (столбцовых) форматов (RCFile, Apache ORC и Parquet). Структура Sequence-файла Sequence File состоит из заголовка, за которым следует одна или несколько записей. Заголовок файла последовательности (Sequence File Header) имеет следующую структуру: первые 3 байта заголовка Sequence-файла занимают символы «SEQ», что идентифицирует файл последовательности. Далее следует 1 байт, представляющий фактический номер версии (например, SEQ4 или Далее …

Spark

Big Data, Большие данные, архитектура, обработка данных, Spark, Hadoop, Kafka

Apache Spark – это Big Data фреймворк с открытым исходным кодом для распределённой пакетной и потоковой обработки неструктурированных и слабоструктурированных данных, входящий в экосистему проектов Hadoop [1]. История появления Спарк и сравнение с Apache Hadoop Основным автором Apache Spark считается Матей Захария (Matei Zaharia), румынско-канадский учёный в области информатики. Он начал работу над проектом в 2009 году, будучи аспирантом Университета Калифорнии в Беркли. В 2010 году проект опубликован под лицензией BSD, в 2013 году передан фонду Apache Software Foundation и переведён на лицензию Apache 2.0, а в 2014 году принят в число проектов верхнего уровня Apache. Изначально Спарк написан на Scala, затем была добавлена существенная часть кода на Java, что позволяет разрабатывать распределенные приложения непосредственно на этом языке программирования [1]. Далее …

Storm

Apache Storm, Big Data, Большие данные, архитектура, обработка данных, Spark, Hadoop, Kafka

Apache Storm (Сторм, Шторм) – это Big Data фреймворк с открытым исходным кодом для распределенных потоковых вычислений в реальном времени, разработанный на языке программирования Clojure. Изначально созданный Натаном Марцем и командой из BackType, этот проект был открыт с помощью исходного кода, приобретенного Twitter. Первый релиз состоялся 17 сентября 2011 года, а с сентября 2014 Storm стал проектом верхнего уровня Apache Software Foundation [1]. Как устроен Apache Storm: архитектура и принцип работы Кластер Apache Storm, работающий по принципу master-slave, состоит из следующих компонентов [1]: Ведущий узел (master) с запущенной системной службой (демоном) Nimbus, который назначает задачи машинам и отслеживает их производительность. Рабочие узлы (worker nodes), на каждом из которых запущен демон Supervisor (супервизор), который назначает задачи (task) другим рабочим узлам и Далее …

Tarantool

Big Data, Большие данные, обработка данных, архитектура, SQL, Tarantool, Greenplum? Arenadata

Tarantool – open-source продукт российского происхождения, сервер приложений на языке Lua, интегрированный с резидентной NoSQL-СУБД, которая содержит все обрабатываемые данные и индексы в оперативной памяти, а также включает быстрый движок для работы с постоянным хранилищем (жесткие диски). Благодаря своим архитектурным особенностям, Тарантул позволяет быстро обрабатывать большие объемы данных, поэтому эта СУБД широко применяется в различных Big Data проектах [1]. История разработки и развития Отметим наиболее значимые вехи развития проекта Tarantool [2]: 2008 год – отечественная компания Mail.ru Group начала разработку программного продукта для своих внутренних нужд и собственных сервисов; 2014 год – участие системы в первом официальном независимом тесте на производительности NoSQL-СУБД, который проводили исследователи португальских университетов. Вместе с Tarantool также тестировались и другие популярные Big Data системы класса NoSQL: Cassandra, Apache Далее …

Мультиколлинеарность

Мультиколлинеарность — корреляция независимых переменных [1], которая затрудняет оценку и анализ общего результата [2]. Когда независимые переменные коррелируют друг с другом, говорят о возникновении мультиколлинеарности. В машинном обучении (Machine Learning) мультиколлинеарность может стать причиной переобучаемости модели, что приведет к неверному результату [3]. Кроме того, избыточные коэффициенты увеличивают сложность модели машинного обучения, а значит, время ее тренировки возрастает. Еще мультиколлинеарность факторов плоха тем, что математическая модель регрессии содержит избыточные переменные, а это значит [4]: осложняется интерпретация параметров множественной регрессии как величин действия факторов, параметры регрессии теряют смысл и следует рассматривать другие переменные; оценки параметров ненадежны – получаются большие стандартные ошибки, которые меняются с изменением объема наблюдений, что делает модель регрессии непригодной для прогнозирования. Для оценки мультиколлинеарности используется матрица парных коэффициентов корреляции, у Далее …