Диаграмма для анализа базовой архитектуры корпоративной платформы больших данных.

структура данных

Давайте сначала посмотрим на эту картинку. Это схема архитектуры платформы больших данных, используемая компанией. Большинство компаний должны быть похожими:

一张图剖析企业大数据平台的核心架构

Исходя из общей схемы архитектуры больших данных, основными уровнями больших данных должны быть: уровень сбора данных, уровень хранения и анализа данных, уровень обмена данными и уровень приложения данных.

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

1. Сбор данных

Задача сбора данных состоит в том, чтобы собрать и сохранить данные из различных источников данных в хранилище данных, во время чего может быть выполнена некоторая простая очистка.

Существует много типов источников данных:

  • Лог сайта:

В качестве интернет-индустрии журналы веб-сайта составляют наибольшую долю, и журналы веб-сайтов хранятся на нескольких серверах журналов веб-сайта. Как правило, Alume Agent развертывается на каждом сервере журналов веб-сайта, чтобы собрать журналы сайта в режиме реального времени и хранить их на HDFS;

  • База данных бизнеса:

Существуют также различные типы бизнес-баз данных, в том числе Mysql, Oracle, SqlServer и т. д. В настоящее время нам срочно нужен инструмент, который может синхронизировать данные из различных баз данных с HDFS.Sqoop — это одно, но Sqoop слишком тяжелый, и независимо от размер данных, MapReduce должен быть запущен для выполнения, и каждая машина в кластере Hadoop должна иметь доступ к бизнес-базе данных, для этого сценария DataX с открытым исходным кодом Taobao является хорошим решением.Вы можете выполнять вторичную разработку на основе на DataX, что может быть очень хорошим решением.

一张图剖析企业大数据平台的核心架构

Конечно, Flume также может синхронизировать данные из базы данных в HDFS в режиме реального времени посредством настройки и разработки.

  • Источник данных с FTP/Http:

Возможно, что данные, предоставляемые некоторыми партнерами, необходимо регулярно получать через Ftp/Http и т. д. DataX также может удовлетворить это требование;

  • Другие источники данных:

Например, некоторые введенные вручную данные можно заполнить только с помощью интерфейса или небольшой программы;

2. Хранение и анализ данных

Несомненно, HDFS является наиболее совершенным решением для хранения данных для хранилища/платформы данных в среде больших данных.

Автономный анализ и расчет данных, то есть та часть, которая не требует высокой производительности в реальном времени, на мой взгляд, Hive по-прежнему является первым выбором, богатые типы данных, встроенные функции; формат хранения файлов ORC с очень высоким сжатием соотношение, очень удобная поддержка SQL, что делает статистический анализ Hive на основе структурированных данных гораздо более эффективным, чем MapReduce, один SQL может выполнить требования, разработка MR может потребовать сотни строк кода;

一张图剖析企业大数据平台的核心架构

Конечно, использование среды Hadoop, естественно, также предоставляет интерфейс MapReduce.Если вам действительно нравится разрабатывать Java или вы не знакомы с SQL, вы также можете использовать MapReduce для анализа и вычислений;

Spark был очень популярен в последние два года.После практики его производительность действительно намного лучше, чем MapReduce, и его сочетание с Hive и Yarn становится все лучше и лучше.Поэтому Spark и SparkSQL необходимо поддерживать для анализа и расчетов. Поскольку Hadoop Yarn уже существует, на самом деле очень просто использовать Spark без отдельного развертывания кластера Spark.

3. Обмен данными

Совместное использование данных здесь фактически относится к месту, где хранятся результаты предыдущего анализа и расчета данных, которые на самом деле являются реляционными базами данных и базами данных NOSQL;

Предыдущие результаты анализа и расчетов с использованием Hive, MR, Spark и SparkSQL все еще находятся в HDFS, но для большинства предприятий и приложений невозможно получать данные непосредственно из HDFS, поэтому необходимо место для обмена данными, чтобы каждый бизнес и продукт может быть легко Уровень сбора данных прямо противоположен уровню сбора данных для HDFS.Здесь необходим инструмент для синхронизации данных из HDFS с другими целевыми источниками данных.Точно так же DataX также может удовлетворить.

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

4. Применение данных

1. Бизнес-продукты (CRM, ERP и т. д.)

Данные, используемые бизнес-продуктами, уже существуют на уровне совместного использования данных, и к ним можно получить доступ непосредственно из уровня совместного использования данных;

2. Отчеты (FineReport, бизнес-отчеты)

Для одного и того же бизнес-продукта данные, используемые в отчете, как правило, уже статистически обобщены и хранятся на уровне обмена данными;

3. Специальный запрос

Есть много пользователей специальных запросов, которые могут быть разработчиками данных, операторами веб-сайтов и продуктов, аналитиками данных и даже руководителями отделов, всем из которых необходимо запрашивать данные на специальной основе;

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

Специальные запросы обычно выполняются через SQL. Самая большая трудность — скорость ответа. Использование Hive немного медленное. Вы можете использовать SparkSQL, который имеет гораздо более высокую скорость ответа, чем Hive, и хорошо совместим с Hive.

Конечно, вы также можете использовать Impala, если вас не волнует еще один фреймворк в платформе.

4. ОЛАП

В настоящее время многие инструменты OLAP не могут поддерживать прямое получение данных из HDFS.Они выполняют OLAP, синхронизируя необходимые данные с реляционной базой данных, но если объем данных огромен, реляционная база данных, очевидно, не может;

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

5. Другие интерфейсы данных

Этот тип интерфейса является общим и настраиваемым. Например, интерфейс для получения пользовательских атрибутов из Redis является универсальным, и все компании могут вызывать этот интерфейс для получения пользовательских атрибутов.

5. Расчет в реальном времени

У предприятий сейчас все больше и больше потребностей в хранилищах данных в реальном времени, таких как:

  • Понимание общего трафика сайта в режиме реального времени;
  • Получите экспозицию и нажмите на рекламу в режиме реального времени;
  • В условиях больших объемов данных практически невозможно полагаться на традиционные базы данных и традиционные методы реализации.То, что необходимо, — это распределенная, высокопроизводительная, с малой задержкой и высоконадежная среда вычислений в реальном времени;
  • Storm относительно зрел в этой области, но я выбираю Spark Streaming, причина очень проста, я не хочу внедрять в платформу еще один фреймворк
  • Кроме того, Spark Streaming имеет немного более высокую задержку, чем Storm, которую можно игнорировать для наших нужд.

В настоящее время мы используем Spark Streaming для получения статистики трафика веб-сайта в реальном времени и статистики рекламных эффектов в реальном времени.

Метод также очень прост: Flume собирает журналы веб-сайтов и журналы рекламы на внешнем сервере журналов и отправляет их в Spark Streaming в режиме реального времени.Spark Streaming дополняет статистику, сохраняет данные в Redis и получает услуги в режиме реального времени. путем доступа к Redis.

6. Планирование задач и мониторинг

В хранилище данных/платформе данных существуют различные программы и задачи, такие как: задачи сбора данных, задачи синхронизации данных, задачи анализа данных и т.д.;

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

Для этого требуется очень полная система планирования задач и мониторинга.Как центр хранилища данных/платформы данных, он отвечает за планирование и мониторинг распределения и выполнения всех задач.