озеро данных — это тип хранилищеданных системы естественного/необработанного формата или хранилища.,Обычно объектный блок или файл。озеро Данные обычно представляют собой единое хранилище полного объема данных в бизнесе. Полные данные включают копии необработанных данных, сгенерированных исходной системой, а также преобразованные данные, созданные для различных задач, включая составление отчетов, визуализацию, расширенную аналитику и машинное обучение.
озеро данных можно рассматривать как новое поколение инфраструктуры больших данных.
Первый этап: инфраструктура автономной обработки данных в лице Hadoop.
Hadoop — это инфраструктура пакетной обработки данных с HDFS в качестве основного хранилища и MapReduce (MR) в качестве базовой вычислительной модели.
Этап 2: Лямбда-архитектура
Поскольку возможности обработки данных и требования к обработке продолжают меняться, все больше и больше пользователей обнаруживают, что независимо от того, насколько повышается производительность в режиме пакетной обработки, он не может удовлетворить некоторые сценарии обработки с высокими требованиями к потоковым вычислениям, например. как Storm, Spark Streaming, Flink и т. д.
LambdaАрхитектураиз Основная концепция заключается в“Интегрированный поток и партия”,Как показано на картинке выше,Весь поток данных поступает в платформу слева направо. После выхода на платформу она разделяется на две части.,Частично в пакетном режиме,Некоторые применяют модель потоковых вычислений. Независимо от режима расчета,Окончательные результаты обработки передаются приложению через сервисный уровень.,Обеспечьте постоянный доступ.
Третий этап: Каппа архитектура
Архитектура Lambda решает проблему согласованности считываемых приложением данных, но звено обработки «разделение потока-пакета» увеличивает сложность исследований и разработок. Поэтому некоторые люди задаются вопросом, можно ли использовать одну систему для решения всех проблем. В настоящее время более популярный подход — сделать это на основе потоковых вычислений. Естественно распределенные характеристики потоковых вычислений призваны обеспечить лучшую масштабируемость. Повышая параллелизм потоковых вычислений и увеличивая «временное окно» потоковой передачи данных, мы можем унифицировать два вычислительных режима — пакетную обработку и потоковую обработку.
Сегодняшнее озеро все данные интегрированы в озеро и хранилище в сочетании с озером. Преимущества данных и хранилищ данных напрямую реализуют строгое управление данными из хранилища данных в недорогую распределенную хранилище.
Каждая запись генерирует новый файл метаданных.,Запись изменений。Разделданныесуществоватьupdateчас,Не удаляйте старые данные,Обеспечить сосуществование старого и нового. Конкретный путь к файлу в хранилище данных.,не только папки с разделами
Реализация: каждая операция записи,Создайтеиндивидуальныйновыйизjsonдокумент,Назван с увеличением номера версии,Запишите это новое дополнение/удалитьиздокумент;В любое времяNиндивидуальныйjson,сделать агрегацию,Полные записииз Разделдокументинформация;использоватьcheckpointЗапишите последнюю агрегациюизномер версии
озеро данныхсерединаизACID
Процесс записи: сначала напишите файл данных паркета, затем напишите файл метаданных json.
Как обеспечить атомарность?
Нужно начать с видимости пользователей,использовать户只会读取以номер версииданныеимяизjsonдокумент,Читайте по максимуму каждый разизномер версии作为данныенаборизстатус-кво。новыйизписать Законченныйparquetначну писать позжеjsonдокумент,делатьиспользоватьhashпара значенийjsonдокументимя。доjsonдокументсодержаниеписатьполный,выгодаиспользоватьhdfsизrenameIfAbsentСпособность будетhashценитьдокумент Замените имена цифрамидокументимя,До сих пор,commmitЗаканчивать,Новые операции чтения будут иметь числовое имя файла, соответствующее последней версии.
Таким образом конфликт чтения-записи был разрешен.,новыйизписатьпока неcommit,В противном случае пользователь не сможет прочитать раздел, который он читает;,Обновлено другим автором,данные не будут заменены,Но сосуществование.
updateПроцесс записи
Давайте обсудим следующие ситуации:
Add/Drop/Rename
важный:использовать Пользователь не читает напрямуюparquetдокументсам,Вместо этого они считываются через интерфейс озера данных.,нравитьсяDataset<Row> ds = simpleDataLake.read(mytable).option(date=2020-01-01)
。озеро данных Внутри он будет читать и должен читатьизparquet,исуществоватьschemaдля дальнейшей обработки
ID устанавливает взаимно однозначное соответствие между именами столбцов данных и метаданных.,Существуют следующие ситуации:
Приходится выбирать исходя из реальной ситуации. В краткосрочной перспективе: у каждого проекта есть свои функции:
В долгосрочной перспективе озеро данных неизбежно заменит Hive и станет стандартом формата таблиц в HDFS. Прежде чем сделать выбор, задайте себе четыре вопроса.
озеро Последним состоянием развития данных является интеграция озер и складов. data обеспечивает ACID при низкой стоимости хранилища Transaction、Schema evolution、 Time Расширенные функции, такие как путешествия.