"हडूप एफएस" शेल कमांड और "एचडीएफएस डीएफएस" शेल कमांड में क्या अंतर है?


109

क्या वे समान होने चाहिए?

लेकिन, क्यों " hadoop fs" कमांड स्थानीय फ़ाइल दिखाते hdfs filesसमय " hdfs dfs" कमांड दिखाते हैं?

यहाँ हैवड संस्करण की जानकारी:

Hadoop 2.0.0-mr1-cdh4.2.1 तोड़फोड़ git: //ubuntu-slave07.jenkins.cloudera.com/var/lib/jenkins/workspace/CDH4.1.1-Packaging-MR1/build/cdh4/mr1/2.02/2.0 -mr1-cdh4.2.1 / स्रोत -r पर संकलित द्वारा जेनकींस सोम अप्रैल 22 10:48:26 पीडीटी 2013


1
यह सवाल पूछना मेरा गलत है। hdfs dfsHDFS फ़ाइलें भी दिखा।
चार्ली लिन

जवाबों:


140

निम्नलिखित तीन आज्ञाएँ हैं जो समान दिखाई देती हैं लेकिन मिनट के अंतर हैं

  1. हडूप fs {आर्ग्स}
  2. हडॉप dfs {आर्ग्स}
  3. hdfs dfs {args}

  hadoop fs <args>

FS एक सामान्य फ़ाइल प्रणाली से संबंधित है जो स्थानीय, HDFS आदि जैसे किसी भी फ़ाइल सिस्टम को इंगित कर सकती है, इसलिए इसका उपयोग तब किया जा सकता है जब आप विभिन्न फ़ाइल सिस्टम जैसे कि स्थानीय FS, (S) FTP, S3 और अन्य के साथ काम कर रहे हों


  hadoop dfs <args>

dfs HDFS के लिए बहुत विशिष्ट है। ऑपरेशन के लिए काम करेगा HDFS से संबंधित है। यह पदावनत कर दिया गया है और हमें इसके बजाय hdfs dfs का उपयोग करना चाहिए ।


  hdfs dfs <args>

जैसा कि 2nd यानी HDFS से संबंधित सभी परिचालनों के लिए काम करेगा और हैडऑफ़ dfs के बजाय अनुशंसित कमांड है

नीचे दी गई सूची को hdfsकमांड के रूप में वर्गीकृत किया गया है ।

  namenode|secondarynamenode|datanode|dfs|dfsadmin|fsck|balancer|fetchdt|oiv|dfsgroups

इसलिए यदि आप हैडऑफ डीएफएस का उपयोग करते हैं , तो यह एचडीएफएस का पता लगाएगा और उस कमांड को एचडीएफएस डीएफएस को सौंप देगा


5
दिलचस्प :-)। तो, अगर hadoop fsस्थानीय या hdfs की तरह किसी भी फाइल सिस्टम से संबंधित है , तो जब मैं करता हूं तो एचडीएसएफ रूट डायरेक्टरी कंटेंट को दिखाने के लिए हडूप कैसे चुनता है hadoop fs -ls /? जब मैं hadoop fs -ls /कमांड चलाता हूं, तो मैं अपने स्थानीय रूट निर्देशिका सामग्री को दिखाने के लिए हडूप कैसे कह सकता हूं ?
sgsi

8
आप कमांड (जैसे ) के fileतर्क के रूप में पारित यूआरआई में स्कीमा का उपयोग करके स्थानीय एफएस का उल्लेख कर सकते हैं । अगर कुछ भी नहीं कहा जाता है, तो यह स्कीमा, AFAIK ( == ) में चूक करता है । hadoop fshdoop fs -ls file:///hdfshdoop fs -ls /hadoop fs -ls hdfs:///
१२:०५

2
और मुझे इसकी आवश्यकता क्यों होगी hadoop fs -ls file:///, जबकि स्थानीय फ़ाइलों को सूचीबद्ध करने के लिए अधिक परंपरागत तरीके हैं?
श्रीक्टा

'hdfs' के पक्ष में 'हडूप' को अपदस्थ क्यों किया गया? क्या कोई कार्यात्मक अंतर है या यह सिंटैक्स में सिर्फ एक बदलाव है?
शुकलस्वाग

31

यहां छवि विवरण दर्ज करें

https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html

फ़ाइल सिस्टम (FS) शेल में विभिन्न शेल-जैसे कमांड शामिल होते हैं जो सीधे Hadoop डिस्ट्रिब्यूटेड फ़ाइल सिस्टम (HDFS) के साथ-साथ अन्य फ़ाइल सिस्टम के साथ बातचीत करते हैं जो Hadoop का समर्थन करता है, जैसे कि स्थानीय FS, WebHDFS, S3 FS और अन्य।

