Câu trả lời:
bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
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 .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 get
thay thế copyToLocal
.
Để 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)hadoop fs -ls
không?
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/
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
nếu bạn đang sử dụng docker, bạn phải thực hiện các bước sau:
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.
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)
output.txt sẽ ở đó trên thư mục làm việc hiện tại của bạn
bin/hadoop fs -put /localfs/destination/path /hdfs/source/path