Команды Shell¶
Hadoop включает в себя различные shell-подобные команды, напрямую взаимодействующие с HDFS и другими файловыми системами, которые поддерживает Hadoop. Команда bin/hdfs dfs -help
выводит список команд, поддерживаемых оболочкой Hadoop, а bin/hdfs dfs -help command-name
отображает более подробную справку. Команды поддерживают большинство обычных операций файловой системы, таких как копирование файлов, изменение прав доступа к файлам и т.д. Но также поддерживаются некоторые специфические операции HDFS, например, изменение репликации файлов.
Команда bin/hdfs dfsadmin
поддерживает операции, связанные с администрированием HDFS, а bin/hdfs dfsadmin -help
выводит список всех поддерживаемых в данный момент команд, например:
-report
– сообщает основную статистику HDFS. Некоторые из этих сведений также доступны на главной странице NameNode;-safemode
– хотя обычно это не требуется, администратор может вручную войти или покинуть режим Safemode;-finalizeUpgrade
– удаляет предыдущую резервную копию кластера, созданную во время последнего обновления;-refreshNodes
– обновляет интерфейс NameNode с набором узлов DataNode, разрешенным подключаться к NameNode. По умолчанию NameNodes повторно считывает имена узлов DataNode в файле, определенном dfs.hosts и dfs.hosts.exclude. Хосты в dfs.hosts – это узлы данных, которые являются частью кластера. Если в dfs.hosts есть записи, то только хосты в нем могут регистрироваться с помощью NameNode. Записи в dfs.hosts.exclude – это узлы данных, которые должны быть выведены из эксплуатации. Альтернативно, если для dfs.namenode.hosts.provider.classname задано значение org.apache.hadoop.hdfs.server.blockmanagement.CombinedHostFileManager, все хосты include и exclude указываются в файле JSON, заданном dfs.hosts. Вывод из эксплуатации завершает DataNodes, когда все их записи среплицированы в другие DataNodes, при этом списанные узлы не выключаются автоматически и не выбираются для записи новых реплик;-printTopology
– вывод топологии кластера. Отображение дерева стоек и узлов данных, прикрепленных к трекам, как показано в NameNode.
Пример использования:
hdfs dfsadmin [-report [-live] [-dead] [-decommissioning] [-enteringmaintenance] [-inmaintenance]]
hdfs dfsadmin [-safemode enter | leave | get | wait | forceExit]
hdfs dfsadmin [-saveNamespace [-beforeShutdown]]
hdfs dfsadmin [-rollEdits]
hdfs dfsadmin [-restoreFailedStorage true |false |check]
hdfs dfsadmin [-refreshNodes]
hdfs dfsadmin [-setQuota <quota> <dirname>...<dirname>]
hdfs dfsadmin [-clrQuota <dirname>...<dirname>]
hdfs dfsadmin [-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>]
hdfs dfsadmin [-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]
hdfs dfsadmin [-finalizeUpgrade]
hdfs dfsadmin [-rollingUpgrade [<query> |<prepare> |<finalize>]]
hdfs dfsadmin [-upgrade [query | finalize]
hdfs dfsadmin [-refreshServiceAcl]
hdfs dfsadmin [-refreshUserToGroupsMappings]
hdfs dfsadmin [-refreshSuperUserGroupsConfiguration]
hdfs dfsadmin [-refreshCallQueue]
hdfs dfsadmin [-refresh <host:ipc_port> <key> [arg1..argn]]
hdfs dfsadmin [-reconfig <namenode|datanode> <host:ipc_port> <start |status |properties>]
hdfs dfsadmin [-printTopology]
hdfs dfsadmin [-refreshNamenodes datanodehost:port]
hdfs dfsadmin [-getVolumeReport datanodehost:port]
hdfs dfsadmin [-deleteBlockPool datanode-host:port blockpoolId [force]]
hdfs dfsadmin [-setBalancerBandwidth <bandwidth in bytes per second>]
hdfs dfsadmin [-getBalancerBandwidth <datanode_host:ipc_port>]
hdfs dfsadmin [-fetchImage <local directory>]
hdfs dfsadmin [-allowSnapshot <snapshotDir>]
hdfs dfsadmin [-disallowSnapshot <snapshotDir>]
hdfs dfsadmin [-shutdownDatanode <datanode_host:ipc_port> [upgrade]]
hdfs dfsadmin [-evictWriters <datanode_host:ipc_port>]
hdfs dfsadmin [-getDatanodeInfo <datanode_host:ipc_port>]
hdfs dfsadmin [-metasave filename]
hdfs dfsadmin [-triggerBlockReport [-incremental] <datanode_host:ipc_port>]
hdfs dfsadmin [-listOpenFiles [-blockingDecommission] [-path <path>]]
hdfs dfsadmin [-help [cmd]]
-report [-live] [-dead] [-decommissioning] [-enteringmaintenance] [-inmaintenance]
– сообщает основную информацию и статистику файловой системы. Использование dfs может отличаться от du, поскольку оно измеряет необработанное пространство, используемое репликацией, контрольными суммами, снапшотами и т.д. на всех DN. Дополнительные флаги можно применять для фильтрации списка отображаемых DataNodes;-safemode enter|leave|get|wait|forceExit
– команда обслуживания безопасного режима Safe mode – состояние Namenode, в котором он:- Не принимает изменения в пространстве имен (только для чтения);
- Не копирует и не удаляет блоки.
Безопасный режим вводится автоматически при запуске Namenode и автоматически выключается, когда настроенный минимальный процент блоков удовлетворяет условию минимальной репликации. Если Namenode обнаруживает какую-либо аномалию, он остается в безопасном режиме, пока проблема не будет решена. Если эта аномалия является следствием преднамеренного действия, администратор может использовать команду
-safemode forceExit
для принудительного выхода из безопасного режима. Случаи, когда это может потребоваться:- Метаданные Namenode не согласованы. Если Namenode обнаруживает, что метаданные были изменены вне диапазона и могут привести к потере данных, то Namenode переходит в состояние forceExit. В этот момент пользователь может либо перезапустить Namenode с правильными файлами метаданных, либо использовать forceExit (если потеря данных допустима);
- Откат приводит к тому, что метаданные заменяются, и в редких случаях он может вызвать режим принудительного выхода из безопасного режима в Namenode.
Безопасный режим можно ввести вручную, но тогда отключить его можно будет тоже только вручную;
-saveNamespace [-beforeShutdown]
– сохранение текущего пространства имен в каталогах хранилища и сброс журнала изменений. Требуется безопасный режим. Если задана опция beforeShutdown, NameNode делает контрольную точку тогда и только тогда, когда в течение временного окна контрольная точка не была установлена (настраиваемое количество периодов контрольных точек). Обычно функция используется перед закрытием NameNode для предотвращения возможного повреждения fsimage или журнала изменений;-rollEdits
– откат журнала редактирования на активном NameNode;-restoreFailedStorage true|false|check
– включение/выключение автоматической попытки восстановления неудачных реплик хранилища. Если сбойное хранилище снова станет доступным, система попытается восстановить журнал изменений и/или fsimage во время контрольной точки. Опция check возвращает текущую настройку;-refreshNodes
– повторное чтение хостов и исключение файлов для обновления набора Datanodes, которым разрешено подключаться к Namenode, и тех, которые должны быть выведены из эксплуатации или повторно введены;-finalizeUpgrade
– завершение обновления HDFS. Datanodes удаляют свои рабочие каталоги предыдущей версии, после чего Namenode делает то же самое. На этом процесс обновления завершается;-upgrade query|finalize
– query: запрос текущего состояния обновления; finalize: завершить обновление HDFS (эквивалентно finalizeUpgrade);-refreshServiceAcl
– перезагрузка файла политики авторизации на уровне сервиса;-refreshUserToGroupsMappings
– обновить сопоставления пользователей и групп;-refreshSuperUserGroupsConfiguration
– обновить сопоставления proxy-групп суперпользователя;-refreshCallQueue
– перезагрузить очередь вызовов из конфига;-refresh <host:ipc_port> <key> [arg1..argn]
– запуск обновления во время выполнения ресурса, указанного <key> на <host: ipc_port>. Все остальные аргументы после отправляются на хост;-reconfig <datanode |namenode> <host:ipc_port> <start|status|properties>
– запуск реконфигурации, либо получение статуса текущей реконфигурации, либо получение списка реконфигурируемых свойств. Второй параметр указывает тип узла;-printTopology
– отобразить дерево стоек и их узлов, как передается в Namenode;-refreshNamenodes datanodehost:port
– перезагрузка файлов конфигурации для указанного datanode, прекращение обслуживания удаленных пулов блоков и старт обслуживания новых пулов блоков;-getVolumeReport datanodehost:port
– получить отчет об объеме для указанного datanode;-deleteBlockPool datanode-host:port blockpoolId [force]
– при принудительном вводе каталог пула блоков для указанного идентификатора блока данных на указанном datanode удаляется вместе с его содержимым, в противном случае каталог удаляется, только если он пуст. Команда не будет выполнена, если datanode все еще обслуживает пул блоков. Для выключения сервиса пула блоков на datanode использовать refreshNamenodes;-setBalancerBandwidth <bandwidth in bytes per second>
– изменение пропускной способности сети, используемой каждым datanode во время балансировки блоков HDFS. <bandwidth> – максимальное число байтов в секунду, которое будет использоваться каждой datanode. Это значение переопределяет параметр dfs.datanode.balance.bandwidthPerSec. При этом новое значение не является постоянным в узле DataNode;-getBalancerBandwidth <datanode_host:ipc_port>
– получение пропускной способности сети (в байтах в секунду) для указанного datanode. Это максимальная пропускная способность сети, используемая datanode при балансировке блоков HDFS;-fetchImage <local directory>
– загрузка последнего fsimage из NameNode и сохранение его в указанном локальном каталоге;-allowSnapshot <snapshotDir>
– разрешение на создание снапшотов каталога. Если операция завершается успешно, каталог становится моментальным снимком;-disallowSnapshot <snapshotDir>
– запрет на создание снапшотов каталога, который будет создан. Все снимки каталога должны быть удалены перед включением функции;-shutdownDatanode <datanode_host:ipc_port> [upgrade]
– отправить запрос на отключение для указанного datanode;-evictWriters <datanode_host:ipc_port>
– заставляет datanode выселить всех клиентов, которые пишут блок. Функция полезна, когда эксплуатация приостановлена из-за медленных писателей;-getDatanodeInfo <datanode_host:ipc_port>
– получение информации о указанном datanode;-metasave filename
– сохранение основных структур данных Namenode в filename в каталоге, указанном свойством hadoop.log.dir. Файл filename перезаписывается, если уже существует. При этом filename содержит одну строку для каждого из следующих:- Сообщения heartbeat узлов Datanodes с Namenode;
- Ожидающие репликации блоки;
- Копируемые в настоящее время блоки;
- Ожидающие удаления блоки.
-triggerBlockReport [-incremental] <datanode_host:ipc_port>
– запуск отчета о блокировке для указанного datanode. Если указано значение incremental, то отчет о полном блоке;-listOpenFiles [-blockingDecommission] [-path <path>]
– список всех открытых файлов, которыми в данный момент управляет NameNode, а также имя клиента и клиентский компьютер, к которому они обращаются. Список открытых файлов фильтруется по заданному типу и пути;-help [cmd]
– справка для указанной команды или для всех команд, если ни одна не указана.