Все процессы Hadoop выполняются на виртуальной машине Java (JVM), а каждый демон-процесс выполняется на собственной JVM на узле кластера. Вообще говоря, HDFS производственного кластера будет настроена с NameNode HA, то есть есть две роли NameNode, и каждый NameNode использует свою собственную JVM. Оценка кучи NameNode JVM — это техническая работа. В этой статье в основном представлены соответствующие знания. Кроме того, куча NameNode в основном определяется количеством каталогов, файлов и блоков в HDFS. Для обеспечения стабильности и максимальной производительности HDFS обычно рекомендуется следующее. количество файлов в HDFS не должно превышать 300 миллионов.
Мы можем настроить HADOOP_HEAPSIZE
и HADOOP_NAMENODE_OPTS
чтобы отрегулировать значение NameNode Куча памятиразмер。HADOOP_HEAPSIZE
установить все Службы Hadoop (такие как HDFS, YARN и MapReduce) JVM Размер кучи。HADOOP_HEAPSIZE
Преобразование целочисленного значения в максимальное Память (Xmx) Параметры, переданные в JVM, например:
HADOOP_HEAPSIZE=1024
HADOOP_NAMENODE_OPTS
даNameNodeсобственная конфигурация,нуждаться устанавливает все флаги JVM, которые необходимо указать,HADOOP_NAMENODE_OPTS
покроетNameNodeизHADOOP_HEAPSIZE
Значение Xmx, например:
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 середина.
Существует несколько методов мониторинга использования кучи: Cloudera Manager, веб-интерфейс NameNode или командная строка.
select jvm_max_memory_mb, jvm_heap_used_mb where roleType="NameNode"
Сохранение метаданных HDFS достигается за счет файлов fsimage и файлов редактирования.,Не пытайтесь изменять каталоги или файлы метаданных.,Изменения могут привести к HDFS Простои или даже безвозвратная потеря данных.
1.fsimage
Содержит полное состояние файловой системы на определенный момент времени, при этом каждой модификации файловой системы присваивается уникальный, монотонно увеличивающийся идентификатор транзакции. Файл fsimage представляет все измененные состояния файловой системы до определенного идентификатора транзакции.
2.edits file
Содержит журнал, в котором перечислены все изменения файловой системы (создание, удаление или модификация файлов), сделанные с момента последней версии fsimage. Контрольная точка — это процесс объединения содержимого последней версии fsimage. Он объединяет все изменения и создает новый fsimage. Контрольную точку можно запустить автоматически с помощью политик конфигурации или вручную с помощью команд управления HDFS.
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,Фактически фактическое использование кучи может быть ниже этого значения.
Блок по Коэффициент по умолчаниюкопирования (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 Память.
Alice、Bob и Carl Каждый из них находится на диске 1 GB (1024 MB) данные, но разбиты на файлы разного размера. Алиса и Bob Файл заблокирован sizeиз整数倍,Будет потреблять меньше,А Карл — это все маленькие файлы размером в 1 МБ.,Так будет израсходовано больше Память.
1.Alice: 1 x 1024 MB file
Total = 9 objects * 150 bytes = 1,350 bytes of heap memory
2.Bob: 8 x 128 MB files
Total = 16 objects * 150 bytes = 2,400 bytes of heap memory
3.Carl: 1,024 x 1 MB files
Total = 2,048 objects * 150 bytes = 307,200 bytes of heap memory
В этом примере объем памяти оценивается с учетом общей емкости хранилища кластера, двух физических хранилищ кластера. 4800 ТБ, согласно блоку по умолчанию размер для расчета 128МБ, ок. 3600 Десять тысячный блок-файл.
1.Кластер A: 200 хостов, каждый с объемом хранилища 24 ТБ, общий объем хранилища в кластере составляет 4800 ТБ.
В соответствии с предыдущей рекомендацией выделять 1 ГБ памяти на миллион блоков, кластеру A требуется максимальный объем кучи 36 ГБ.
2.Кластер B: 200 хостов, каждый с объемом хранилища 24 ТБ, общий объем хранилища в кластере составляет 4800 ТБ.
В соответствии с ранее рекомендованным выделением 1 ГБ памяти на миллион блоков, кластеру B требуется максимальное пространство кучи 12 ГБ.