2016-02-22 10 views
5

के साथ एस 3 में सहेजने में सक्षम नहीं है मैं स्पार्क नौकरियों को चलाने के लिए एडब्ल्यूएस ईएमआर क्लस्टर चला रहा हूं। एस 3 बाल्टी के साथ काम करने के लिए, एन्क्रिप्शन के लिए इस्तेमाल होने के लिए हैडऑप कॉन्फ़िगरेशन एक्सेस-कुंजियों, गुप्त-कुंजी, सक्षम सर्वरसाइड एन्क्रिप्शन और एल्गोरिदम के साथ सेट किया गया है। कृपया ऊपर विन्यास के तहत नीचेस्पार्क/हाडोप - सर्वर साइड एन्क्रिप्शन

val hadoopConf = sc.hadoopConfiguration; hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem") hadoopConf.set("fs.s3.awsAccessKeyId", "xxx") hadoopConf.set("fs.s3.awsSecretAccessKey", "xxx") hadoopConf.set("fs.s3.enableServerSideEncryption", "true") hadoopConf.set("fs.s3.serverSideEncryptionAlgorithm","AES256")

कोड देखते हैं, चिंगारी कार्यक्रम, S3 बाल्टी से पढ़ने के प्रसंस्करण प्रदर्शन करने में सक्षम है। लेकिन जब यह s3 को परिणाम सहेजने का प्रयास करता है तो विफल रहता है, जो लागू करता है कि डेटा एन्क्रिप्ट किया जाना चाहिए। यदि बाल्टी अनियंत्रित डेटा की अनुमति देती है, तो यह सफलतापूर्वक अन-एन्क्रिप्टेड सहेजी जाती है।

ऐसा तब भी होता है जब क्लस्टर उस विकल्प के साथ बनाया गया हो जो सर्वर साइड एन्क्रिप्शन --emrfs Encryption=ServerSide,Args=[fs.s3.serverSideEncryptionAlgorithm=AES256] लागू करता है।

एडीआर से एस 3 पर एचडीएफएस से हडूप डीसीसीपी भी असफल हो जाता है। लेकिन, s3-dist-copy (aws संस्करण hdfs distcp) --s3ServerSideEncryption विकल्प के साथ सेट होने पर सफलतापूर्वक काम करता है।

लेकिन, ec2 इंस्टेंस में किसी भी उपयोगकर्ता पहुंच कुंजी का उपयोग किये बिना सर्वर साइड एन्क्रिप्शन के साथ एक ही बाल्टी में डेटा अपलोड करने की आवश्यक भूमिका अनुमति है। कृपया नीचे उदाहरण कमांड देखें। अगर निम्न आदेश में छोड़ा गया है, तो यह "एक्सेस अस्वीकृत त्रुटि" फेंक देगा।

aws s3 cp test.txt s3://encrypted-bucket/ —sse

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

उत्तर

4

अब यह हल हो गया है। --emrfs ने कॉन्फ़िगरेशन को सही तरीके से लागू नहीं किया था। लेकिन aws emr create-cluster के साथ नीचे दिया गया विकल्प स्पार्क और hadoop distcp दोनों के साथ काम करता है।

--configurations '[{"Classification":"emrfs-site","Properties":{"fs.s3.enableServerSideEncryption":"true"},"Configurations":[]}]'

EC2 उदाहरणों के रूप में भूमिका प्रोफ़ाइल/बाल्टी से लिखने पढ़ने के लिए के साथ सेटअप किया गया है, मेरी चिंगारी कोड एडब्ल्यूएस पहुंच कुंजियों प्रदान करने के लिए बिना काम किया।

अधिक ईएमआर विन्यास विकल्पों में उपलब्ध है जो emr create-clusterhttp://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html

साथ --configuration विकल्प के साथ इस्तेमाल किया जा सकता है, मुझे यकीन है कि क्यों एडब्ल्यूएस ईएमआर ही बात कर के लिए 2 विकल्प दे रहा है नहीं कर रहा हूँ। एक काम करता है और अन्य नहीं।

संबंधित मुद्दे