Какая разница между командами оболочки "hadoop fs" и командами оболочки hdfs dfs?

Являются ли они равными?

но почему команды "hadoop fs" показывают hdfs files, в то время как команды "hdfs dfs" показывают локальные файлы?

вот информация о версии хауопа:

Hadoop 2.0.0-mr1-cdh4.2.1 Subversion git://ubuntu-slave07.jenkins.cloudera.com/var/lib/jenkins/workspace/CDH4.2.1-Packaging-MR1/build/cdh4/mr1/2.0.0-mr1-cdh4.2.1/source -r Скомпилировано jenkins в Пн Апр 22 10:48:26 PDT 2013

Ответ 1

Ниже приведены три команды, которые отображаются одинаково, но имеют небольшие отличия

  • hadoop fs {args}
  • hasoop dfs {args}
  • hdfs dfs {args}

    hadoop fs <args>
    

FS относится к общей файловой системе, которая может указывать на любые файловые системы, такие как локальные, HDFS и т.д. Таким образом, это можно использовать, когда вы имеете дело с различными файловыми системами, такими как Local FS, HFTP FS, S3 FS и другие

  hadoop dfs <args>

dfs очень специфичен для HDFS. будет работать для работы с HDFS. Это было устарело, и мы должны использовать hdfs dfs.

  hdfs   dfs <args>

то же, что и 2-я, я буду работать для всех операций, связанных с HDFS, и является рекомендуемой командой вместо hadoop dfs

ниже - список, классифицированный как команды HDFS.

  **#hdfs commands**
  namenode|secondarynamenode|datanode|dfs|dfsadmin|fsck|balancer|fetchdt|oiv|dfsgroups

Итак, даже если вы используете Hadoop dfs, он будет искать hdfs и делегировать эту команду hdfs dfs

Ответ 2

Из того, что я могу сказать, нет разницы между hdfs dfs и hadoop fs. Это просто разные соглашения об именах, основанные на той версии Hadoop, которую вы используете. Например, примечания в 1.2.1 используют hdfs dfs, а 0.19 использует hadoop fs. Обратите внимание, что отдельные команды описаны дословно. Они используются одинаково.

Также обратите внимание, что обе команды могут ссылаться на разные файловые системы в зависимости от того, что вы указали (hdfs, file, s3 и т.д.). Если файловая система не указана, они возвращаются к умолчанию, указанному в вашей конфигурации.

Вы используете Hadoop 2.0.0, и он выглядит как (на основе документации 2.0.5), что в версиях Alpha используются hadoop fs и установлен для использования HDFS в качестве схемы по умолчанию в вашей конфигурации. Команда hdfs dfs может быть оставлена ​​с ранее, и, поскольку она не указана в конфигурации, может быть просто по умолчанию для локальной файловой системы.

Поэтому я бы просто придерживался hadoop fs и не слишком беспокоился, так как в документации они идентичны.

Ответ 3

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

Ответ 4

FS относится к общей файловой системе, которая может указывать на любые файловые системы, такие как локальные, HDFS и т.д. Но dfs очень специфичен для HDFS. Поэтому, когда мы используем FS, он может выполнять операцию с/из локальной или распределенной файловой системы с распределенной файловой системой в пункт назначения. Но указание операции DFS относится к HDFS.

Ниже приведены выдержки из документации по суффиксу, которая описывает эти два как разные оболочки.

Оболочка FS Оболочка FileSystem (FS) вызывается bin/hadoop fs. Все команды оболочки FS принимают URI пути в качестве аргументов. Формат URI - это схема://autority/path. Для HDFS схема hdfs, а для локальной файловой системы - файл. Схема и полномочия являются необязательными. Если не указано, используется схема по умолчанию, указанная в конфигурации. Файл или каталог HDFS, такие как /parent/child, могут быть указаны как hdfs://namenodehost/parent/child или просто как /parent/child (при условии, что ваша конфигурация задана как hdfs://namenodehost). Большинство команд в FS-оболочке ведут себя как соответствующие команды Unix.

DFShell Оболочка HDFS вызывается bin/hadoop dfs. Все команды оболочки HDFS принимают URI пути в качестве аргументов. Формат URI - это схема://autority/path. Для HDFS схема hdfs, а для локальной файловой системы - файл. Схема и полномочия являются необязательными. Если не указано, используется схема по умолчанию, указанная в конфигурации. Файл HDFS или каталог, такой как /parent/child, можно указать как hdfs://namenode: namenodeport/parent/child или просто как /parent/child (при условии, что ваша конфигурация настроена на namenode: namenodeport). Большинство команд в оболочке HDFS ведут себя как соответствующие команды Unix.

Итак, из вышесказанного можно сделать вывод, что все зависит от схемы configure. При использовании этой двух команд с абсолютным URI, то есть схемой://a/b, поведение должно быть идентичным. Только его стандартное настроенное значение схемы для файлов и hdfs для fs и dfs соответственно, что является причиной различий в поведении.

Ответ 5

fs = файловая система dfs = распределенная файловая система

fs = другие файловые системы + распределенные файловые системы

FS относится к общей файловой системе, которая может указывать на любые файловые системы, такие как локальные, HDFS и т.д. Но dfs очень специфичен для HDFS. Поэтому, когда мы используем FS, он может выполнять операцию с/из локальной или распределенной файловой системы с распределенной файловой системой в пункт назначения. Но указание операции DFS относится к HDFS.

Все зависит от схемы configure. При использовании этой двух команд с абсолютным URI, то есть схемой://a/b, поведение должно быть идентичным. Только его стандартное настроенное значение схемы для файлов и hdfs для fs и dfs соответственно, что является причиной различий в поведении.

Ответ 6

введите описание изображения здесь

https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html

Файловая система (FS) включает в себя различные команды, подобные оболочке, которые напрямую взаимодействуют с распределенной файловой системой Hadoop (HDFS), а также другие файловые системы, поддерживаемые Hadoop, такие как Local FS, WebHDFS, S3 FS и другие.

bin/hadoop fs <args>

Все команды оболочки FS принимают URI пути в качестве аргументов. Формат URI - это схема://авторитет/путь. Для HDFS схема hdfs и для локальной FS эта схема является файлом. Схема и полномочия являются необязательными. Если не указано, стандартная схема, указанная в конфигурации, используемый. Файл или каталог HDFS, такие как /parent/child, можно указать как hdfs://namenodehost/parent/child или просто как /parent/child (учитывая, что ваш для конфигурации установлено значение hdfs://namenodehost).

Большинство команд в FS-оболочке ведут себя как соответствующие команды Unix. Различия описываются с каждой из команд. Информация об ошибках отправляется в stderr, и вывод отправляется на stdout.

Если используется HDFS,

hdfs dfs

является синонимом.