"hadoop fs"셸 명령과 "hdfs dfs"셸 명령의 차이점은 무엇입니까?


109

동등해야합니까?

그러나 " "명령이 로컬 파일을 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가 Mon Apr 22 10:48:26 PDT 2013에 컴파일


1
이 질문을하는 것은 제 잘못입니다. 는 hdfs dfs너무 HDFS 파일을 보여줍니다.
찰리 린

답변:


140

다음은 동일하게 보이지만 미세한 차이가있는 세 가지 명령입니다.

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

  hadoop fs <args>

FS는 로컬, HDFS 등과 같은 모든 파일 시스템을 가리킬 수있는 일반 파일 시스템과 관련이 있습니다. 따라서 로컬 FS, (S) FTP, S3 등과 같은 다른 파일 시스템을 처리 할 때 사용할 수 있습니다.


  hadoop dfs <args>

dfs는 HDFS에만 해당됩니다. HDFS와 관련된 작업을 위해 작동합니다. 이것은 더 이상 사용되지 않으며 대신 hdfs dfs 를 사용해야 합니다.


  hdfs dfs <args>

두 번째와 동일합니다. 즉 HDFS와 관련된 모든 작업에 대해 작동하며 hadoop dfs 대신 권장되는 명령입니다.

아래는 hdfs명령으로 분류 된 목록 입니다.

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

따라서 hadoop dfs 를 사용하더라도 hdfs를 찾고 해당 명령을 hdfs dfs에 위임합니다.


5
흥미로운 :-). 따라서 hadoop fs로컬 또는 hdfs와 같은 파일 시스템과 관련이 있다면 어떻게 할 때 HDFS 루트 디렉토리 콘텐츠를 표시하도록 hadoop을 선택합니까 hadoop fs -ls /? 또한 hadoop fs -ls /명령을 실행할 때 내 로컬 루트 디렉토리 내용을 표시하도록 hadoop에 어떻게 알릴 수 있습니까?
sgsi

8
명령에 file인수로 전달 된 URI에서 스키마를 사용하여 로컬 FS를 참조 할 수 있습니다 hadoop fs(예 :) hdoop fs -ls file:///. 아무 말도하지 않으면 hdfs스키마 AFAIK ( hdoop fs -ls /== hadoop fs -ls hdfs:///)로 기본 설정됩니다 .
frb

2
hadoop fs -ls file:///로컬 파일을 나열하는 더 전통적인 방법이 있지만 왜 필요한 가요?
srctaha

'hdfs'를 위해 'hadoop'이 더 이상 사용되지 않는 이유는 무엇입니까? 기능적 차이가 있습니까 아니면 단지 구문의 변경입니까?
Shuklaswag 2017

31

여기에 이미지 설명 입력

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

파일 시스템 (FS) 셸에는 HDFS (Hadoop Distributed File System) 및 로컬 FS, WebHDFS, S3 FS 등과 같이 Hadoop에서 지원하는 기타 파일 시스템과 직접 상호 작용하는 다양한 셸 유사 명령이 포함되어 있습니다.

bin / hadoop fs <args>

모든 FS 셸 명령은 경로 URI를 인수로 사용합니다. URI 형식은 scheme : // authority / path입니다. HDFS의 경우 구성표는 hdfs이고 로컬 FS의 경우 구성표는 파일입니다. 계획과 권한은 선택 사항입니다. 지정하지 않으면 구성에 지정된 기본 체계가 사용됩니다. / parent / child와 같은 HDFS 파일 또는 디렉토리는 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, file, s3 등)에 따라 서로 다른 파일 시스템을 참조 할 수 있습니다. 파일 시스템이 나열되지 않으면 구성에 지정된 기본값으로 돌아갑니다.

Hadoop 2.0.0을 사용 하고 있으며 알파 버전이 사용 하고 구성에서 HDFS를 기본 체계로 사용하도록 설정되어있는 것처럼 보입니다 ( 2.0.5 문서 기반 ) hadoop fs. hdfs dfs명령은 이전에서 남아있을 수 있습니다 및 구성에 지정되지 않은 이후, 단지 로컬 파일 시스템을 디폴트 수 있습니다.

