Распределенное хранилище и распределенные вычисления так легко понять!
Распределенное хранилище и распределенные вычисления так легко понять!

Что такое распределенное хранилище и распределенные вычисления?

Эта статья объяснит вам это подробно~~

Оказывается, их так легко понять!

01

Распределенное хранилище больших данных

Файловая система Google GFS — это типичная распределенная файловая система и конкретная реализация распределенного хранилища. Сетевой диск, используемый в повседневной работе и жизни, также представляет собой типичную распределенную файловую систему.

На рисунке ниже показана базовая архитектура GFS.

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

Решением является использование распределенного кластера, который использует несколько узлов для формирования распределенной среды.

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

1. Как хранить огромные объемы данных

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

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

Основная логика распределенной файловой системы для хранения данных показана на рисунке ниже.

Данные будут разделены и храниться на разных узлах данных, чтобы обеспечить хранение больших объемов данных. Если предположить, что размер данных составляет 20 ГБ, а пространство для хранения каждого узла данных составляет всего 8 ГБ, данные не могут храниться на одном узле.

Но теперь таких узлов 3. Если предположить, что объем памяти каждого узла по-прежнему составляет 8 ГБ, то общий размер составит 24 ГБ. Данные объемом 20 ГБ могут храниться в распределенной файловой системе, состоящей из этих трех узлов.

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

Теоретически такое расширение может быть расширено до бесконечности, что позволит хранить огромные объемы данных. Если архитектура на приведенном выше рисунке сопоставлена ​​с распределенной файловой системой Hadoop HDFS, узлом данных является DataNode.

Здесь есть еще одна проблема — когда данные хранятся в распределенной файловой системе, они хранятся в блоках данных. Например, начиная с версии Hadoop 2.x, размер блока данных HDFS по умолчанию составляет 128 МБ.

намекать:

Блок данных представляет собой логическую единицу, а не физическую единицу. То есть 128 МБ блока данных не соответствуют фактическому физическому размеру данных.

Вот простой пример.

Предположим, что объем данных, подлежащих хранению, составляет 300 МБ, а для отдельного хранения используются блоки данных по 128 МБ. Данные будут разделены на 3 блока. Размер первых двух блоков составляет 128 МБ, что соответствует размеру блока данных HDFS по умолчанию, тогда как фактический размер третьего блока составляет 44 МБ, то есть занимаемое физическое пространство составляет 44 МБ. Однако логическое пространство, занимаемое третьим устройством, по-прежнему равно размеру блока данных. Если оно находится в HDFS, оно по-прежнему равно 128 МБ. Другими словами, третий блок данных не заполнен.

2. Как обеспечить безопасность данных

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

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

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

намекать:

Внедрение идеи избыточности данных решает проблему безопасности данных в распределенных файловых системах, но приведет к бесполезной трате места хранения.

В архитектуре HDFS помимо упомянутого ранее узла данных DataNode существуют NameNode и SecondaryNameNode.

HDFS — это архитектура «главный-подчиненный», главный узел — NameNode, а подчиненный узел — DataNode. Базовая архитектура HDFS показана на рисунке ниже.

02

Распределенные вычисления для больших данных

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

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

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

намекать:

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

Вычислительная модель MapReduce реализована в системе Hadoop. Hadoop — это платформа, реализованная на языке Java, поэтому программа MapReduce, разработанная на Hadoop, также является программой Java.

Как мы все знаем, MongoDB также поддерживает вычислительную модель MapReduce, а языком программирования в MongoDB является JavaScript, поэтому разработка программ MapReduce в MongoDB требует использования языка JavaScript.

Почему Google предложил вычислительную модель MapReduce? Его основная цель — решить проблему PageRank, то есть проблему ранжирования веб-страниц. Поэтому, прежде чем внедрять вычислительную модель MapReduce, необходимо ввести PageRank. Как поисковая система Google обладает мощными поисковыми возможностями.

Каждый результат поиска представляет собой веб-страницу HTML, а именно Page. Так как же определить порядок веб-страниц? Для этого необходимо присвоить каждой веб-странице оценку, то есть значение рейтинга. Чем больше значение рейтинга, тем выше соответствующая страница находится в результатах поиска. Простой пример PageRank показан ниже.

Этот пример начинается с4индивидуальныйHTMLвеб-страницы для отображения。Между веб-страницами вы можете передавать<a>пометить гиперссылку изиндивидуальный Веб-страница переходит на другуюиндивидуальныйвеб-страница。

Предположим, что ссылка веб-страницы 1 переходит на веб-страницу 2, веб-страницу 3 и веб-страницу 4; ссылка веб-страницы 2 переходит на веб-страницу 3, а ссылка веб-страницы 3 переходит на другие веб-страницы; .

Если 1 используется для указания того, что между веб-страницами существует связь перехода по ссылке, а 0 используется для обозначения отсутствия связи перехода по ссылке, а в строковых единицах может быть установлена ​​векторная матрица Google для представления связи перехода между веб-страницами. страницы. Полученная здесь векторная матрица будет матрицей 4×4. Путем расчета этой матрицы можно получить значение веса каждой веб-страницы, и это значение веса является значением ранга, тем самым ранжируя результаты веб-поиска.

Но в реальных ситуациях полученная векторная матрица Google очень огромна. Например, веб-сканеры извлекли 100 миллионов веб-страниц с веб-сайтов по всему миру и сохранили их в распределенной файловой системе, при этом между веб-страницами происходит переход по ссылкам. Созданная в это время векторная матрица Google будет огромной матрицей размером 100 миллионов × 100 миллионов. Такую огромную матрицу невозможно рассчитать на одном компьютере. Как решить проблему расчета этой огромной матрицы, будет ключом к PageRank. В контексте подобных проблем Google предложила вычислительную модель MapReduce.

Основная идея MapReduce на самом деле — всего 6 слов, то есть сначала разделить, а потом объединить. Таким образом, вычисления могут выполняться независимо от того, насколько велика результирующая векторная матрица. Процесс разделения называется «Карта», а процесс слияния — «Сокращение». Основной процесс обработки данных MapReduce показан на рисунке ниже.

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

  • Каждый компьютер вычисляет одну из небольших матриц и получает частичные результаты. Этот процесс называется «Карта», как показано сплошной линией на рисунке выше.
  • Выходной результат Map вычисляется дважды, чтобы получить результат большой матрицы. Этот процесс называется сокращением, как показано в пунктирном прямоугольнике на рисунке выше.

С помощью Map и уменьшить, независимо от того, насколько велика векторная матрица Google, можно вычислить окончательный результат. Этот метод расчета реализован в Hadoop с использованием языка Java, также эта идея позаимствована у Spark и Flink. Например, основной моделью данных в Spark является RDD, состоящая из разделов. Каждый раздел обрабатывается подчиненным узлом Spark Worker, тем самым реализуя распределенные вычисления.

Выходная информация журнала выполнения задач MapReduce в Hadoop показана на рисунке ниже.

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose