Базовые знания Hadoop и режим развертывания
Базовые знания Hadoop и режим развертывания

Краткое содержание статьи:

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

01Введение в Hadoop

1. Что такое Hadoop?

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

Hadoop в широком смысле относится ко всей технологической экосистеме Hadoop; в узком смысле Hadoop относится к трем ее основным компонентам, включая HDFS, YARN и MapReduce.

2. История развития Hadoop

Hadoop возник на основе платформы Lucene. Позже, чтобы решить проблемы сложного хранения и медленного извлечения больших данных, ее основатель использовал три основные идеи Google о больших данных и создал Nutch, который позже был выделен и включен в проект Apache. Хадуп. Поэтому не будет преувеличением сказать, что три идеи Google в области больших данных являются источником идей Hadoop. Этим трем основным идеям соответствуют три статьи соответственно:

  • Файловая система Google (соответствует HDFS)
  • MapReduce: упрощенная обработка данных в больших кластерах (соответствует MapReduce)
  • Bigtable: распределенная система хранения структурированных данных (соответствует HBase)

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

3. Версия дистрибутива Hadoop

В настоящее время Hadoop имеет три основных наиболее развитых дистрибутива: Apache, Cloudera (CDH) и Hortonworks (HDP). Все они имеют свои особенности:

  • Apache — самая оригинальная и базовая версия, а проект Hadoop также произошел от Apache. Он лучше всего подходит для обучения начального уровня, поэтому он также делает сообщество открытого исходного кода своей экосистемы наиболее активным. Однако, поскольку версии различных компонентов в его экосистеме относительно запутаны, будет больше зависимостей и конфликтов.
  • Cloudera была первой компанией, которая выпустила на рынок Hadoop, который обладает улучшенной совместимостью, безопасностью и стабильностью по сравнению с Apache Hadoop и широко используется в крупных интернет-компаниях. Однако его структура для установки кластеров не является открытым исходным кодом, и плата за коммерческие услуги взимается за каждый узел.
  • Компания Hortonworks разработала множество улучшенных функций и внедрила их в основную магистраль, что позволяет Apache Hadoop работать без сбоев на платформе Microsoft Windows, кроме того, ее документация стала лучше; Однако его разработка началась позже всех, его популярность невысока, установка и обновление более трудоемки, а стоимость услуг также взимается за каждый узел.

Наше введение основано на версии Apache.

4. Преимущества Hadoop

  • Высокая надежность:HadoopБазовый уровень поддерживает несколько копий данных.,Таким образом, даже если один из вычислительных элементов или хранилища Hadoop выйдет из строя,,Это не приведет к потере данных.
  • Высокая масштабируемость:Возможность распределять данные задачи между кластерами дешевых машин.,Легко масштабируется до тысяч узлов.
  • Эффективность:существоватьMapReduceпод мыслью,Hadoop работает параллельно,Может ускорить обработку задач.
  • Высокая отказоустойчивость:Возможность автоматического переназначения невыполненных задач。

5. Разница между Hadoop1.x и 2.x

В эпоху Hadoop1.x MapReduce в Hadoop одновременно обрабатывает операции бизнес-логики и планирование ресурсов и тесно связан. В эпоху Hadoop2.x был добавлен Yarn. Yarn отвечает только за планирование ресурсов, а MapReduce отвечает только за операции анализа. Hadoop3.x не имеет изменений в составе, но в ядро ​​Hadoop внесено множество существенных улучшений с точки зрения функциональности и производительности. Поскольку эта статья основана на последней версии 2.x, 2.10.1, версия 3.x будет подробно рассмотрена позже.

Рисунок 1-5-1. Разница между Hadoop1.x и 2.x.

02Основные компоненты Hadoop

В настоящее время Hadoop имеет множество компонентов, но в узком смысле Hadoop относится к трем его основным компонентам: HDFS, YARN и MapReduce.

1. HDFS (распределенная файловая система Hadoop)

HDFS (распределенная файловая система Hadoop) отвечает за хранение больших объемов данных. Это высокоотказоустойчивая система, которая может обнаруживать сбои оборудования и реагировать на них. Основные роли — NameNode, DataNode и SecondaryNameNode. HDFS использует архитектуру «главный/подчиненный». HDFS состоит из NameNode и определенного количества DataNodes.

Рисунок 2-1-1: Схема архитектуры HDFS

Рисунок 2-1-2: Этапы выполнения HDFS

1. NameNode (NN)

NN — это центральный сервер, отвечающий за управление пространством имен файловой системы и клиентским доступом к файлам. Он хранит метаданные файла, включая имя файла, структуру каталогов файлов, атрибуты файла (время создания, количество копий, разрешения) и т. д., а также список блоков каждого файла и адрес между блоками в списке. и DataNode, в котором находится блок.

