OSM डेटा के लिए osm2pgsql आयात का अनुकूलन


27

मैं वर्तमान में EC2 पर एक उदाहरण का निर्माण कर रहा हूं, जिस पर हम काम कर रहे कुछ प्रोजेक्ट्स के लिए संपूर्ण पृथ्वी के डेटा के पूरे Planet.osm स्नैपशॉट को आयात करने के लिए। मैंने एक बड़े उबंटू x64 का उदाहरण दिया है और पोस्टग्रेज डेटाबेस के लिए एक ईबीएस वॉल्यूम पर बहुत सारे अलग-अलग स्टोरेज को संलग्न किया है और इसे पीजीएसक्यूएल डेटा को घर में संशोधित किया है।

अब सर्वर को osm2pgsqlस्नैपशॉट आयात करने के लिए उपयोग करने में समस्या हो रही है ... विभिन्न मेमोरी कॉन्फिगरेशन और व्हाट्सएप के साथ कुछ प्रयासों के बाद, इस प्रक्रिया को "किल्ड" के माध्यम से अधिकांश तरीके से प्राप्त करने के बाद आउटपुट करता रहता है; एक बार "लंबित तरीकों से गुजरने" के दौरान इसे मार दिया गया था और अगली बार, स्लिम कैश को थोड़ा समायोजित करने के बाद, यह दुर्घटनाग्रस्त होने से पहले "प्रसंस्करण के तरीकों" पर पहुंच गया। मैंने जो पढ़ा है, यह आम तौर पर स्मृति मुद्दों के कारण होता है।

यहाँ आयात चलाने का मेरा नवीनतम प्रयास है:

osm2pgsql -v -U osm -s -C 4096 -S default.style -d osm /data/osm/planet-latest.osm.bz2

और यहाँ EC2 पर एक बड़े उदाहरण के लिए चश्मा दिए गए हैं:

बड़े इंस्टेंस 7.5 जीबी मेमोरी, 4 ईसी 2 कंप्यूट यूनिट्स (2 ईसी 2 कंप्यूट यूनिट्स के साथ 2 वर्चुअल कोर), 850 जीबी लोकल इंस्टेंस स्टोरेज, 64-बिट प्लेटफॉर्म

मेरा सवाल है - osm2pgsql और Postgres के लिए ट्यूनिंग आवश्यकताओं को निर्धारित करने के लिए कुछ अच्छे बेंचमार्क संसाधन हैं? आयात की गति मेरे लिए भी महत्वपूर्ण नहीं है, मैं यह सुनिश्चित करने में सक्षम होना चाहता हूं कि प्रक्रिया सुरक्षित रूप से पूरी हो जाए, भले ही इसमें 4 या 5 दिन लगें ... मैंने फ्रेडरिक राम के " प्रतिपादन का अनुकूलन " पढ़ा है। श्रृंखला "(पीडीएफ) दस्तावेज पिछले साल के एसओटीएम से, लेकिन क्या अन्य अच्छे विचार / संसाधन हैं?


क्या EC2 पर ऐसा करना बहुत महंगा नहीं होगा?
पाब्लो

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

1
दिलचस्प! मैंने अपने पुराने XP-Home-Box पर कभी यह कोशिश नहीं की है। क्या यह वास्तव में काम करता है? मैं पूछ रहा हूँ क्योंकि यह पूरे ग्रह के लिए नहीं जिओफैब्रिक या क्लाउडमैड से अर्क को बदलने के लिए लिखा गया था। ग्रह अमान्य XML प्रतीत होता है। आपने इस समस्या को कैसे हल किया?

@Carsten एक टिप्पणी फ़ॉर्म में आपकी प्रतिक्रिया को माइग्रेट करने में, मैंने अनजाने में @jvangeld द्वारा एक टिप्पणी हटा दी। यहाँ यह है: हाय Carsten, GIS.se में आपका स्वागत है यह भयानक है जब डेवलपर्स अपने कार्यक्रमों के साथ लोगों की मदद करने के लिए यहां आते हैं। लेकिन यहाँ आपका जवाब शायद @ winwaed की पोस्ट की टिप्पणी के रूप में बेहतर होगा। फिर, आपको यहां आना बहुत अच्छा है!
व्हिबर

जवाबों:


8

