#hadoop #hdfs
#hadoop #hdfs
Вопрос:
Я новичок в Hadoop и HDFS, я пытаюсь понять, зачем нужны команды Hadoop fs по сравнению с простым использованием эквивалентов команд Unix. Похоже, что они обе работают, моей первой мыслью было, что команда Hadoop напрямую взаимодействует с HDFS namenode и распространяет ее на все узлы. Однако, похоже, это тот случай, когда я использую только команду оболочки Unix. Я перерыл интернет и не нашел простого объяснения. Помощь очень ценится. Или ссылку на объяснение разницы.
Комментарии:
1. В какой среде вы можете использовать команды UNIX в HDFS? HDFS NFS или HDFS Fuse? Команда UNIX может работать с базовыми файлами HDFS, но имена искажены, чтобы связать namenode и для репликации.
2. HDFS вместо NFS, которая упакована MAPR. Итак, я обрабатываю эти файлы на смонтированном томе в edgenode (не являющемся частью кластера), но на нем установлено программное обеспечение mapr. Когда я запускаю команды unix или команду hadoop -fs, они, похоже, дают одинаковые результаты. Мне интересно, настолько ли мал env (6) узлов, что происходит автоматическая репликация или что-то в этом роде, поэтому мне не нужна командная строка hadoop.
[root@maprprod01 bin]# ./hadoop version Hadoop 2.7.0-mapr-1710
Ответ №1:
Если вы работаете в HDFS через NFS, то вы можете рассчитывать на самые простые команды, чтобы работать должным образом (например, ls
, cd
, mkdir
, mv
, rm
, chmod
, chgrp
, chown
). Команда hadoop fs
or hdfs dfs
нужна только в том случае, если вы используете расширенные списки управления доступом или хотите выполнять другие специфические для Hadoop действия, такие как:
- измените коэффициент репликации
hadoop fs -setrep
- удалите файлы из /user /USERNAME/.Мусор
hdfs dfs -expunge
Ответ №2:
Благодаря комментаторам TK421 это заставило меня подумать, что это над NFS, и это также не прямой HDFS, это реализация MAPR, поэтому она отличается, я нашел некоторую документацию от mapr, которая объясняет.
Вы также можете установить разрешения на чтение, запись и выполнение для файла или каталога для пользователей и групп с помощью стандартных команд UNIX, когда этот том был смонтирован через NFS или с помощью стандартных команд hadoop fs.
Ответ №3:
Оболочка файловой системы (FS) включает в себя различные команды, подобные оболочке, которые напрямую взаимодействуют с распределенной файловой системой Hadoop (HDFS), а также с другими файловыми системами, которые поддерживает Hadoop, такими как Local FS, HFTP FS, S3 FS и другими. Оболочка FS вызывается:
bin/hadoop fs <args>
Все команды оболочки FS принимают URI пути в качестве аргументов. Формат URI — scheme://authority/path. Для HDFS схемой является hdfs, а для локальной FS схемой является file. Схема и полномочия необязательны. Если не указано, используется схема по умолчанию, указанная в конфигурации. Файл или каталог HDFS, такой как /parent / child, может быть указан как
hdfs://namenodehost/родительский / дочерний
или просто как
/родительский / дочерний
(учитывая, что ваша конфигурация настроена так, чтобы указывать на hdfs://namenodehost).
Большинство команд в оболочке FS ведут себя как соответствующие команды Unix.
Вы можете не найти некоторые обычные команды оболочки, такие как -head , но доступны -tail и -cat. Тонкие различия в одних и тех же командах можно найти для отдельных команд здесь.
Комментарии:
1. Спасибо за ваш ответ, я видел это в документах. Я предполагаю, что мой вопрос заключается в том, в чем разница, если я использую команды Hadoop -fs по сравнению с просто командами Unix. Будет ли использование стандартного CHMOD изменять все узлы в HDFS? Похоже, это работает именно так. Я вижу одинаковые результаты при использовании как команд Hadoop -fs, так и стандартных команд оболочки. Извините, если не ясно.
2. Я не уверен, что понимаю, о чем вы спрашиваете. Команды Hadoop fs, вероятно, были разработаны с учетом команд unix. Однако не все из них ведут себя подобным образом (особенно для дополнительных флагов, например, «hadoop fs -ls» ведет себя как команда «ls -al»). Как упоминалось ранее, команды hadoop fs являются подмножеством, и вы можете найти не все команды unix.