एचडीएफएस से स्थानीय फाइल सिस्टम में फाइल कॉपी कैसे करें


135

एचडीएफएस से स्थानीय फाइल सिस्टम में फाइल कॉपी कैसे करें। फ़ाइल के नीचे कोई भौतिक स्थान नहीं है, निर्देशिका भी नहीं है। आगे के सत्यापन के लिए मैं उन्हें अपने स्थानीय में कैसे स्थानांतरित कर सकता हूं।

जवाबों:


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) के लिए अपने वेब ब्राउज़र को इंगित करें , जिस फाइल को कॉपी करने का इरादा है, उसे ब्राउज़ करें, पृष्ठ को नीचे स्क्रॉल करें और फ़ाइल को डाउनलोड करें पर क्लिक करें ।

एकदम सही तारिक, मुझे मिल गया, फ़ाइल के नीचे कोई भौतिक स्थान नहीं है, निर्देशिका भी नहीं है। बिन / हडूप dfs -ls / use / hadoop / myfolder मैं फ़ाइल देख सकता हूं, जब से मुझे जानकारी मिली है कि फ़ाइल का निरीक्षण करने के लिए, आप इसे एचडीएफएस से स्थानीय फ़ाइल सिस्टम में कॉपी कर सकते हैं , इसलिए हालांकि मैं उन्हें wincp से स्थानांतरित कर सकता हूं
सूर्या

2
एक बार फिर मुझे तारिक का उल्लेख करने की आवश्यकता है, आपके समय और ज्ञान में योगदान देने के लिए बहुत बहुत धन्यवाद। बहुत बहुत धन्यवाद । यू ने बहुत समर्थन किया, इससे मेरी तरह एक नई बाई के लिए बहुत आत्मविश्वास मिलता है।
सूर्या

1
समझा। यदि आप फ़ाइल की सामग्री को देखना चाहते हैं या webui पर फ़ाइल खोलना चाहते हैं, तो आप वास्तव में hdfs कैट कमांड का उपयोग कर सकते हैं। यह आपको फ़ाइल को अपने स्थानीय fs में डाउनलोड करने से बचाएगा। आपका स्वागत है। और यदि आप अपने प्रश्नों के उत्तर से 100% संतुष्ट हैं तो आप उन्हें चिन्हित कर सकते हैं ताकि दूसरे लोग इससे लाभान्वित हो सकें .. न केवल इस के लिए, बल्कि सामान्य रूप से।
तारिक

2
बस मेरी लेट टिप्पणी में जोड़ने के लिए, अगर यह एक द्विआधारी फ़ाइल है, तो बिल्ली आपको वास्तविक सामग्री नहीं दिखाएगी। एक द्विआधारी फ़ाइल की सामग्री को देखने के लिए जिसका आप उपयोग कर सकते हैं: बिन / हडूप fs -text / path / to / file
तारिक

1
यह एक बग (निश्चित) लगता है। उत्तर देखें।
तारिक

27

Hadoop 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

एचडीएफएस से फाइल को स्थानीय फाइल सिस्टम में कॉपी करने के लिए निम्नलिखित कमांड को चलाया जा सकता है:

hadoop dfs -copyToLocal <input> <output>

  • <input>: HDFS निर्देशिका पथ (जैसे / mydata) जिसे आप कॉपी करना चाहते हैं
  • <output>: गंतव्य निर्देशिका पथ (जैसे ~ / दस्तावेज़)

1
यह मेरे लिए काम नहीं करता है। यह हमेशा कहता है <इनपुट> फ़ाइल नहीं मिली। मैं क्लाउडरा के वीएम इंस्टेंस का उपयोग कर रहा हूं, जिसमें सेंट ओएस 6.4
सुथारमोनील

@SutharMonil क्या आपको यकीन है कि फ़ाइल वास्तव में है? आप के माध्यम से वहाँ ब्राउज़ कर सकते हैं hadoop fs -ls?
डेनिस जहीरुद्दीन 21

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 में स्थित हैं, मैं फ़ाइल को इस पथ / उपयोगकर्ता / रवि / mydata में स्थानीय फ़ाइल सिस्टम में कॉपी करना चाहता हूं

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

3

यदि आपका स्रोत "फ़ाइल" कई फ़ाइलों (शायद मानचित्र-कम के परिणाम के रूप में) के बीच विभाजित है, जो एक ही डायरेक्टरी ट्री में रहते हैं, तो आप इसे स्थानीय फ़ाइल में कॉपी कर सकते हैं:

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

इसे स्वीकार किया जाना चाहिए। यह वही है जो ज्यादातर लोग देख रहे हैं, न कि एक विभाजित फाइल।
जेम्स ओ'ब्रायन

2

इसने मेरे लिए उबंटू के मेरे वीएम उदाहरण पर काम किया।

hdfs dfs -copyToLocal [हडूप निर्देशिका] [स्थानीय निर्देशिका]


0

यदि आप docker का उपयोग कर रहे हैं तो आपको निम्नलिखित चरण करने होंगे:

  1. फाइल को एचडीएफएस से नामेनोड (हडूप एफएस -गेट आउटपुट / पार्ट-आर-00000 / आउट_टेक्स्ट) में कॉपी करें। "" out_text "को नेमेनोड पर संग्रहीत किया जाएगा।

  2. फ़ाइल को नामेनोड से स्थानीय डिस्क पर कॉपी करें (docker cp namenode: / out_text output.txt)

  3. output.txt आपके वर्तमान कार्यशील निर्देशिका पर होगा


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

1
hdfs dfs -पुट एक कमांड है जो फाइल्स को लोकल FS से HDFS में पुश करता है। hdfs dfs -get सही विकल्प है
b_rousseau
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.