जैसा कि प्रलेखन का कहना है कि ऐसा करने के लिए आपको 256gb से अधिक RAM की आवश्यकता हो सकती है।

मुझे EC2 के बारे में ज्यादा जानकारी नहीं है, लेकिन आप स्लिम (--slim) मोड की कोशिश कर सकते हैं या ऑस्मोसिस की कोशिश कर सकते हैं ।

एक दिलचस्प पोस्ट है: http://weait.com/content/build-your-own-openstreetmap-server यह कहता है, 'आपको स्लिम मोड का उपयोग करना चाहिए'।


हां, मैं यह भी समझता हूं कि अपडेट के लिए अलग-अलग तरीके से आवेदन करने के लिए स्लिम मोड की आवश्यकता होती है।
कोलमैन

4

मेमोरी की कमी के कारण मैंने planet.osm के राउटिंग डेटा को लोड करने के लिए osm2pgsql का उपयोग करने की कोशिश भी नहीं की। इसके बजाय मैंने osm2po का उपयोग किया:

http://osm2po.de/

अधिकांश प्रलेखन जर्मन में है, लेकिन थोड़े से प्रयोग के साथ मैं इसे काम में लाने में कामयाब रहा। एक समर्पित कोर 2 क्वाड पर कुछ दिन लेता है (लेकिन यह केवल एक धागे का उपयोग कर रहा है)।


2

मैं कुछ और तलाश करते हुए निम्नलिखित में आया था http://aws.amazon.com/datasets/2844 - मुझे यकीन नहीं है कि यह आपकी मदद करेगा या नहीं, लेकिन यह एक शुरुआती बिंदु हो सकता है।


यह निश्चित रूप से अभी के लिए काम कर सकता है, भले ही यह 2009 से हो ...
colemanm

2

क्या आपके पास पुराने पूर्व-तैयार पैकेज का उपयोग करने के अलावा, आपके मुद्दे का समाधान मिला है? मुझे लगता है कि ईसी 2 उदाहरण में बहुत समान मुद्दा है। मैं http://download.bbbike.org/osm/ से pbf ग्रह का उपयोग कर रहा हूं

time ./osm2pgsql -S default.style --slim -d gis -C 7000 --hstore /mnt/planet/planet-latest.osm.pbf
osm2pgsql SVN version 0.70.5
...(creating db tables)
Reading in file: /mnt/planet/planet-latest.osm.pbf
Processing: Node(741920k) Way(0k) Relation(0)Killed

real    276m47.695s

अद्यतन: ऐसा लगता है कि मुझे समाधान मिल गया - 6 जीबी (पैरामीटर -C 6000) की मेमोरी को कम करने के बाद प्रक्रिया काम करती है (कम से कम अब कई दिनों तक काम किया है, आज मैं समाप्त करूंगा)।

ऐसा लगता है कि 7.5GB मेमोरी के साथ m1.large का उदाहरण मेमोरी से सभी नोड्स को फिट करने के लिए बहुत कम है (जिसे आजकल लगभग 11GB की आवश्यकता होनी चाहिए)। Osm2pgsql को आवश्यक मेमोरी के लिए 700MB से नीचे की आवश्यकता होती है, इसलिए -C 7000 के साथ यह सिर्फ मेमोरी की कमी से चल रहा है, लेकिन -C 6000 (या संभवतः -सी 6500) के साथ यह काम करता है।

इसके अलावा, मैं कम से कम 15GB RAM के साथ उच्च मेमोरी इंस्टेंस का उपयोग करने का सुझाव दूंगा, इससे आयात बहुत तेज होना चाहिए। या यहां तक ​​कि डबल अतिरिक्त बड़ी मेमोरी इंस्टेंस जो डबल लागत आएगी, लेकिन गैर-स्लिम मोड में पूर्ण ग्रह आयात करने में सक्षम होना चाहिए <5 घंटे (स्लिम-मोड से लगभग 3-4 गुना तेज)। तो यह वास्तव में सस्ता होगा।


1

मुझे कम सीपीयू और अधिक रैम का उपयोग करके EC2 पर काम करने के लिए osm2pgsql मिला। यह स्मृति समस्याओं के कारण विफल रहा जब तक कि मैंने एक उच्च-स्मृति के लिए उदाहरण को बड़ा नहीं कर दिया, जिसमें 17 गिग्स थे।

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