Cách sao chép tệp từ HDFS sang hệ thống tệp cục bộ


135

Cách sao chép tệp từ HDFS sang hệ thống tệp cục bộ. Không có vị trí vật lý của một tệp trong tệp, thậm chí không có thư mục. làm thế nào tôi có thể di chuyển chúng đến địa phương của tôi để xác nhận thêm. Tôi đã thử thông qua wincp.

Câu trả lời:


242
  1. bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
  2. bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
  3. Trỏ trình duyệt web của bạn tới HDFS WEBUI ( namenode_machine:50070), duyệt đến tệp bạn định sao chép, cuộn xuống trang và nhấp vào tải xuống tệp .

tariq hoàn hảo, tôi đã nhận nó, Không có vị trí vật lý của một tập tin trong tập tin, thậm chí không có thư mục. bin / hadoop dfs -ls / use / hadoop / myfolder tôi có thể xem tệp, Từ tôi có thông tin là Để kiểm tra tệp, bạn có thể sao chép nó từ HDFS sang hệ thống tệp cục bộ , vì vậy tôi có thể chuyển chúng từ wincp
Surya

2
một lần nữa tôi cần nhắc đến tariq, cảm ơn rất nhiều vì đã đóng góp cho bạn thời gian và kiến ​​thức. cảm ơn rất nhiều . Bạn đã hỗ trợ rất nhiều, điều này mang lại rất nhiều sự tự tin cho một bie mới như tôi.
Surya

1
Tôi hiểu rồi. Bạn thực sự có thể sử dụng lệnh mèo hdfs nếu bạn muốn xem nội dung của tệp hoặc mở tệp trên webui. Điều này sẽ giúp bạn tiết kiệm từ việc tải tập tin xuống fs cục bộ của bạn. Không có gì. Và nếu bạn hài lòng 100% với câu trả lời cho câu hỏi của mình, bạn có thể đánh dấu chúng để người khác có thể hưởng lợi từ nó .. Không chỉ cho câu hỏi này, mà nói chung.
Tariq

2
Chỉ cần thêm vào nhận xét lat của tôi, nếu đó là tệp nhị phân, mèo sẽ không hiển thị cho bạn nội dung thực tế. Để xem nội dung của tệp nhị phân, bạn có thể sử dụng: bin / hadoop fs -text / path / to / file
Tariq

1
Nó dường như là một lỗi (đã sửa). Xem câu trả lời.
Tariq

27

Trong Hadoop 2.0,

hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>

Ở đâu,

  • hdfs_input_file_path có thể thu được từ http://<<name_node_ip>>:50070/explorer.html

  • output_path là đường dẫn cục bộ của tệp, nơi tệp sẽ được sao chép vào.

  • bạn cũng có thể sử dụng getthay thế copyToLocal.


15

Để sao chép tệp từ HDFS sang hệ thống tệp cục bộ, lệnh sau có thể được chạy:

hadoop dfs -copyToLocal <input> <output>

  • <input>: đường dẫn thư mục HDFS (ví dụ / mydata) mà bạn muốn sao chép
  • <output>: đường dẫn thư mục đích (ví dụ ~ / Documents)

1
Điều này dường như không làm việc cho tôi. Nó luôn luôn nói rằng tập tin <input> không tìm thấy. Tôi đang sử dụng phiên bản VM của cloudera có cent os 6.4
SutharMonil

@SutharMonil Bạn có chắc là tập tin thực sự ở đó không? Bạn có thể duyệt qua đó hadoop fs -lskhông?
Dennis Jaheruddin

6

bạn có thể thực hiện theo cả hai cách này.

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

Ví dụ:

Các tệp của tôi được đặt trong /sourcedata/mydata.txt Tôi muốn sao chép tệp vào hệ thống tệp cục bộ trong đường dẫn này / user / ravi / mydata

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

3

Nếu "tệp" nguồn của bạn được chia thành nhiều tệp (có thể là kết quả của việc giảm bản đồ) sống trong cùng một cây thư mục, bạn có thể sao chép tệp đó vào một tệp cục bộ bằng:

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

Điều này nên được chấp nhận. Đây là những gì hầu hết mọi người đang tìm kiếm, không phải là một tập tin tách ra.
James O'Brien

2

Điều này làm việc cho tôi trên phiên bản VM của Ubuntu.

hdfs dfs -copyToLocal [thư mục hadoop] [thư mục cục bộ]


0

nếu bạn đang sử dụng docker, bạn phải thực hiện các bước sau:

  1. sao chép tệp từ hdfs sang nút tên (hadoop fs -get output / part-r-00000 / out lòng). "/ Out lòng" sẽ được lưu trữ trên nút tên.

  2. sao chép tệp từ nút tên vào đĩa cục bộ bằng cách (docker cp namenode: / out lòng output.txt)

  3. output.txt sẽ ở đó trên thư mục làm việc hiện tại của bạn


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

1
hdfs dfs -put là một lệnh để đẩy các tệp từ FS cục bộ sang HDFS. hdfs dfs -get là tùy chọn phù hợp
b_rousseau 10/12/17
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.