Хранилище данных на основе Hadoop

Большое количество данных

1 Что такое хранилище данных

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

  • типичное приложение:

    • генерация отчета
    • анализ данных
    • сбор данных
  • Другие возможности хранилища данных

    • Очень большой объем данных (выше ТБ)
    • это новое приложение базы данных
    • Меньше пользователей
  • Коммерческое хранилище данных

    • Типичные представители: db2, teradata, vertica
    • Дорого, и объем поддерживаемых данных обычно составляет ТБ или меньше.
  • Хранилище данных в эпоху больших данных

    • Очень большой объем данных
    • Важны масштабируемость и отказоустойчивость
    • соображения стоимости

Если вы не понимаете основных концепций хранилища данных, вы можете обратиться к предыдущему«Посмотрите на хранилище данных».Эта статья.

2 Базовая архитектура хранилища данных Hadoop

  • технические средства

    • Обычно Hive используется как хранилище данных
      • Вычислительная масштабируемость для проектирования очень больших наборов данных
      • Поддержка запросов HQL — простота и низкая стоимость обучения
      • Единое управление метаданными
  • Основные характеристики

    • Поддержка массивных данных
    • Многомерный анализ данных
    • Меньше пользователей
    • высокая задержка данных

2.1 Хранилища данных на основе Hadoop: первое издание

  • преимущество

    • Соответствует основным требованиям хранилища данных
    • Способность обрабатывать большие объемы данных
    • Отличная масштабируемость системы и отказоустойчивость
  • недостаток

    • Низкая производительность и низкая производительность в реальном времени

2.2 Хранилища данных на основе Hadoop: второе издание

  • Улучшать

    • Повышение производительности запросов с помощью системы MPP (Presto)
  • преимущество

    • Соответствует основным требованиям хранилища данных
    • Способность обрабатывать большие объемы данных
    • Отличная масштабируемость системы и отказоустойчивость
    • лучше в реальном времени
  • недостаток

    • Высокая задержка данных (данные от генерации до хранения, до запроса, весь цикл длинный)

2.3 Хранилище данных на основе Hadoop: третья редакция (добавление конвейера в реальном времени)

  • Улучшать

    • Уменьшите задержку данных с помощью системы Spark Streaming
  • преимущество

    • Соответствует основным требованиям хранилища данных
    • Способность обрабатывать большие объемы данных
    • Отличная масштабируемость системы и отказоустойчивость
    • лучше в реальном времени
    • Низкая задержка данных

3 Конкретные примеры хранилища данных

Система отчетности веб-сайта

  • Основная роль

    • Формировать отчеты в соответствии с бизнес-требованиями
    • Отчеты могут быть созданы в режиме реального времени или по дням
  • шкала данных

    • Объем данных: уровень ТБ
    • Количество столов: 100+
  • Подписчики

    • около десятков

3.1 Сбор данных

3.2 ETL

  • ETL

    • Extract, Transform, Load
    • Может быть реализовано с помощью MapReduce/Spark/Pig
    • Формат хранения: хранение строк и хранение столбцов
  • хранилище строк против хранилища столбцов

Как создать таблицу ORC со сжатием

  • Формат журнала после ETL (текстовый формат) следующий:

  • Временная таблица (текстовый формат) определяется следующим образом:
	CREATE EXTERNAL TABLE tmp_logs (
		domain_id INT,
		log_time STRING,
		log_date STRING,
		log_type INT,
		uin BIGINT
	)
	ROW FORMAT DELIMITED
	FIELDS TERMINATED BY ','
	STORED AS TEXTFILE
	LOCATION '/user/hivetest/logs';
  • Импортируйте данные во временную таблицу tmp_logs:LOAD DATA INPATH '/nginx/logs/2016011206' OVERWRITE INTO TABLE tmp_logs;

  • Импортируйте данные из временной таблицы в таблицу формата orc:

	CREATE TABLE logs (
		domain_id INT,
		log_time STRING,
		log_date STRING,
		log_type INT,
		uin BIGINT
	)
	PARTITION BY(log_time STRING)
	STORED AS ORC
	tblproperties("orc.compress"="SNAPPY");

	INSERT INTO TABLE logs PARTITION(dt='2016-01-12-06') SELECT * FROM tmp_logs;
  • алгоритм сжатия

  • Запрос
	SELECT domain_id, sum(log_type) FROM logs WHERE
	log_time>'2016-01-12-06' GROUP BY domain_id;

3.3 Параметризованные отчеты и визуализация

  • Параметрический отчет

    • Генерация SQL в соответствии с пользовательскими требованиями к данным
  • инструмент визуализации

    • Echarts: echarts.baidu.com/
    • D3.js: d3js.org/
    • Tableau: коммерческое программное обеспечение для визуализации

4 Summary

  • Преимущества построения хранилища данных на базе Hadoop

    • бесплатно с открытым исходным кодом
    • Поддержка массивных данных
    • Периферийные инструменты созрели
  • Процесс построения хранилища данных на базе Hadoop

    • сбор информации
    • ETL данных
    • Параметрическая отчетность и визуализация