बिन / हडूप एफएस <args>

सभी FS शेल कमांड तर्क के रूप में URI को पथ लेते हैं। URI प्रारूप योजना है: // प्राधिकारी / पथ। एचडीएफएस के लिए योजना एचडीएफएस है, और स्थानीय एफएस के लिए योजना फ़ाइल है। योजना और प्राधिकरण वैकल्पिक हैं। यदि निर्दिष्ट नहीं है, तो कॉन्फ़िगरेशन में निर्दिष्ट डिफ़ॉल्ट योजना का उपयोग किया जाता है। एक HDFS फ़ाइल या निर्देशिका जैसे / माता-पिता / बच्चे को hdfs के रूप में निर्दिष्ट किया जा सकता है: // namenodehost / parent / child या बस के रूप में / माता-पिता / बच्चे (यह देखते हुए कि आपका कॉन्फ़िगरेशन hdfs को इंगित करने के लिए सेट है: // namenodehost)।

एफएस शेल में अधिकांश कमांड संगत यूनिक्स कमांड की तरह व्यवहार करते हैं। प्रत्येक कमांड के साथ अंतर का वर्णन किया गया है। त्रुटि की जानकारी stderr को भेज दी जाती है और आउटपुट stdout को भेज दिया जाता है।

यदि HDFS का उपयोग किया जा रहा है,

hdfs dfs

एक पर्यायवाची है।


5

एफएस किसी भी फाइल सिस्टम को संदर्भित करता है, यह स्थानीय या एचडीएफएस हो सकता है लेकिन डीएफएस केवल एचडीएफएस फाइल सिस्टम को संदर्भित करता है। इसलिए यदि आपको अलग-अलग फाइल सिस्टम के बीच एक्सेस / ट्रांसफर डेटा करने की जरूरत है, तो एफएस जाने का रास्ता है।


5

मैं जो बता सकता हूं, उसमें hdfs dfsऔर दोनों में कोई अंतर नहीं है hadoop fs। आपके द्वारा उपयोग किए जा रहे Hadoop के किस संस्करण के आधार पर वे बस अलग-अलग नामकरण परंपराएं हैं। उदाहरण के लिए, में नोट्स 1.2.1 उपयोग hdfs dfsकरते हुए 0.19 का उपयोग करता है hadoop fs। ध्यान दें कि अलग-अलग कमांड को शब्दशः वर्णित किया गया है। उनका उपयोग पहचान के रूप में किया जाता है।

यह भी ध्यान दें कि दोनों कमांड आपके द्वारा निर्दिष्ट किए गए (एचडीएफएस, फ़ाइल, एस 3, आदि) के आधार पर अलग-अलग फ़ाइल सिस्टम को संदर्भित कर सकते हैं। यदि कोई फ़ाइल सिस्टम सूचीबद्ध नहीं है, तो वे डिफ़ॉल्ट पर वापस आते हैं जो आपके कॉन्फ़िगरेशन में निर्दिष्ट है।

आप Hadoop 2.0.0 का उपयोग कर रहे हैं और ऐसा लगता है ( 2.0.5 प्रलेखन पर आधारित ) जिसका उपयोग अल्फा संस्करण करते हैं hadoop fsऔर यह आपके कॉन्फ़िगरेशन में डिफ़ॉल्ट योजना के रूप में HDFS का उपयोग करने के लिए निर्धारित है। hdfs dfsआदेश से पहले से में छोड़ा जा सकता है, और के बाद से विन्यास में निर्दिष्ट नहीं है, सिर्फ स्थानीय फाइल सिस्टम के लिए दोषी हो सकता है।

इसलिए मैं बस के साथ रहना होगा hadoop fsऔर प्रलेखन में बहुत चिंता नहीं है, वे समान हैं।


3

FS एक सामान्य फाइल सिस्टम से संबंधित है जो स्थानीय, HDFS आदि जैसे किसी भी फाइल सिस्टम को इंगित कर सकता है, लेकिन dfs HDFS के लिए बहुत विशिष्ट है। इसलिए जब हम FS का उपयोग करते हैं तो यह गंतव्य से / स्थानीय और हडॉप वितरित फाइल सिस्टम के साथ ऑपरेशन कर सकता है। लेकिन DFS ऑपरेशन को निर्दिष्ट करना HDFS से संबंधित है।