Механизм отказоустойчивости NN очень важен, поскольку если машина, на которой работает NN, выйдет из строя, файлы в системе будут полностью потеряны. Hadoop предоставляет два механизма: 1) резервное копирование метаданных файловой системы, которые постоянно хранятся на локальном жестком диске. 2) запускает вспомогательный NN (SecondaryNameNode) для регулярного резервного копирования файла образа пространства имен (fsimage) и файла журнала операций (журнала редактирования); .

Как правило, максимальный размер одного кластера NN составляет 4000 единиц.

2. DataNode (DN)

DN обычно один на каждый узел и отвечает за управление хранилищем на узле, где он расположен. Фактически он используется для хранения данных в локальной файловой системе. Базовая единица DN — блок, значение по умолчанию — 128M. Копии данных будут сохранены в HDFS. Значение по умолчанию — 3, то есть один и тот же фрагмент данных будет храниться на трех разных DN для резервного копирования одновременно. Это количество копий можно установить, о чем будет сказано позже. конфигурация.

3. SecondaryNameNode (2NN)

2NN — это вспомогательный узел, используемый для синхронизации информации метаданных. Он помогает NN объединить fsimage и журнал редактирования (холодное резервное копирование) для решения проблемы чрезмерного журнала редактирования и потери информации об изменениях.

Рисунок 2-1-3: Принцип работы SecondaryNameNode

2. YARN (структура управления планированием ресурсов)

YARN (еще один переговорщик ресурсов) заменяет управление планированием ресурсов MapReduce в Hadoop1.x и обеспечивает унифицированное управление планированием ресурсов для приложений верхнего уровня (задачи Spark, Hive-MR и т. д.). После Hadoop2.x MapReduce работает только на нем. Пряжа. Чистая вычислительная структура.

Во всей системе планирования и управления ресурсами YARN ResourceManager выступает в роли главного, а NodeManager каждого узла выступает в качестве подчиненного. Компонент ResourceManager и NameNode HDFS развертываются на одном узле, а NodeManager, ApplicationMaster и контейнер YARN. (представляющий вычислительные ресурсы) и DataNode HDFS развертываются вместе.

Рисунок 2-2-1: Схема архитектуры YARN

1. ResourceManager (RM) – руководитель отдела

RM — это основной компонент YARN или главный узел YARN. Обычно он выделяется на главном узле и развертывается для обеспечения высокой доступности. Основная функция — обработка запроса на отправку задания клиента, мониторинг NodeManager, управление, распределение и планирование всех ресурсов (ЦП и памяти) в кластере, а также максимальный контроль над ресурсами в системе. Ее можно понимать как роль, аналогичную роли руководителя отдела.

В качестве координатора ресурсов RM имеет два основных компонента: планировщик и диспетчер приложений (AsM).

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

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

2. NodeManager (Нью-Мексико) — руководитель группы.

NM — это диспетчер ресурсов и задач на каждом дочернем узле или подчиненном узле YARN. С одной стороны, он будет сообщать RM об использовании ресурсов на этом узле и рабочем статусе каждого Контейнера посредством информации о пульсе, с другой стороны, он будет получать и обрабатывать команды от RM и Контейнера, запуская и останавливая его с помощью ApplicationMaster. Ее можно понимать как роль, аналогичную роли руководителя отдела.

Конкретный метод работы заключается в том, что NM запускает Контейнер, назначенный RM для ApplicationMaster, и Контейнер, представляющий ApplicationMaster, и контролирует рабочее состояние Контейнера.

При запуске Контейнера NM установит некоторые необходимые переменные среды и загрузит jar-пакеты и файлы, необходимые для запуска Контейнера, из HDFS в локальную систему, что представляет собой так называемую локализацию ресурсов. Когда все приготовления будут завершены, для запуска программы будет запущен сценарий, представляющий Контейнер. После запуска NM будет периодически контролировать ресурсы, занимаемые Контейнером. Если количество ресурсов, заявленное Контейнером, будет превышено, процесс, представленный Контейнером, будет завершен.

3. ApplicationMaster (AM) – менеджер проекта

Приложение соответствует АМ, и этот процесс выполняется на одном из узлов. В основном для того, чтобы само приложение могло подавать заявки на ресурсы из RM, сегментировать данные, связываться с NM для запуска или остановки задач, отслеживать состояние выполнения всех задач, а также повторно подавать заявки на ресурсы и перезапускать задачу в случае сбоя задачи (отказоустойчивость). функция). Ее можно понимать как роль менеджера проекта, аналогичную проекту под руководством руководителя группы.

