Cara menyalin file dari HDFS ke sistem file lokal

135

Cara menyalin file dari HDFS ke sistem file lokal. Tidak ada lokasi fisik file di bawah file, bahkan direktori. bagaimana saya bisa memindahkan mereka ke lokal saya untuk validasi lebih lanjut. Saya dicoba melalui wincp.

Surya
sumber

Jawaban:

242
  1. bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
  2. bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
  3. Arahkan browser web Anda ke HDFS WEBUI ( namenode_machine:50070), ramban ke file yang ingin Anda salin, gulir ke bawah halaman dan klik unduh file .
Tariq
sumber
tariq sempurna, saya mendapatkannya, Tidak ada lokasi fisik file di bawah file, bahkan direktori. bin / hadoop dfs -l / use / hadoop / myfolder saya dapat melihat file, Dari saya mendapat info sebagai Untuk memeriksa file, Anda dapat menyalinnya dari HDFS ke sistem file lokal , jadi saya pikir saya dapat memindahkannya dari winscp
Surya
2
sekali lagi saya perlu menyebutkan tariq, terima kasih banyak atas kontribusi Anda waktu dan pengetahuan. Terima kasih banyak . kamu memang mendukung banyak, ini memberikan banyak kepercayaan untuk bie baru seperti saya.
Surya
1
Saya melihat. Anda sebenarnya dapat menggunakan perintah kucing hdfs jika Anda ingin melihat konten file atau membuka file di webui. Ini akan menyelamatkan Anda dari mengunduh file ke fs lokal Anda. Sama sama. Dan jika Anda 100% puas dengan jawaban atas pertanyaan Anda, Anda dapat menandai mereka sehingga orang lain dapat memperoleh manfaat darinya .. Bukan hanya untuk yang satu ini, tetapi secara umum.
Tariq
2
Hanya untuk menambahkan komentar terakhir saya, jika ini adalah file biner, cat tidak akan menunjukkan konten yang sebenarnya kepada Anda. Untuk melihat konten file biner, Anda dapat menggunakan: bin / hadoop fs -text / path / to / file
Tariq
1
Tampaknya menjadi bug (diperbaiki). Lihat jawabannya.
Tariq
27

Di Hadoop 2.0,

hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>

dimana,

  • hdfs_input_file_path mungkin diperoleh dari http://<<name_node_ip>>:50070/explorer.html

  • output_path adalah jalur lokal file, tempat file akan disalin.

  • Anda juga dapat menggunakan getdi tempat copyToLocal.

Ani Menon
sumber
15

Untuk menyalin file dari HDFS ke sistem file lokal, perintah berikut ini dapat dijalankan:

hadoop dfs -copyToLocal <input> <output>

  • <input>: jalur direktori HDFS (mis. / data) yang ingin Anda salin
  • <output>: jalur direktori tujuan (mis. ~ / Dokumen)
Syafiq
sumber
1
Ini sepertinya tidak berhasil untuk saya. Itu selalu mengatakan file <input> tidak ditemukan. Saya menggunakan instance VM cloudera yang memiliki cent os 6.4
SutharMonil
@SutharMonil Anda yakin file tersebut benar-benar ada? Bisakah Anda menjelajah sana melalui hadoop fs -ls?
Dennis Jaheruddin
6

Anda dapat mencapai kedua cara ini.

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

Ex:

File saya terletak di /sourcedata/mydata.txt Saya ingin menyalin file ke sistem file lokal di jalur ini / user / ravi / mydata

hadoop fs -get /sourcedata/mydata.txt /user/ravi/mydata/
Ramineni Ravi Teja
sumber
3

Jika "file" sumber Anda terpecah di antara banyak file (mungkin sebagai akibat dari pengurangan peta) yang hidup di pohon direktori yang sama, Anda dapat menyalinnya ke file lokal dengan:

hadoop fs -getmerge /hdfs/source/dir_root/ local/destination
Eponim
sumber
Ini harus diterima. Inilah yang dicari kebanyakan orang, bukan file yang dipisah.
James O'Brien
2

Ini bekerja untuk saya pada instance VM Ubuntu saya.

hdfs dfs -copyToLocal [direktori hadoop] [direktori lokal]

Zach
sumber
0

jika Anda menggunakan buruh pelabuhan, Anda harus melakukan langkah-langkah berikut:

  1. salin file dari hdfs ke namenode (hadoop fs -dapatkan output / part-r-00000 / out_text). "/ out_text" akan disimpan di namenode.

  2. salin file dari namenode ke disk lokal dengan (docker cp namenode: / out_text output.txt)

  3. output.txt akan ada di direktori kerja Anda saat ini

Arslan
sumber
-3
bin/hadoop fs -put /localfs/destination/path /hdfs/source/path 
Maniak Hadoop
sumber
1
hdfs dfs -put adalah perintah untuk mendorong file dari FS lokal ke HDFS. hdfs dfs -get adalah opsi yang tepat
b_rousseau