2016-09-22 10 views
11

हाल ही में हम "एचएमएफएस पर ईएमआर" -> "एसएम पर ईएमआर" (लगातार दृश्य सक्षम ईएमआरएफएस) से माइग्रेट हुए हैं और हमने महसूस किया है कि एस 3 को लिखने वाले स्पार्क 'सेवएटेबल' (लकड़ी का प्रारूप) एचडीएफएस की तुलना में ~ 4x धीमा था लेकिन हमने DirectParquetOutputCommitter - [1] w/स्पार्क 1.6 का उपयोग करने का कामकाज पाया। S3 सुस्ती के लिएस्पार्क 2.0 'DirectParquetOutputCommitter' को बहिष्कृत करता है, इसके बिना कैसे रहना है?

कारण - हम तथाकथित लकड़ी टैक्स का भुगतान करना पड़ा [2] जहां डिफ़ॉल्ट उत्पादन committer अस्थायी तालिका करने के लिए लिखते हैं और बाद में इसे का नाम बदलता है जहां S3 में नाम बदलने की कार्रवाई

भी बहुत महंगा है हम 'DirectParquetOutputCommitter' का उपयोग करने का जोखिम समझते हैं जो डेटा भ्रष्टाचार w/सट्टा कार्यों को सक्षम करने की संभावना है।

अब w/स्पार्क 2.0 इस वर्ग को बहिष्कृत कर दिया गया है और हम सोच रहे हैं कि टेबल पर हमारे पास कौन से विकल्प हैं ताकि जब हम स्पार्क 2.0 में अपग्रेड करते हैं तो हमें ~ 4x धीमे लिखने की आवश्यकता नहीं होती है। किसी भी विचार/सुझाव/सिफारिशों की अत्यधिक सराहना की जाएगी।

एक वैकल्पिक हल है कि हम में से एक है सोच सकते हैं - HDFS पर सहेजें और फिर s3DistCp के माध्यम से एस 3 में कॉपी (यह कैसे S3 के लिए हमारी हाइव मेटाडाटा-स्टोर अंक के रूप में समझदार तरीके से किया जा सकता है पर कोई विचार?)

ऐसा लगता है कि नेटफ्लिक्स ने इसे ठीक किया है - [3], किसी भी विचार पर जब वे स्रोत खोलने की योजना बना रहे हैं?

धन्यवाद।

[1] - https://github.com/apache/spark/blob/21d5ca128bf3afd5c2d4c7fcc56240e28443474f/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/DirectParquetOutputCommitter.scala

[2] - https://www.appsflyer.com/blog/the-bleeding-edge-spark-parquet-and-s3/

[3] - https://www.youtube.com/watch?v=85sew9OFaYc&feature=youtu.be&t=8m39s http://www.slideshare.net/AmazonWebServices/bdt303-running-spark-and-presto-on-the-netflix-big-data-platform

+0

मुझे अभी भी एक ही समस्या का सामना करना पड़ा है और वापस emr 4.8 पर वापस आ गया है। यहां जवाब देखने के लिए Curios। कुछ और जानकारी यहां मिल सकती है: https://issues.apache.org/jira/browse/SPARK-10063 – Niros

उत्तर

11

आप उपयोग कर सकते हैं: sparkContext.hadoopConfiguration.set("mapreduce.fileoutputcommitter.algorithm.version", "2")

जब से तुम ईएमआर पर हैं बस एस 3 का उपयोग करें (एस 3 ए के लिए कोई ज़रूरत नहीं)

,210

हम स्पार्क 2.0 का उपयोग कर रहे हैं और लकड़ी (के रूप में तेजी से के बारे में HDFS के रूप में) बहुत तेजी से S3 के लिए

आप अधिक पढ़ सकते हैं इस jira टिकट SPARK-10063

0

मुझे लगता है कि Netflix से S3 committer है की जाँच करना चाहते हैं तो लिख पहले से ही खुले खुले: https://github.com/rdblue/s3committer

+0

आज तक, यह लेखन लकड़ी की फाइलों का समर्थन नहीं करता है: http: // apache-spark-developers-list। 1001551.n3.nabble.com/Output-Committers-for-S3-td21033.html – Cristian

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