नीचे हडूप प्रलेखन के अंश दिए गए हैं जो इन दोनों को अलग-अलग गोले के रूप में वर्णित करते हैं।

FS शैल FileSystem (FS) शेल बिन / हडूप एफएस द्वारा आह्वान किया गया है। सभी FS शेल कमांड यूआरआई को तर्क के रूप में लेते हैं। URI प्रारूप योजना है: // ऑटोरिटी / पाथ। एचडीएफएस के लिए योजना एचडीएफएस है, और स्थानीय फाइलसिस्टम के लिए यह योजना फ़ाइल है। योजना और प्राधिकरण वैकल्पिक हैं। यदि निर्दिष्ट नहीं है, तो कॉन्फ़िगरेशन में निर्दिष्ट डिफ़ॉल्ट योजना का उपयोग किया जाता है। एक HDFS फ़ाइल या निर्देशिका जैसे / माता-पिता / बच्चे को hdfs के रूप में निर्दिष्ट किया जा सकता है: // namenodehost / parent / child या बस के रूप में / माता-पिता / बच्चे (यह देखते हुए कि आपका कॉन्फ़िगरेशन hdfs को इंगित करने के लिए सेट है: // namenodehost)। एफएस शेल में अधिकांश कमांड संगत यूनिक्स कमांड की तरह व्यवहार करते हैं।

DFShell HDFS शेल को बिन / हडूप dfs द्वारा आमंत्रित किया जाता है। सभी एचडीएफएस शेल कमांड यूआरआई को तर्क के रूप में लेते हैं। URI प्रारूप योजना है: // ऑटोरिटी / पाथ। एचडीएफएस के लिए योजना एचडीएफएस है, और स्थानीय फाइलसिस्टम के लिए यह योजना फ़ाइल है। योजना और प्राधिकरण वैकल्पिक हैं। यदि निर्दिष्ट नहीं है, तो कॉन्फ़िगरेशन में निर्दिष्ट डिफ़ॉल्ट योजना का उपयोग किया जाता है। एक HDFS फ़ाइल या निर्देशिका जैसे / माता-पिता / बच्चे को hdfs के रूप में निर्दिष्ट किया जा सकता है: // namenode: namenodeport / parent / child या बस के रूप में / माता-पिता / बच्चे (यह देखते हुए कि आपका कॉन्फ़िगरेशन namenode: namenodeport पर इंगित करने के लिए सेट है)। एचडीएफएस शेल में अधिकांश कमांड संगत यूनिक्स कमांड की तरह व्यवहार करते हैं।

तो ऊपर से यह निष्कर्ष निकाला जा सकता है कि यह सब योजना कॉन्फ़िगर पर निर्भर करता है। पूर्ण यूआरआई के साथ इस दो कमांड का उपयोग करते समय, अर्थात योजना: // ए / बी व्यवहार समान होगा। केवल फ़ाइल और एचडीएफ के लिए डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया स्कीम का मान एफएस और डीएफएस के लिए क्रमशः है जो व्यवहार में अंतर का कारण है।


क्यों hdfs dfs hdfs dfs / से अलग स्थान पर इंगित करता है?
मेल

यह अच्छा होगा यदि हडूप के लिए बैश जैसा एक इंटरैक्टिव शेल था
क्रिस

2

fs= फ़ाइल सिस्टम = फ़ाइल सिस्टम
dfsवितरित

fs = अन्य फ़ाइल सिस्टम + वितरित फ़ाइल सिस्टम

FS एक सामान्य फाइल सिस्टम से संबंधित है जो स्थानीय, HDFS आदि जैसे किसी भी फाइल सिस्टम को इंगित कर सकता है, लेकिन dfs HDFS के लिए बहुत विशिष्ट है। इसलिए जब हम FS का उपयोग करते हैं तो यह गंतव्य से / स्थानीय और हडॉप वितरित फाइल सिस्टम के साथ ऑपरेशन कर सकता है। लेकिन DFS ऑपरेशन को निर्दिष्ट करना HDFS से संबंधित है।

यह सब योजना कॉन्फ़िगर पर निर्भर करता है। पूर्ण यूआरआई के साथ इस दो कमांड का उपयोग करते समय, अर्थात scheme://a/bव्यवहार समान होगा। केवल के लिए अपने डिफ़ॉल्ट कॉन्फ़िगर किया गया योजना मूल्य file://और hdfs://के लिए fsऔर dfsक्रमशः जो व्यवहार में अंतर के लिए कारण है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.