के साथ एस 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 में आवश्यक विन्यास के साथ मदद कर सकता है, उपयोगी होगा।