Поскольку NM требует ресурсов для выполнения и мониторинга задач, приложение ресурсов требует связи с RM через AM для получения ресурсов. Другими словами, АМ играет роль посредника. Это одна из обязанностей менеджера проекта, которому часто приходится обращаться за ресурсами.

Если объяснить с более профессиональной точки зрения, AM отвечает за запрос контейнеров ресурсов от RM для NM для выполнения задач. Более конкретно, AM отвечает за заявку на ресурсы из планировщика, отслеживание использования этих ресурсов и мониторинг хода выполнения задач.

4. Контейнер — ресурсы проекта

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

YARN выделяет контейнер для каждой задачи, и задача может использовать только ресурсы, описанные в контейнере. Обратите внимание, что Contariner — это динамическая единица разделения ресурсов, и ресурсы изменяются в соответствии с фактическими требованиями приложения, что аналогично концепции Docker-контейнера.

3. MapReduce (инфраструктура распределенных вычислений)

MapReduce — это вычислительная модель, используемая для обработки больших объемов данных. Вычислительный процесс можно разделить на два этапа (по сути, три этапа), а именно «Карта» и «Сокращение».

Рисунок 2-3-1: Этапы выполнения MapReduce

Карта преобразует входной исходный набор данных в ключ-значение (пары ключ-значение), разбивает его на разные узлы для параллельного выполнения заданных вычислительных операций (таких как сортировка, агрегирование) и формирует промежуточный результат. Этот процесс операции вычисления называется. Map shuffle; Редукция параллельно выполняет сокращение, объединение и суммарную обработку всех значений одного и того же ключа в сгенерированных промежуточных результатах, а затем выводит новое значение ключа для получения окончательного результата. Этот процесс обработки одного и того же ключа. называется Уменьшить перемешивание. Видно, что между Map и уменьшить на самом деле есть еще один процесс, который должен организовать вывод карты и передать его в сокращение. Этот процесс представляет собой перемешивание операций Map и сокращения, требующих от нас определения соответствующего класса карты и сокращения. class сами, а Shuffle автоматически реализуется системой для нас.

Если говорить просто, то Map можно рассматривать как разбиение набора данных на разные узлы для параллельных вычислительных операций, а сокращение — как интеграцию результатов вычислений каждого узла для суммирования конечного результата (т. е. Map отвечает за расчет точек, и Уменьшить отвечает за общий расчет).

Рисунок 2-3-2: Принцип работы MapReduce

1.JobTracker и TaskTracker.

MapReduce запускается двумя основными фоновыми программами: JobTracker и TaskTracker.

(1) JobTracker

JobTracker — это главный узел. В кластере только один. Он отвечает за управление всеми заданиями, мониторинг задач/заданий, обработку ошибок и т. д., а также разбивает задачи на ряд задач и назначает их TaskTracker.

(2) TaskTracker

TaskTracker — это подчиненный узел, отвечающий за выполнение задач Map и сокращения. Он взаимодействует с JobTracker посредством периодических контрольных сигналов, уведомляя JobTracker о текущем состоянии работоспособности. Каждый тактовый сигнал включает количество доступных задач Map и сокращения, количество занятых и число. сведения о выполняемых задачах.

TaskTracker и DataNode работают на одном и том же компьютере, поэтому каждая физическая машина является одновременно вычислительным узлом и узлом хранения, а на каждом рабочем узле имеется только один TaskTracker.

2. Задача «Карта» и задача «Сокращение».

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

(1) Map Task

Каждая задача карты обрабатывает часть данных (InputSplit) из входного набора данных и записывает несколько сгенерированных фрагментов данных на локальный диск. Общий процесс расчета задачи «Карта» разделен на следующие пять этапов (последние три этапа — это перетасовка карт, упомянутая выше):

Рисунок 2-3-3: Механизм работы Map Task

  • Этап чтения: задача Map анализирует каждое значение ключа из входного InputSplit через RecordReader, написанное пользователем.
  • Этап карты: на этом этапе проанализированное значение ключа в основном передается функции карты(), написанной пользователем для обработки, и генерируется новое значение ключа.
  • Этап сбора: в функции map(), написанной пользователем, сначала вызывается Partitioner для вычисления раздела, которому принадлежит значение ключа, а значение ключа записывается в кольцевой буфер.
  • Стадия разгрузки: стадия «переполнения». Когда кольцевой буфер заполнен, задача карты запишет данные из буфера во временный файл на локальном диске. Перед записью в файл задача карты сначала обработает данные один раз. . Сортировать.
  • Фаза объединения: после завершения всей обработки данных задачи «Карта» задача «Карта» объединяет все сгенерированные временные файлы, чтобы гарантировать, что текущая задача «Карта» генерирует только один файл данных.

