तकनीकी रूप से s3n, s3a और s3 में क्या अंतर है?


121

मैं https://wiki.apache.org/hadoop/AmazonS3 और निम्नलिखित शब्दों के अस्तित्व से अवगत हूं :

S3 नेटिव फाइलसिस्टम (URI स्कीम: s3n) S3 पर नियमित फाइल पढ़ने और लिखने के लिए एक देशी फाइल सिस्टम। इस फाइलसिस्टम का लाभ यह है कि आप उन S3 पर फ़ाइलों तक पहुँच सकते हैं जो अन्य उपकरणों के साथ लिखी गई थीं। इसके विपरीत, अन्य उपकरण Hadoop का उपयोग करके लिखी गई फ़ाइलों तक पहुँच सकते हैं। नुकसान S3 द्वारा लगाए गए फ़ाइल आकार पर 5GB की सीमा है।

S3A (URI स्कीम: s3a) S3 Native, s3n fs, S3a का उत्तराधिकारी: सिस्टम S3 के साथ इंटरैक्ट करने के लिए अमेजन के पुस्तकालयों का उपयोग करता है। यह S3a को बड़ी फ़ाइलों (अधिक 5GB सीमा), उच्च प्रदर्शन संचालन और अधिक का समर्थन करने की अनुमति देता है। फाइलसिस्टम S3 मूल के लिए / उत्तराधिकारी के लिए एक प्रतिस्थापन होने का इरादा रखता है: s3n से सुलभ सभी वस्तुओं: // URL को URL स्कीमा की जगह बस s3a से एक्सेस किया जाना चाहिए।

S3 ब्लॉक फाइलसिस्टम (URI स्कीम: s3) S3 द्वारा समर्थित ब्लॉक-आधारित फाइलसिस्टम। फ़ाइलों को ब्लॉक के रूप में संग्रहीत किया जाता है, जैसे वे एचडीएफएस में हैं। यह नाम बदलने के कुशल कार्यान्वयन की अनुमति देता है। इस फाइलसिस्टम को आपको फाइलसिस्टम के लिए एक बाल्टी समर्पित करने की आवश्यकता है - आपको एक मौजूदा बाल्टी युक्त फाइल का उपयोग नहीं करना चाहिए, या अन्य फाइलों को उसी बाल्टी में लिखना चाहिए। इस फाइलसिस्टम द्वारा संग्रहित फाइलें 5GB से बड़ी हो सकती हैं, लेकिन वे अन्य S3 टूल के साथ इंटरऑपरेबल नहीं हैं।

यूआरआई पर एक अक्षर परिवर्तन से ऐसा अंतर क्यों हो सकता है? उदाहरण के लिए

val data = sc.textFile("s3n://bucket-name/key")

सेवा

val data = sc.textFile("s3a://bucket-name/key")

इस बदलाव में तकनीकी अंतर क्या है? क्या कोई अच्छा लेख है जो मैं इस पर पढ़ सकता हूं?

जवाबों:


136

URI स्कीम पर अक्षर परिवर्तन एक बड़ा बदलाव करता है क्योंकि यह S3 को इंटरफ़ेस करने के लिए अलग-अलग सॉफ़्टवेयर का उपयोग करता है। Http और https के बीच के अंतर की तरह कुछ - यह केवल एक-अक्षर का परिवर्तन है, लेकिन यह व्यवहार में एक बड़े अंतर को ट्रिगर करता है।

S3 और s3n / s3a के बीच अंतर यह है कि s3 अमेज़न S3 के शीर्ष पर एक ब्लॉक-आधारित ओवरले है, जबकि s3n / s3a नहीं हैं (वे ऑब्जेक्ट-आधारित हैं)।

S3n और s3a के बीच का अंतर यह है कि s3n 5GB तक की वस्तुओं को आकार में सपोर्ट करता है, जबकि s3a 5TB तक की वस्तुओं का समर्थन करता है और इसमें उच्च प्रदर्शन (दोनों हैं क्योंकि यह मल्टी-पार्ट अपलोड का उपयोग करता है)। s3a s3n का उत्तराधिकारी है।

यदि आप यहां हैं क्योंकि आप यह समझना चाहते हैं कि आपको कौन सी एस 3 फाइल सिस्टम का उपयोग करना चाहिए जो कि अमेज़ॅन ईएमआर के साथ उपयोग करना चाहिए, तो अमेज़ॅन से यह लेख पढ़ें (केवल Wayback मशीन पर उपलब्ध है)। नेट है: s3: // का उपयोग करें क्योंकि s3: // और s3n: // EMR के संदर्भ में कार्यात्मक रूप से विनिमेय हैं, जबकि s3a: // EMR के साथ संगत नहीं है।

