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


109

Вони повинні бути рівними?

але, чому команди " hadoop fs" показують час, hdfs filesа " hdfs dfs" команди показують локальні файли?

ось інформація про версію hadoop:

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
Неправильно ставити це питання. hdfs dfsпоказати HDFS файли теж.
Чарлі Лін

2
Можливий дублікат різниці між `hadoop dfs` та` hadoop fs`
TechDog

Відповіді:


140

Далі наведені три команди, які здаються однаковими, але мають хвилинні відмінності

  1. hadoop fs {args}
  2. hadoop dfs {args}
  3. hdfs dfs {args}

  hadoop fs <args>

FS стосується загальної файлової системи, яка може вказувати на будь-які файлові системи, такі як локальна, HDFS тощо. Отже, це може бути використано, коли ви маєте справу з різними файловими системами, такими як Local FS, (S) FTP, S3 та ін


  hadoop dfs <args>

dfs дуже специфічний для HDFS. буде працювати для роботи, що стосується HDFS. Це застаріло, і ми повинні використовувати hdfs dfs замість цього.


  hdfs dfs <args>

такий же, як 2nd ie буде працювати для всіх операцій, пов'язаних з HDFS, і є рекомендованою командою замість hadoop dfs

нижче - список, віднесений до категорій hdfsкоманд.

  namenode|secondarynamenode|datanode|dfs|dfsadmin|fsck|balancer|fetchdt|oiv|dfsgroups

Тож навіть якщо ви використовуєте hadoop dfs , він буде шукати hdfs та делегувати цю команду hdfs dfs


5
Цікаво :-). Отже, якщо hadoop fsстосується будь-якої файлової системи, наприклад, локальної чи hdfs, як hadoop вирішить показати вміст кореневого каталогу HDFS, коли я це робити hadoop fs -ls /? Крім того, як я можу сказати hadoop показувати вміст свого локального кореневого каталогу, коли я запускаю hadoop fs -ls /команду?
sgsi

8
Ви можете посилатися на локальний FS, використовуючи fileсхему на URI, передану як аргумент hadoop fsкомандам (наприклад hdoop fs -ls file:///). Якщо нічого не сказано, це налаштовано за замовчуванням hdfsсхему, AFAIK ( hdoop fs -ls /== hadoop fs -ls hdfs:///).
frb

2
І навіщо мені це потрібно hadoop fs -ls file:///, хоча існують більш традиційні способи перерахування локальних файлів?
srctaha

чому "hadoop" застаріло на користь "hdfs"? Чи є якась функціональна різниця чи це просто зміна синтаксису?
Shuklaswag

31

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

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, а для Local FS - схема файлова. Схема та повноваження необов’язкові. Якщо не вказано, використовується схема за замовчуванням, визначена в конфігурації. Файл або каталог HDFS, такий як / parent / child, можна вказати як hdfs: // namenodehost / parent / child або просто як / parent / child (враховуючи, що для вашої конфігурації вказано hdfs: // namenodehost).

Більшість команд в оболонці FS поводяться як відповідні команди Unix. Відмінності описуються з кожною з команд. Інформація про помилки надсилається до stderr, а вихід надсилається до stdout.

Якщо використовується HDFS,

hdfs dfs

є синонімом.


5

fs посилається на будь-яку файлову систему, вона може бути локальною або HDFS, але dfs стосується лише файлової системи HDFS. Отже, якщо вам потрібно виконати дані про доступ / передачу між різною файловою системою, fs - це шлях.


5

З того, що я можу сказати, немає різниці між hdfs dfsі hadoop fs. Вони просто різні умови іменування, засновані на тому, яку версію Hadoop ви використовуєте. Наприклад, примітки в 1.2.1 використовують в hdfs dfsтой час як 0,19 використовує hadoop fs. Зауважте, що окремі команди описані дослівно. Вони використовуються однаково.

Також зауважте, що обидві команди можуть посилатися на різні файлові системи залежно від того, що ви вказали (hdfs, файл, s3 тощо). Якщо файлової системи немає в списку, вони повертаються до типових параметрів, зазначених у вашій конфігурації.

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

Тож я б просто дотримувався hadoop fsі не надто хвилювався, оскільки в документації вони однакові.


3

FS стосується загальної файлової системи, яка може вказувати на будь-які файлові системи, такі як локальна, HDFS тощо. Але dfs дуже специфічна для HDFS. Таким чином, коли ми використовуємо FS, він може виконувати операції з / в локальну або розподілену файлову систему hadoop до місця призначення. Але вказівка операції DFS стосується HDFS.

Нижче наведено уривки з документації hadoop, яка описує ці дві як оболонки.

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

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

Отже, із сказаного можна зробити висновок, що все залежить від конфігурації схеми. При використанні цієї двох команд з абсолютним URI, тобто схемою: // a / b поведінка повинна бути однаковою. Тільки його значення налаштованої схемою за замовчуванням для файлу та hdfs для fs та dfs відповідно, що є причиною різниці в поведінці.


Чому hdfs dfs вказує на інше місце розташування, ніж hdfs dfs /?
mel

Було б добре, якби там була інтерактивна оболонка на зразок баш для hadoop
Кріс

2

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

fs = інші файлові системи + розподілені файлові системи

FS стосується загальної файлової системи, яка може вказувати на будь-які файлові системи, такі як локальна, HDFS тощо. Але dfs дуже специфічна для HDFS. Таким чином, коли ми використовуємо FS, він може виконувати операції з / в локальну або розподілену файлову систему hadoop до місця призначення. Але вказівка ​​операції DFS стосується HDFS.

Все залежить від налаштування схеми. При використанні цієї двох команд з абсолютним URI, тобто scheme://a/bповедінка повинна бути однаковою. Тільки його значення налаштованої схемою за замовчуванням для file://і hdfs://для, fsі dfsвідповідно, що є причиною різниці в поведінці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.