0925-Планирование кучи NameNode
0925-Планирование кучи NameNode

Все процессы Hadoop выполняются на виртуальной машине Java (JVM), а каждый демон-процесс выполняется на собственной JVM на узле кластера. Вообще говоря, HDFS производственного кластера будет настроена с NameNode HA, то есть есть две роли NameNode, и каждый NameNode использует свою собственную JVM. Оценка кучи NameNode JVM — это техническая работа. В этой статье в основном представлены соответствующие знания. Кроме того, куча NameNode в основном определяется количеством каталогов, файлов и блоков в HDFS. Для обеспечения стабильности и максимальной производительности HDFS обычно рекомендуется следующее. количество файлов в HDFS не должно превышать 300 миллионов.

1 переменная среды для размера кучи NameNode.

Мы можем настроить HADOOP_HEAPSIZE и HADOOP_NAMENODE_OPTS чтобы отрегулировать значение NameNode Куча памятиразмер。HADOOP_HEAPSIZE установить все Службы Hadoop (такие как HDFS, YARN и MapReduce) JVM Размер кучи。HADOOP_HEAPSIZEПреобразование целочисленного значения в максимальное Память (Xmx) Параметры, переданные в JVM, например:

Язык кода:javascript
копировать
HADOOP_HEAPSIZE=1024

HADOOP_NAMENODE_OPTSдаNameNodeсобственная конфигурация,нуждаться устанавливает все флаги JVM, которые необходимо указать,HADOOP_NAMENODE_OPTSпокроетNameNodeизHADOOP_HEAPSIZE Значение Xmx, например:

Язык кода:javascript
копировать
HADOOP_NAMENODE_OPTS=-Xms1024m -Xmx1024m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:+PrintTenuringDistribution -XX:OnOutOfMemoryError={{AGENT_COMMON_DIR}}/killparent.sh

HADOOP_NAMENODE_OPTS и HADOOP_HEAPSIZE хранятся в /etc/hadoop/conf/hadoop-env.sh середина.

2 Мониторинг использования кучи памяти

Существует несколько методов мониторинга использования кучи: Cloudera Manager, веб-интерфейс NameNode или командная строка.

  • • Cloudera Менеджер: Найдите Куча из графа NameNode. Диаграммы, используемые памятью, или создайте свои собственные:
Язык кода:javascript
копировать
select jvm_max_memory_mb, jvm_heap_used_mb where roleType="NameNode"
  • • Веб-интерфейс NameNode: прокрутите вниз до раздела «Сводка» и найдите «Использованная куча памяти».
  • • Командная строка: создать дамп кучи.

3 файла и каталога

Сохранение метаданных HDFS достигается за счет файлов fsimage и файлов редактирования.,Не пытайтесь изменять каталоги или файлы метаданных.,Изменения могут привести к HDFS Простои или даже безвозвратная потеря данных.

1.fsimage

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

2.edits file

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

4 Дисковое пространство и пространство имен

HDFS Блок по умолчанию size(dfs.blocksize) для 128 MB,NameNode Каждый объект пространства имен на 150 байты. существовать DataNode Пространство, занимаемое файлом данных, — это фактический размер файла, а не количество блоков. размер, чтобы занять место. Например, файл размером 192 МБ занимает 192 МБ дискового пространства, а не целое кратное размеру блока. Использовать размер блока по умолчанию 128 МБ, файл размером 192 МБ будет разделен на два блочных файла, один 128 MB файл и 64 MB документ. В NameNode пространство имен измеряется количеством файлов и блоков. Или этот файл 192BM, который состоит из трех пространств имен объекта (1 файлы inode + 2 блоков) и потребляет примерно 450 байты памяти.

Большие файлы обычно разбиваются на меньшее количество блоков, поэтому они потребляют больше памяти, чем маленькие файлы. один 128 MB Файл данных состоит из NameNode Два объекта пространства имен представляют (1 файлы inode + 1 блоков), что потребляет примерно 300 байты памяти. Для сравнения: 128 размер для 1 MB Файл состоит из 256 объекты пространства имен (128 файлы inode + 128 блоков) означает, что он потребляет примерно 38,400 bytes Память Итак, для Память управление и данные. оптимизация местоположения, лучшее разделение размер должен быть блочным Целое число, кратное размеру.

