HDFS'den yerel dosya sistemine dosya kopyalama


135

HDFS'den yerel dosya sistemine dosya kopyalama. Dosyanın altında fiziksel bir konum yoktur, dizin bile değildir. nasıl daha fazla doğrulama için onları yerelime taşındı. ben winscp denedim.

Yanıtlar:


242
  1. bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
  2. bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
  3. Web tarayıcınızı HDFS WEBUI'ye ( namenode_machine:50070) yönlendirin, kopyalamak istediğiniz dosyaya göz atın, sayfayı aşağı kaydırın ve dosyayı indirmek için tıklayın .

mükemmel tariq, anladım, dosya altında bir dosyanın fiziksel konumu yok, hatta dizin. bin / hadoop dfs -ls / use / hadoop / myfolder dosyayı görüntüleyebiliyorum, Gönderen bilgisini aldım Dosyayı incelemek için HDFS'den yerel dosya sistemine kopyalayabilirsiniz , bu yüzden onları winscp'den taşıyabilirim
Surya

2
bir kez daha tarikattan bahsetmem gerekiyor, zaman ve bilgiye katkıda bulunduğunuz için çok teşekkürler. çok teşekkürler . çok destek verdiniz, bu benim gibi yeni bir bie için çok güven veriyor.
Surya

1
Anlıyorum. Dosyanın içeriğini görmek veya dosyayı webui'de açmak istiyorsanız hdfs cat komutunu kullanabilirsiniz. Bu, dosyayı yerel fs'nize indirmenizi önler. Rica ederim. Ve sorularınızın cevaplarından% 100 memnunsanız, başkalarının bundan yararlanabilmesi için onları işaretleyebilirsiniz .. Sadece bu değil, genel olarak.
Tarık

2
Latince yorumuma eklemek için, eğer bir ikili dosya ise, kedi size gerçek içeriği göstermez. Bir ikili dosyanın içeriğini görüntülemek için şunları kullanabilirsiniz: bin / hadoop fs -text / path / to / file
Tariq

1
Bir hata (sabit) gibi görünüyor. Cevaba bakınız.
Tarık

27

Hadoop 2.0'da,

hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>

nerede,

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

  • output_path dosyanın kopyalanacağı yerel yoludur.

  • getyerine de kullanabilirsiniz copyToLocal.


15

Dosyaları HDFS'den yerel dosya sistemine kopyalamak için aşağıdaki komut çalıştırılabilir:

hadoop dfs -copyToLocal <input> <output>

  • <input>: kopyalamak istediğiniz HDFS dizin yolu (örn. / verilerim)
  • <output>: hedef dizin yolu (örn. ~ / Belgeler)

1
Bu benim için işe yaramıyor. Her zaman <input> dosyası bulunamadı der. Cloudera'nın yüzde os 6.4 olan VM örneğini kullanıyorum
SutharMonil

@SutharMonil Dosyanın gerçekten orada olduğundan emin misiniz? Oraya göz atabilir misiniz hadoop fs -ls?
Dennis Jaheruddin

6

her iki şekilde de başarabilirsiniz.

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

Ör:

Dosyalarım /sourcedata/mydata.txt konumunda bulunuyor Dosyayı bu yoldaki Yerel dosya sistemine kopyalamak istiyorum / user / ravi / mydata

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

3

Kaynak "dosyanız", aynı dizin ağacında yaşayan birden fazla dosyaya bölünmüşse (belki de harita küçültme sonucunda), aşağıdakilerle yerel bir dosyaya kopyalayabilirsiniz:

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

Bu kabul edilmelidir. Çoğu insanın aradığı şey bu, bölünmüş bir dosya değil.
James O'Brien

2

Bu benim için Ubuntu VM örneğimde işe yaradı.

hdfs dfs -copyToLocal [hadoop dizini] [yerel dizin]


0

liman işçisi kullanıyorsanız aşağıdaki adımları uygulamanız gerekir:

  1. dosyayı hdfs'den adenode (hadoop fs -get output / part-r-00000 / out_text) kopyalayın. "/ out_text" isim sayfasında saklanacak.

  2. dosyayı adenode'dan yerel diske kopyalayın (docker cp namenode: / out_text output.txt)

  3. output.txt geçerli çalışma dizininizde olacak


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

1
hdfs dfs -put, dosyaları yerel FS'den HDFS'ye aktarmak için kullanılan bir komuttur. hdfs dfs -get doğru seçenektir
b_rousseau
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.