(2) Reduce Task

Задача сокращения удаленно копирует соответствующие фрагменты данных из каждой задачи карты и после группировки, агрегации и сокращения записывает результаты в HDFS как окончательный результат. Общий процесс расчета задачи сокращения также разделен на пять этапов (первые три этапа — это тасование сокращения, упомянутое выше):

Рисунок 2-3-4: Рабочий механизм уменьшения задачи

  • Этап копирования: Задача уменьшения удаленно копирует часть данных из каждой задачи карты, и для определенного фрагмента данных, если его размер превышает определенный порог, он записывается на диск, в противном случае он помещается непосредственно в память.
  • Фаза слияния: при удаленном копировании данных задача сокращения запускает два фоновых потока для объединения файлов в памяти и на диске, чтобы предотвратить чрезмерное использование памяти или слишком много файлов на диске.
  • Этап сортировки: согласно семантике MapReduce, входные данные функции сокращения(), написанные пользователем, представляют собой набор данных, агрегированных Key. Чтобы сгруппировать данные с одним и тем же ключом, Hadoop использует стратегию сортировки. Поскольку в каждой задаче сопоставления реализована частичная сортировка собственных результатов обработки, задаче сокращения необходимо объединить и отсортировать все данные только один раз.
  • Этап сокращения: на этом этапе задача сокращения передает каждый набор данных в функцию уменьшения(), написанную пользователем для обработки.
  • Фаза записи: функция уменьшения() записывает результаты вычислений в HDFS.

03Технологическая экосистема Hadoop

Hadoop в широком смысле относится ко всей технологической экосистеме, включая, помимо прочего, следующие компоненты:

Рисунок 3-1-1: Технологическая экосистема Hadoop

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

1. HBase: распределенная база данных

HBase — это база данных Hadoop. HBase — это распределенная, ориентированная на столбцы нереляционная база данных с открытым исходным кодом. Она отличается от обычных реляционных баз данных и подходит для хранения неструктурированных данных. HBase использует HDFS Hadoop в качестве системы хранения файлов и ZooKeeper в качестве инструмента координации, который очень подходит для чтения и записи больших данных в реальном времени.

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

2. Hive: инструмент хранилища данных

Hive — это мощный инструмент хранилища данных, основанный на Hadoop. Он может отображать файлы структурированных данных в таблицу базы данных и предоставлять простые функции SQL-запросов. Он может преобразовывать операторы SQL в задачи MapReduce для запуска. Его преимущество заключается в низкой стоимости обучения, простой статистике MapReduce можно быстро реализовать с помощью SQL-подобных операторов, и нет необходимости разрабатывать специальные приложения MapReduce. Он очень подходит для статистического анализа хранилищ данных.

3. Kafka: Распределенная система обмена сообщениями «публикация-подписка».

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

4. ZooKeeper: служба распределенной координации.

ZooKeeper — высокодоступная платформа распределенных сервисов, которая в основном используется для решения проблем согласованности систем приложений в распределенных кластерах. В распределенных системах, таких как Hadoop, HBase и Kafka, ZooKeeper может облегчить задачи координации. используется в качестве основного компонента. Типичные сценарии применения включают: реализацию высокой доступности NameNode для HDFS; реализацию высокой доступности HMaster для HBase. Число узлов развертывания ZooKeeper обычно нечетное.

5. Spark: среда распределенных вычислений в памяти.

Spark — это микро-пакетная распределенная среда быстрых вычислений, которая может хранить выходные результаты в памяти. Она может выполнять пакетную и интерактивную обработку, поддерживает несколько языков (Java, Python, Scala, R и т. д.) и имеет богатый API. преимущества. Оно заключается в возможности одновременного выполнения вычислений в автономном режиме и в реальном времени.

1. Spark SQL

Модуль в Spark, который обрабатывает структурированные данные и может использовать SQL-подобные инструкции для программирования Spark. Spark SQL поддерживает множество типов структурированных источников данных и может пропустить сложный процесс чтения и легко читать объекты Row из различных источников данных. Эти источники данных включают таблицы Hive, файлы JSON и Parquet и т. д.

2. Spark Streaming

Создан для обработки потоков данных, аналогичный Storm (квази-реальном времени). Его принцип заключается в разделении полученного потока данных на множество небольших пакетов (батчей), а затем в пакетной обработке вывода, что называется микро-пакетной обработкой (micro-batch обрабатывать). не соответствует квазиреальному времени), а процесс его обработки и вычислений выполняется в памяти, что намного более эффективно, чем автономная пакетная обработка MapReduce, требующая использования дискового пространства HDFS:

