HDFS에서 로컬 파일 시스템으로 파일을 복사하는 방법


135

HDFS에서 로컬 파일 시스템으로 파일을 복사하는 방법 파일 아래에 파일 위치가없고 디렉토리도 없습니다. 추가 유효성 검사를 위해 로컬로 어떻게 옮길 수 있습니까? winscp 통해 시도했습니다.

답변:


242
  1. bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
  2. bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
  3. 웹 브라우저에서 HDFS WEBUI ( namenode_machine:50070)를 가리키고 복사하려는 파일을 찾은 다음 페이지를 아래로 스크롤 하여 파일 다운로드를 클릭하십시오 .

완벽한 tariq, 나는 그것을 얻었다 , 파일, 심지어 디렉토리 아래에 파일의 물리적 위치가 없다. bin / hadoop dfs -ls / use / hadoop / myfolder 파일을 볼 수 있습니다. 정보를 얻었을 때 파일을 검사하려면 HDFS에서 로컬 파일 시스템으로 파일을 복사 할 수 있으므로 winscp에서 파일 을 이동할 수는 있습니다.
Surya

2
다시 한 번 tariq에 대해 언급해야합니다. 시간과 지식을 제공해 주셔서 감사합니다. 고마워. u는 많은 지원을했다, 이것은 나 같은 새로운 bie에 대한 많은 자신감을 제공합니다.
Surya

1
내가 참조. 파일의 내용을 보거나 webui에서 파일을 열려면 실제로 hdfs cat 명령을 사용할 수 있습니다. 파일을 로컬 fs로 다운로드하지 않아도됩니다. 아니에요. 그리고 당신이 당신의 질문에 대한 답변에 100 % 만족한다면 당신은 다른 사람들이 혜택을받을 수 있도록 질문을 표시 할 수 있습니다.
Tariq

2
내 위도 주석에 추가하기 위해 바이너리 파일 인 경우 cat은 실제 내용을 표시하지 않습니다. 바이너리 파일의 내용을 보려면 다음을 사용하십시오. bin / hadoop fs -text / path / to / file
Tariq

1
버그 (고정) 인 것 같습니다. 답을보십시오.
Tariq

27

하둡 2.0에서는

hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>

어디,

  • hdfs_input_file_path 아마 http://<<name_node_ip>>:50070/explorer.html

  • output_path 파일을 복사 할 파일의 로컬 경로입니다.

  • get대신 사용할 수도 있습니다 copyToLocal.


15

HDFS에서 로컬 파일 시스템으로 파일을 복사하기 위해 다음 명령을 실행할 수 있습니다.

hadoop dfs -copyToLocal <input> <output>

  • <input>: 복사하려는 HDFS 디렉토리 경로 (예 : / mydata)
  • <output>: 대상 디렉토리 경로 (예 : ~ / Documents)

1
이것은 나를 위해 작동하지 않는 것 같습니다. 항상 <input> 파일을 찾을 수 없습니다. 나는 6.4 %의 OS를 가지고 클라우 데라의 VM 인스턴스를 사용하고 있습니다
SutharMonil

@SutharMonil 파일이 실제로 있는지 확인 하시겠습니까? 통해 찾아 볼 수 있습니까 hadoop fs -ls?
Dennis Jaheruddin

6

이 두 가지 방법으로 달성 할 수 있습니다.

1.hadoop fs -get <HDFS file path> <Local system directory path>
2.hadoop fs -copyToLocal <HDFS file path> <Local system directory path>

전의:

내 파일은 /sourcedata/mydata.txt 에 있습니다.이 경로의 로컬 파일 시스템에 파일을 복사하려고합니다. / user / ravi / mydata

hadoop fs -get /sourcedata/mydata.txt /user/ravi/mydata/

3

소스 "file"이 동일한 디렉토리 트리에있는 여러 파일 (map-reduce의 결과 일 수 있음)로 분할 된 경우 다음을 사용하여 로컬 파일로 복사 할 수 있습니다.

hadoop fs -getmerge /hdfs/source/dir_root/ local/destination

수락해야합니다. 이것은 대부분의 사람들이 찾고있는 파일이며 분할 파일이 아닙니다.
제임스 오브라이언

2

이것은 Ubuntu의 VM 인스턴스에서 나를 위해 일했습니다.

hdfs dfs -copyToLocal [hadoop 디렉토리] [로컬 디렉토리]


0

도커를 사용하는 경우 다음 단계를 수행해야합니다.

  1. hdfs에서 namenode로 파일을 복사하십시오 (hadoop fs -get output / part-r-00000 / out_text). "/ out_text"는 네임 노드에 저장됩니다.

  2. (docker cp namenode : / out_text output.txt)에 의해 namenode에서 로컬 디스크로 파일을 복사하십시오.

  3. output.txt는 현재 작업 디렉토리에 있습니다


-3
bin/hadoop fs -put /localfs/destination/path /hdfs/source/path 

1
hdfs dfs -put은 파일을 로컬 FS에서 HDFS로 푸시하는 명령입니다. hdfs dfs -get은 올바른 옵션입니다
b_rousseau
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.