2011-09-20 21 views
23

मैं ईएमआर, से अधिक छत्ता चल रहा हूँ और सभी ईएमआर उदाहरणों के लिए कुछ फ़ाइलों की प्रतिलिपि की जरूरत है।मैं एस 3 से अमेज़ॅन ईएमआर एचडीएफएस में फ़ाइलों की प्रतिलिपि कैसे बना सकता हूं?

एक तरीका जिस तरह से मैं समझता हूं कि प्रत्येक नोड पर स्थानीय फाइल सिस्टम में फाइलों की प्रतिलिपि बनाना है, दूसरी बात यह है कि फ़ाइलों को एचडीएफएस में कॉपी करना है, हालांकि मुझे एस 3 से एचडीएफएस में स्ट्रेट कॉपी करने का एक आसान तरीका नहीं मिला है।

इस बारे में जाने का सबसे अच्छा तरीका क्या है?

उत्तर

26

यह करने के लिए सबसे अच्छा तरीका है Hadoop के distcp आदेश का उपयोग करने के लिए है। उदाहरण (क्लस्टर नोड्स में से एक पर):

% ${HADOOP_HOME}/bin/hadoop distcp s3n://mybucket/myfile /root/myfile

यह एक फ़ाइल myFile नामक एक S3 बाल्टी नामित mybucket से /root/myfile को HDFS में नक़ल की। ध्यान दें कि यह उदाहरण मानता है कि आप "मूल" मोड में S3 फ़ाइल सिस्टम का उपयोग कर रहे हैं; इसका मतलब है कि हैडोप प्रत्येक ऑब्जेक्ट को S3 में फ़ाइल के रूप में देखता है। यदि आप इसके बजाय ब्लॉक मोड में S3 का उपयोग करते हैं, तो आप उपरोक्त उदाहरण में s3n को s3 के साथ प्रतिस्थापित करेंगे। देशी एस 3 और ब्लॉक मोड के बीच अंतर के साथ-साथ उपरोक्त उदाहरण पर एक विस्तार के बारे में अधिक जानकारी के लिए, http://wiki.apache.org/hadoop/AmazonS3 देखें।

मैंने पाया कि distcp एक बहुत शक्तिशाली उपकरण है। S3 के अंदर और बाहर फ़ाइलों की एक बड़ी मात्रा की प्रतिलिपि बनाने के लिए इसका उपयोग करने में सक्षम होने के अतिरिक्त, आप बड़े डेटा सेट के साथ तेज़ क्लस्टर-टू-क्लस्टर प्रतियां भी कर सकते हैं। एक ही नोड के माध्यम से सभी डेटा को धक्का देने के बजाय, distcp हस्तांतरण करने के लिए समानांतर में एकाधिक नोड्स का उपयोग करता है। स्थानीय फाइल सिस्टम में मध्यस्थ के रूप में सबकुछ कॉपी करने के विकल्प की तुलना में, बड़ी मात्रा में डेटा स्थानांतरित करते समय यह काफी तेजी से distcp बनाता है।

+0

अभी भी जबकि distcp का उपयोग कर HDFS को S3 चलती कुछ त्रुटि हो रही है। मेरे मामले में मैं 40 या 50% चलने के बाद बहुत बड़ी फ़ाइल (300 जीबी से अधिक) को स्थानांतरित करने की कोशिश कर रहा हूं, यह शुरूआत शुरू नहीं होता है। कोई उपाय?? – rht

3

नोट है कि अमेज़न के अनुसार, http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/FileSystemConfig.html पर "अमेज़न लचीला MapReduce - सिस्टम विन्यास फाइल", एस 3 ब्लॉक FileSystem बहिष्कृत हो गई है और उसके यूआरआई उपसर्ग अब s3bfs है: // और वे विशेष रूप से इसे का उपयोग के बाद से "यह एक ट्रिगर कर सकते हैं हतोत्साहित दौड़ की स्थिति जो आपके नौकरी के प्रवाह को विफल कर सकती है "।

एक ही पृष्ठ के अनुसार, HDFS अब 'प्रथम श्रेणी' एस 3 के तहत फाइल सिस्टम है, हालांकि यह अल्पकालिक है (जब Hadoop नौकरियों समाप्त होता चला जाता है)। s3distcp:

15

अब अमेज़न अपने आप में एक आवरण distcp से अधिक लागू किया, अर्थात् है।

S3DistCp DistCp कि अमेजन वेब सेवाओ (एडब्ल्यूएस) के साथ काम करने के लिए अनुकूलित किया गया है, विशेष रूप से अमेज़न सरल संग्रहण सेवा (अमेज़न S3) का एक विस्तार है। आप इसे नौकरी प्रवाह में एक कदम के रूप में जोड़कर S3DistCp का उपयोग करते हैं। S3DistCp का उपयोग करके आप कुशलता से जहां यह अपने अमेज़न लचीला MapReduce (अमेज़न ईएमआर) काम के प्रवाह में बाद के चरणों से संसाधित किया जा सकता HDFS में अमेज़न S3 से डेटा की बड़ी मात्रा कॉपी कर सकते हैं। तुम भी अमेज़न S3 बाल्टी के बीच या HDFS से अमेज़न को S3 डेटा की प्रतिलिपि S3DistCp उपयोग कर सकते हैं

उदाहरण की प्रतिलिपि अमेज़न S3 से लॉग फ़ाइलें

HDFS को यह निम्न उदाहरण दिखाता है लोग इन फ़ाइलों की प्रतिलिपि करने के लिए कैसे एक अमेज़ॅन एस 3 बाल्टी में एचडीएफएस में संग्रहीत। इस उदाहरण में --srcPattern विकल्प का उपयोग डिमन लॉग पर कॉपी किए गए डेटा को सीमित करने के लिए किया जाता है।

elastic-mapreduce --jobflow j-3GY8JC4179IOJ --jar \ 
s3://us-east-1.elasticmapreduce/libs/s3distcp/1.latest/s3distcp.jar \ 
--args '--src,s3://myawsbucket/logs/j-3GY8JC4179IOJ/node/,\ 
--dest,hdfs:///output,\ 
--srcPattern,.*daemons.*-hadoop-.*' 
संबंधित मुद्दे