Рисунок 3-5-1: Потоковая передача Spark

Источником данных Spark Streaming может быть Kafka, Flume и т. д. В процессе обработки потока библиотека MLib может использоваться для выполнения некоторых моделей машинного обучения и других работ:

Рисунок 3-5-2: Потоковая передача Spark

3. Spark MLib

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

4. Spark GraphX

Saprk — это среда обработки распределенных графов (графа атрибутов, социального графа, ориентированного графа, неориентированного графа и т. д.), в основном используемая для графоцентрированных вычислений и распределенных вычислений. Он основан на платформе Spark и предоставляет простые, удобные и богатые интерфейсы для графовых вычислений и анализа графов, что значительно облегчает потребность в распределенной обработке графов.

04Режим развертывания Hadoop

Для Hadoop существует четыре режима развертывания: локальный режим, псевдораспределенный режим, полностью распределенный режим и полностью распределенный режим высокой доступности.

1. Характеристики каждой модели развертывания Hadoop

1. Локальный (автономный) режим

Также известен как независимый режим и автономный режим. В этом режиме нет необходимости запускать какие-либо демоны, и все программы выполняются на одной JVM на машине. Очень удобно отлаживать программу MapReduce кластера Hadoop в локальном режиме, поэтому в целом этот режим подходит для локальной отладки во время быстрой установки и опыта работы с Hadoop, а также на этапе разработки.

2. Псевдораспределенный режим

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

3. Полностью распределенный режим

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

4. Высокодоступный полностью распределенный режим

Высокая доступность высокой доступности — это механизм, представленный только в Hadoop 2.x для решения проблемы единой точки отказа Hadoop. Существует два основных метода развертывания: метод NFS (сетевая файловая система) и метод QJM (менеджер журнала кворума). Более часто используемый метод — QJM, который обладает большей стабильностью. В реальной работе построение кластера Hadoop в производственной среде обычно требует развертывания высокой доступности.

2. Различия между режимами развертывания Hadoop

Различные режимы развертывания Hadoop в основном различаются NameNode и DataNode HDFS, а также ResourceManager, NodeManager, AppMaster и другими модулями YARN, работающими на нескольких процессах JVM и нескольких машинных узлах:

Режим развертывания

Количество процессов JVM, занимаемых каждым модулем

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

локальный режим

1

1

Псевдораспределенный режим

Н

1

Полностью распределенный режим

Н

Н

HAПолностью распределенный режим

Н

Н

Предыдущая статья:Создание и установка среды Hadoop

Следующая статья: Конфигурация развертывания Hadoop и отладка работы, так что следите за обновлениями!

boy illustration
[Весна] Введение и базовое использование AOP в Spring, SpringBoot использует AOP.
boy illustration
Чтобы начать работу с рабочим процессом Flowable, этой статьи достаточно.
boy illustration
Байтовое интервью: как решить проблему с задержкой сообщений MQ?
boy illustration
ASP.NET Core использует функциональные переключатели для управления реализацией доступа по маршрутизации.
boy illustration
[Проблема] Решение Невозможно подключиться к Redis; вложенное исключение — io.lettuce.core.RedisConnectionException.
boy illustration
От теории к практике: проектирование чистой архитектуры в проектах Go
boy illustration
Решение проблемы искажения китайских символов при чтении файлов Net Core.
boy illustration
Реализация легких независимых конвейеров с использованием Brighter
boy illustration
Как удалить и вернуть указанную пару ключ-значение из ассоциативного массива в PHP
boy illustration
Feiniu fnos использует Docker для развертывания учебного пособия по AList
boy illustration
Принципы и практика использования многопоточности в различных версиях .NET.
boy illustration
Как использовать PaddleOCRSharp в рамках .NET
boy illustration
CRUD используется уже два или три года. Как читать исходный код Spring?
boy illustration
Устраните проблему совместимости между версией Spring Boot и Gradle Java: возникла проблема при настройке корневого проекта «demo1» > Не удалось.
boy illustration
Научите вас шаг за шагом, как настроить Nginx.
boy illustration
Это руководство — все, что вам нужно для руководства по автономному развертыванию сервера для проектов Python уровня няни (рекомендуемый сборник).
boy illustration
Не удалось запустить docker.service — Подробное объяснение идеального решения ️
boy illustration
Настройка файлового сервера Samba в системе Linux Centos. Анализ NetBIOS (супер подробно)
boy illustration
Как настроить метод ssh в Git, как получить и отправить код через метод ssh
boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.