По умолчанию Клаудера Manager дляза сотню Десять Тысячный блок выделяет максимальное пространство в куче 1 ГБ, фактическое количество нуждаться зависит от вашей рабочей нагрузки, особенно от количества файлов, каталогов и блоков, созданных в каждом пространстве имен. Cloudera рекомендует каждые 100 Десять тысячblockиспользовать1GBизNameNodeКуча пространства,В основном учитывая объект пространства имен,Необходимые структуры бухгалтерских данных и рабочая нагрузка RPC,Фактически фактическое использование кучи может быть ниже этого значения.

5 копий

Блок по Коэффициент по умолчаниюкопирования (dfs.replication) равен 3, копирование влияет на дисковое пространство, но не влияет на потребление Память. копировать изменит количество памяти, необходимое для каждого блока, но не количество блоков. если DataNode Если блочный файл копируется три раза, количество блочных файлов утроится, но количество представляющих их блоков не утроится. Если реплика закрыта, 192 MB файлы будут занимать 192 MB дискового пространства и ок. 450 байты памяти. Если есть 100 Тысячи таких файлов или 192 TB данные, вам нужны 192 TB Дисковое пространство не учитывается RPC случаи рабочей нагрузки также требуют 450 MB Память: (100 Десять тысяч inode + 200 Десять тысячblock)* 150 байты. После включения трех копий по умолчанию вам необходимо 576 TB дискового пространства: (192 TB * 3), но использование памяти остается прежним, или 450 МБ. Если вы рассматриваете бухгалтерию иRPC-вызов, согласно предыдущему предположению, более безопасная оценка 2 GB Память.

6 Пример оценки кучи памяти NameNode

6.1 Пример 1. Оценка использования памяти кучи NameNode

Alice、Bob и Carl Каждый из них находится на диске 1 GB (1024 MB) данные, но разбиты на файлы разного размера. Алиса и Bob Файл заблокирован sizeиз整数倍,Будет потреблять меньше,А Карл — это все маленькие файлы размером в 1 МБ.,Так будет израсходовано больше Память.

1.Alice: 1 x 1024 MB file

  • • 1 file inode
  • • 8 blocks (1024 MB / 128 MB)

Total = 9 objects * 150 bytes = 1,350 bytes of heap memory

2.Bob: 8 x 128 MB files

  • • 8 file inodes
  • • 8 blocks

Total = 16 objects * 150 bytes = 2,400 bytes of heap memory

3.Carl: 1,024 x 1 MB files

  • • 1,024 file inodes
  • • 1,024 blocks

Total = 2,048 objects * 150 bytes = 307,200 bytes of heap memory

6.2 Пример 2: Оценка необходимой памяти кучи NameNode

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

1.Кластер A: 200 хостов, каждый с объемом хранилища 24 ТБ, общий объем хранилища в кластере составляет 4800 ТБ.

  • • Blocksize=128 MB, Replication=1
  • • кластеробщийхранилищеемкость(MB):200 * 24,000,000 MB = 4,800,000,000 MB (4800 TB)
  • • Необходимое дисковое пространство для каждого блока: копировать для1, нуждаться: 128 МБ дискового пространства хранилища.
  • • кластер Количество блоков, которые можно сохранить: 4 800 000 000 MB / 128 MB = 36,000,000 блоки

В соответствии с предыдущей рекомендацией выделять 1 ГБ памяти на миллион блоков, кластеру A требуется максимальный объем кучи 36 ГБ.

2.Кластер B: 200 хостов, каждый с объемом хранилища 24 ТБ, общий объем хранилища в кластере составляет 4800 ТБ.

  • • Blocksize=128 MB, Replication=3
  • • кластеробщийхранилищеемкость(MB):200 * 24,000,000 MB = 4,800,000,000 MB (4800 TB)
  • • Требуемое дисковое пространство для каждого блока: копировать для3, нуждаться384 МБ дискового хранилища.
  • • кластер Количество блоков, которые можно сохранить: 4 800 000 000 MB / 384 MB = 12,000,000 блоки

В соответствии с ранее рекомендованным выделением 1 ГБ памяти на миллион блоков, кластеру B требуется максимальное пространство кучи 12 ГБ.

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