अतिरिक्त सलाह के लिए, संग्रहण और फ़ाइल सिस्टम के साथ कार्य पढ़ें ।


13
अमेज़ॅन का समर्थन लेख अभी भी अद्यतित प्रतीत होता है, लेकिन मैं अब इस s3aयोजना का उपयोग करके ईएमआर नौकरियों से एस 3 को लिख सकता हूं । यह संभव है कि उत्तर को संशोधित किया जाना चाहिए।
एमएलजी

1
@ mig जबकि s3a काम कर सकता है, और यह मेरे अनुभव में काम करता है, यह तकनीकी रूप से AWS द्वारा समर्थित नहीं है। इसलिए, मुझे लगता है कि आप इसे अपने जोखिम पर इस्तेमाल करेंगे।
जरमोद 21:18

@jarmod आप यहाँ उद्धृत लेख अब काम नहीं करता है। क्या आप लिंक को अपडेट कर पाएंगे?
christang

@christang ऐसा लगता है कि यह अब उपलब्ध नहीं है इसलिए वेबैक मशीन लिंक प्रदान किया है।
जरमॉड

2
असल में, AWS सपोर्ट s3a की अनुशंसा करता है: // s3a का एक स्थान: // किसी भी समर्थन टिकट के लिए
Abhi

56

Apache Hadoop में, "s3: //" मूल S3 क्लाइंट को संदर्भित करता है, जिसने स्केलेबिलिटी के लिए एक गैर-मानक संरचना का उपयोग किया था। वह पुस्तकालय हटा दिया गया है और जल्द ही हटा दिया जाएगा,

s3n इसका उत्तराधिकारी है, जो वस्तुओं के लिए सीधे पथ नामों का उपयोग करता है, इसलिए आप अन्य एप्लिकेशन के साथ डेटा पढ़ और लिख सकते हैं। जैसे s3: //, यह S3 से बात करने के लिए जेट्स 3t.jar का उपयोग करता है।

अमेज़ॅन की EMR सेवा पर, s3: // अमेज़न के अपने S3 क्लाइंट को संदर्भित करता है, जो अलग है। EMR पर s3: // में पथ ऑब्जेक्ट स्टोर में किसी ऑब्जेक्ट को सीधे संदर्भित करता है।

Apache Hadoop में, S3N और S3A दोनों S3 के लिए कनेक्टर हैं, S3A के साथ-साथ अमेज़ॅन के अपने AWS SDK का उपयोग करके बनाया गया है। नया नाम क्यों? इसलिए हम इसे स्थिर कर सकते हैं, जो कि स्थिर था। S3A वह जगह है जहां स्केलेबिलिटी, परफॉर्मेंस, सिक्योरिटी आदि पर काम चल रहा है। S3N अकेला बचा है इसलिए हम इसे नहीं तोड़ते हैं। S3A ने Hadoop 2.6 में भेज दिया, लेकिन 2.7 तक स्थिर रहा, मुख्य रूप से कुछ मामूली पैमाने की समस्याओं के साथ।

यदि आप Hadoop 2.7 या बाद के संस्करण का उपयोग कर रहे हैं, तो s3a का उपयोग करें। यदि आप Hadoop 2.5 या इससे पहले का उपयोग कर रहे हैं। s3n, यदि आप Hadoop 2.6 का उपयोग कर रहे हैं, तो यह एक कठिन विकल्प है। -मैं s3a की कोशिश करेंगे और अगर समस्या थी तो s3n पर वापस जाएँ

अधिक इतिहास के लिए, http://hortonworks.com/blog/history-apache-hadoops-support-amazon-3/ देखें

2017-03-14 अपडेट वास्तव में, Hadoop 2.6 में S3a पर विभाजन टूट गया है, क्योंकि एक listFiles()कॉल में लौटाया गया ब्लॉक आकार 0 है: स्पार्क और सुअर विभाजन जैसे कार्य एक कार्य / बाइट में कार्य करते हैं। Hadoop 2.6 में एनालिटिक्स के काम के लिए आप S3a का उपयोग नहीं कर सकते, भले ही कोर फाइल सिस्टम ऑपरेशन और डेटा जेनरेशन खुश हो। Hadoop 2.7 इसे ठीक करता है।

2018-01-10 अपडेट Hadoop 3.0 ने अपने s3: और s3n कार्यान्वयन को काट दिया है: s3a आपको सभी मिल रहा है। यह अब अपने पूर्ववर्ती की तुलना में काफी बेहतर है और अमेज़ॅन कार्यान्वयन के रूप में कम से कम अच्छा करता है। अमेज़न का "s3:" अभी भी EMR द्वारा पेश किया जाता है, जो उनके बंद स्रोत ग्राहक हैं। अधिक जानकारी के लिए EMR डॉक्स से परामर्श करें ।

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