그래서 나는 hadoop fs문서에서 동일하기 때문에 너무 걱정하지 않고 고수 할 것 입니다.


3

FS 는 로컬, HDFS 등과 같은 모든 파일 시스템을 가리킬 수있는 일반 파일 시스템과 관련이 있습니다. 그러나 dfs 는 HDFS와 관련이 있습니다. 따라서 FS 를 사용할 때 로컬 또는 hadoop 분산 파일 시스템에서 대상으로 작업을 수행 할 수 있습니다. 하지만 DFS 지정 작업을 것은 HDFS와 관련이 있습니다.

다음은이 두 가지를 다른 셸로 설명하는 hadoop 문서에서 발췌 한 것입니다.

FS 셸 파일 시스템 (FS) 셸은 bin / hadoop fs에 의해 호출됩니다. 모든 FS 셸 명령은 경로 URI를 인수로 사용합니다. URI 형식은 scheme : // autority / path입니다. HDFS의 경우 체계는 hdfs이고 로컬 파일 시스템의 경우 체계는 파일입니다. 계획과 권한은 선택 사항입니다. 지정하지 않으면 구성에 지정된 기본 체계가 사용됩니다. / parent / child와 같은 HDFS 파일 또는 디렉토리는 hdfs : // namenodehost / parent / child 또는 간단히 / parent / child로 지정할 수 있습니다 (구성이 hdfs : // namenodehost를 가리 키도록 설정되어있는 경우). FS 셸의 대부분의 명령은 해당 Unix 명령처럼 작동합니다.

DFShell HDFS 쉘은 bin / hadoop dfs에 의해 호출됩니다. 모든 HDFS 셸 명령은 경로 URI를 인수로 사용합니다. URI 형식은 scheme : // autority / path입니다. HDFS의 경우 체계는 hdfs이고 로컬 파일 시스템의 경우 체계는 파일입니다. 계획과 권한은 선택 사항입니다. 지정하지 않으면 구성에 지정된 기본 체계가 사용됩니다. / parent / child와 같은 HDFS 파일 또는 디렉토리는 hdfs : // namenode : namenodeport / parent / child 또는 간단히 / parent / child로 지정할 수 있습니다 (구성이 namenode : namenodeport를 가리 키도록 설정되어있는 경우). HDFS 셸의 대부분의 명령은 해당 Unix 명령처럼 작동합니다.

따라서 위에서 모든 것이 구성표 구성에 달려 있다고 결론을 내릴 수 있습니다. 절대 URI, 즉 scheme : // a / b와 함께이 두 명령을 사용할 때 동작은 동일해야합니다. fs 및 dfs에 대해 각각 파일 및 hdfs에 대해 구성된 기본 구성표 값만 동작 차이의 원인입니다.


hdfs dfs가 hdfs dfs /와 다른 위치를 가리키는 이유는 무엇입니까?
mel

하둡에 대한 bash는 같은 대화 형 쉘이 있다면 그것은 좋은 일 것입니다
크리스

2

fs= 파일 시스템
dfs= 분산 파일 시스템

fs = 다른 파일 시스템 + 분산 파일 시스템

FS는 로컬, HDFS 등과 같은 모든 파일 시스템을 가리킬 수있는 일반 파일 시스템과 관련이 있습니다. 그러나 dfs는 HDFS와 관련이 있습니다. 따라서 FS를 사용할 때 로컬 또는 hadoop 분산 파일 시스템에서 대상으로 작업을 수행 할 수 있습니다. 그러나 DFS 작업을 지정하는 것은 HDFS와 관련이 있습니다.

그것은 모두 구성표 구성에 달려 있습니다. 절대 URI와 함께이 두 명령을 사용할 때, 즉 scheme://a/b동작은 동일해야합니다. 동작 차이의 원인 인 file://hdfs://for fsdfs각각에 대한 기본 구성된 구성표 값만 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.