क्या वितरित जियोप्रोसेसिंग के लिए एक वास्तुकला है?


24

मान लीजिए कि मेरे लैन पर 50 कंप्यूटर हैं। प्रत्येक कंप्यूटर में यूएस में किसी विशेष राज्य में सभी पार्सल बहुभुज के लिए एक जियोडैटेबेस है।

मैं एक जियोप्रोसेसिंग कार्य लिखना चाहता हूं जो एक्स $ / एकड़ से अधिक के सभी पार्सल का पता लगाता है जो दूसरे पार्सल के y फीट के भीतर हैं जो कि कम से कम z $ / एकड़ में मूल्यवान है ।

मैं इस क्वेरी को तैयार करना और चलाना जानता हूं या यह जानकर कि डेटा 50 कंप्यूटरों में वितरित किया जाता है, बिना परवाह किए। सीमा की स्थितियों को ध्यान में रखें: मैं उन मामलों को वापस करने के लिए क्वेरी भी चाहता हूं जहां एक राज्य में महंगे पार्सल दूसरे में सस्ती पार्सल के पास हैं।

क्या कोई आर्किटेक्चर है जो इस तरह के वितरित जियोप्रोसेसिंग का समर्थन करता है?

वास्तुकला को सार रूप से, या एज़्योर या अमेज़ॅन वेब सेवाओं के लिए एक कार्यान्वयन के रूप में वर्णित किया जा सकता है। या, अधिमानतः, एक विशिष्ट कार्यालय के रूप में जहां कंप्यूटर रात में भरपूर मात्रा में आर्कगिस डेस्कटॉप लाइसेंस के साथ बेकार बैठते हैं।


1
अच्छा प्रश्न। इस विशेष उदाहरण में आपको एक चतुर्भुज जैसे स्थानिक डेटा संरचना के निर्माण और उपयोग को स्वचालित रूप से समानांतर करने का एक तरीका चाहिए। यदि आप ऐसा नहीं करते हैं, और इसके बजाय सिर्फ 50 से अधिक कंप्यूटरों पर एक जानवर-बल खोज वितरित करते हैं, तो आप वास्तव में क्वेरी को गति के बजाय धीमा कर सकते हैं। मुझे पूरा यकीन है कि इस तरह की एक सामान्य वास्तुकला अभी तक मौजूद नहीं है, इसलिए आपको पहले चिंतन करके बेहतर भाग्य हो सकता है कि वितरित प्रसंस्करण से किस प्रकार के प्रश्नों का लाभ होने की संभावना है और फिर उन आर्किटेक्चर को देखना होगा जिनकी उन्हें आवश्यकता है। शायद TCS साइट पर यह प्रश्न पोस्ट करें?
whuber

@whuber धन्यवाद, TCS साइट क्या है?
कर्क कुक्केंडल

@ किर्किक को खेद है - मैं आलसी था। cstheory.stackexchange.com
whuber

1
बुनियादी सीएस सिद्धांत शायद होगा मदद नहीं के रूप में सीएस लोग शायद ही कभी प्राप्त स्थानिक :-)
इयान Turton

1
@iant वहाँ बहुत से जीआईएस लोग नहीं हैं जो वितरित कंप्यूटिंग के नट और बोल्ट के बारे में बहुत कुछ जानने जा रहे हैं (मैं इस साइट के सदस्यों पर कोई आकांक्षा नहीं रखता जो स्पष्ट रूप से असाधारण हैं)। मेरा मानना ​​है कि TCS के लोगों को वास्तुकला के अस्तित्व से संबंधित मूल प्रश्न का उत्तर देने के लिए ज्ञान होगा । मेरी एकमात्र चिंता यह है कि क्या उन्हें सवाल दिलचस्प लगेगा! मुझे लगता है कि अगर यह सही तरीका है तो वे कर सकते हैं। (जैसे, डेटा संरचनाओं के संदर्भ में कोई इसे फिर से नाम दे सकता है।)
व्ह्यूबर

जवाबों:


13
  1. अपने सभी पार्सल को एक केंद्रीय डेटाबेस में संग्रहीत करें
  2. संयुक्त राज्य अमेरिका के एक किनारे पर एन पैरों से बना एक ग्रिड तैयार करें, जहां एन ऐसा है कि एन के भीतर फिट होने वाले पार्सल की संख्या आपके किसी नोड पर मेमोरी को नहीं उड़ाएगी
  3. अपने डेटाबेस में एक पंक्ति प्रति ग्रिड वर्ग, एक आईडी कॉलम एक ज्यामिति स्तंभ और एक स्थिति स्तंभ के साथ बनाएं
  4. प्रत्येक नोड एक छोटा प्रोग्राम चलाता है
    1. अगले असंसाधित वर्ग का पता लगाएं
    2. यह प्रक्रिया के रूप में चिह्नित करता है
    3. सभी पार्सल ST_DWithin (वर्ग, पार्सल, अधिकतम सीमा) खींचती है
    4. वास्तविक क्वेरी करता है
    5. केंद्रीय डेटाबेस में समाधान तालिका में क्वेरी उत्तर को वापस लिखता है
    6. वर्ग को पूर्ण के रूप में चिह्नित करता है
    7. 1 पर लौटें

स्पष्ट विफलता का मामला है क्योंकि पार्सल क्वेरी में आपकी त्रिज्या बहुत बड़ी हो जाती है जो आपके डेटासेट के बड़े हिस्से प्रत्येक पार्सल के मिलान के लिए संभावित उम्मीदवार होते हैं।


धन्यवाद पॉल, क्या मुझे अन्य नोड्स के लिए समन्वयक के रूप में एक नोड अभिनय की आवश्यकता होगी?
कर्क कूकेन्डल

डेटाबेस एक निहित "समन्वयक" के रूप में कार्य करता है, जिसमें यह कतार की स्थिति रखता है, लेकिन नोड्स को समन्वित किए जाने की आवश्यकता नहीं होती है और इसे डेटाबेस में इंगित किया जाता है। यकीन नहीं होता कि जवाब है या नहीं।
पॉल रैमसे

7

इस बारे में सितंबर में FOSS4G पर बार्सिलोना में एक दिलचस्प स्लॉट था: http://2010.foss4g.org/pretations_show.php?id=3584

यह एक प्रस्तुति से अधिक पैनल चर्चा का विषय बन गया।

इस ब्लॉग पोस्ट के बीच में पॉल रेम्सी उस तरह का सारांश देता है।


यह आशाजनक लग रहा है, क्या उन्होंने प्रस्तुति कहीं पोस्ट की है?
कर्क कूकेन्डल

खैर, चूँकि Schuyler Erle सुनियोजित प्रस्तुति को रोकने के बजाय पैनल चर्चा के लिए एक मध्यस्थ बन गया, इसलिए मुझे नहीं लगता कि इसके बारे में अधिक जानकारी होगी। लेकिन चूंकि एर्ले ने उस प्रस्तुति की योजना बनाई थी, इसलिए शायद उन्हें इसके बारे में कुछ जानकारी हो। यदि आप एक Google खोज करते हैं तो वह हर जगह है। यह सीधे उससे पूछने का एक विचार हो सकता है। मुझे नहीं पता। ज़्यादातर चर्चाएँ मेरी समझ से ऊपर थीं इसलिए मैं पॉल से बेहतर रिज्यूम अपने ब्लॉग में नहीं दे पाया।
निकल्स एवन

4

हो सकता है कि एस्क्री व्हाइट पेपर पर " पेपर आर्कजीस सर्वर इन प्रैक्टिस सीरीज़: लार्ज बैच जियोकोडिंग" पर एक नज़र डालें

यह जियोकोडिंग के बारे में है लेकिन एक अतुल्यकालिक जियोप्रोसेसिंग सेवा का उपयोग करने की सामान्य प्रक्रिया आपके मामले पर लागू हो सकती है।


अच्छा लग रहा है, मुझे आश्चर्य है कि अगर यह अन्य प्रकार के जियोप्रोसेसिंग के लिए सामान्यीकृत हो सकता है। लगता है जैसे मुझे अपने डेटासेट के बीच ओवरलैप की आवश्यकता होगी।
कर्क कूकेन्डल

3

इस समस्या से चिंतित होने वाली पहली बात यह है कि डेटा की आवश्यकता कहां और कब होती है। ऐसा करने के लिए, मैं आमतौर पर समस्या के बेवकूफ, धारावाहिक संस्करण के साथ शुरू करता हूं।

एक्स $ / एकड़ से अधिक मूल्य वाले सभी पार्सल का पता लगाएं, जो दूसरे पार्सल के y फीट के भीतर हों, जिनकी कीमत z $ / एकड़ से कम हो।

foreach p in parcels {
  if value(p) > x {
    foreach q in parcels {
      if (dist(p,q) <= y) and (value(q) < z) {
        emit(p)
      }
    }
  }
}

जबकि यह एल्गोरिथ्म अनुकूलित नहीं है, यह समस्या को हल करेगा।

मैंने अपने मास्टर की थीसिस के लिए इसी तरह की समस्या को हल किया जो एक डेटासेट में हर बिंदु के लिए निकटतम पार्सल पाया। मैंने PostGIS , Hadoop और MPI में समाधान लागू किया । मेरी थीसिस का पूर्ण संस्करण यहां है , लेकिन मैं महत्वपूर्ण बिंदुओं को संक्षेप में बताऊंगा क्योंकि यह इस समस्या पर लागू होता है।

MapReduce इस समस्या को हल करने के लिए एक अच्छा प्लेटफ़ॉर्म नहीं है क्योंकि इसके लिए पापी पार्सल को संसाधित करने के लिए संपूर्ण डेटासेट (या सावधानीपूर्वक चयनित सब्मिट) तक पहुंच की आवश्यकता होती है। MapReduce माध्यमिक डेटासेट को अच्छी तरह से संभाल नहीं करता है।

MPI, हालांकि, यह काफी हाथ से हल कर सकते हैं। सबसे कठिन हिस्सा यह निर्धारित कर रहा है कि डेटा को कैसे विभाजित किया जाए। यह विभाजन इस बात पर आधारित है कि इसमें कितना डेटा है, आपको इसे चलाने के लिए कितने p rocessors और प्रति प्रोसेसर की कितनी मेमोरी है। सर्वोत्तम स्केलिंग (और इसलिए प्रदर्शन) के लिए आपको एक बार मेमोरी में पार्सल डेटासेट की कई प्रतियां (आपके सभी कंप्यूटरों में) की आवश्यकता होगी।

यह समझाने के लिए कि यह कैसे काम करता है, मैं मानूंगा कि आपके प्रत्येक 50 कंप्यूटर में 8 प्रोसेसर हैं। फिर मैं प्रत्येक कंप्यूटर को पार्सल के 1/50 हिस्से की जांच करने की जिम्मेदारी दूंगा। इस जाँच को कंप्यूटर पर 8 प्रक्रियाओं द्वारा निष्पादित किया जाएगा, जिनमें से प्रत्येक में पार्सल के 1/50 भाग और पार्सल डेटासेट के 1/8 भाग की एक प्रति है। कृपया ध्यान दें कि समूह एक मशीन तक सीमित नहीं हैं, लेकिन मशीन की सीमाओं को पार कर सकते हैं।

यह प्रक्रिया एल्गोरिथ्म को निष्पादित करेगी, पार्सल के 1/50 वें सेट से पी के लिए पार्सल और 1/8 वें सेट से क्यू के लिए पार्सल प्राप्त करेगी। आंतरिक लूप के बाद, एक ही कंप्यूटर पर सभी प्रक्रियाएं यह निर्धारित करने के लिए एक साथ बात करेंगी कि क्या पार्सल को उत्सर्जित किया जाना चाहिए।

मैंने अपनी समस्या के लिए इसी तरह का एल्गोरिदम लागू किया। आप स्रोत यहां पा सकते हैं ।

यहां तक ​​कि इस तरह के गैर-अनुकूलित एल्गोरिथ्म के साथ मैं प्रभावशाली परिणाम प्राप्त करने में सक्षम था जो प्रोग्रामर समय के लिए अत्यधिक अनुकूलित थे (जिसका अर्थ है कि मैं एक बेवकूफ सरल एल्गोरिथ्म लिख सकता था और गणना अभी भी काफी तेज होगी)। अनुकूलन करने के लिए अगला स्थान (यदि आपको वास्तव में इसकी आवश्यकता है), प्रत्येक प्रक्रिया के लिए दूसरे डेटासेट (जहां आपको q से प्राप्त होता है) का एक क्वाडट्री इंडेक्स सेटअप करना है।


मूल प्रश्न का उत्तर देने के लिए। एक वास्तुकला है: MPI + GEOS। मेरे ClusterGIS कार्यान्वयन से थोड़ी मदद और काफी कुछ किया जा सकता है। यह सभी सॉफ़्टवेयर खुले स्रोत के रूप में मिल सकते हैं, इसलिए लाइसेंस शुल्क नहीं। मुझे यकीन नहीं है कि विंडोज के लिए यह कितना पोर्टेबल है (शायद Cygwin के साथ) जैसा कि मैंने लिनक्स में इस पर काम किया है। इस समाधान को EC2, रैकस्पेस या जो भी बादल उपलब्ध है, पर तैनात किया जा सकता है। जब मैंने इसे विकसित किया तो मैं एक विश्वविद्यालय में एक समर्पित कम्प्यूट क्लस्टर का उपयोग कर रहा था।


2

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


स्पर्श करने वाले पार्सल के बजाय, मुझे y दूरी के भीतर निकटवर्ती राज्यों से पार्सल की आवश्यकता होगी।
कर्क कूकेन्डल

मुझे लगता है कि वाई काफी छोटा है कि यह पार्सल की एक छोटी संख्या से काफी बड़ा नहीं है। यदि यह एक राज्य का एक बड़ा हिस्सा है तो आप शायद गणना करने के लिए एक मनमाने ढंग से ग्रिड का उपयोग करना सबसे अच्छा होगा।
इयान Turton

2

आप Appistry को एक रूप देना चाह सकते हैं । यह निजी क्लाउड इन्फ्रास्ट्रक्चर के लिए मौजूदा अनुप्रयोगों के माइग्रेशन को सक्षम करने का उद्देश्य रखता है। इसी तरह के उद्देश्य के साथ अन्य परियोजनाएं हो सकती हैं: हर आवेदन के लिए बार-बार पता लगाने के बजाय बहुत जटिल अखरोट को तोड़ने और समानांतर प्रसंस्करण के कार्यों को वितरित करने के लिए, एक पुस्तकालय या मंच बनाते हैं जो स्वचालित रूप से करता है।


धन्यवाद मैट, यह आशाजनक दिखता है। Googling मुझे यह प्रस्तुति FedUC 2008 की कार्यवाही से मिली ।esri.com/library/userconf/feduc08/papers/… तब से जो कुछ उन्होंने किया है उस पर एक अपडेट देखने के लिए उत्सुक हूं।
कर्क कूकेन्डल

2

इस प्रकार की समस्या के लिए, मैं एक मानचित्र / फ्रेमवर्क को कम करूंगा। "शर्मनाक" समानांतर "समस्याओं" के लिए "कच्ची" एपिस्टी फ्रेमवर्क महान है, जो कि यह एक के करीब है। किनारे की स्थिति यह होने की अनुमति नहीं देती है। इस प्रकार की समस्या में मैप / रिड्यूस (वितरित कंप्यूटिंग के लिए Google दृष्टिकोण) महान है।

08 पेपर के बाद से एपिस्ट्री में सबसे बड़ी उन्नति CloudIQ Storage उत्पाद की रिलीज है। यह "s3" के लिए अनुमति देता है जैसे भंडारण सुविधा आपके स्थानीय सर्वर पर डिस्क का उपयोग करती है। फिर, CloudIQ इंजन उत्पाद किसी भी प्रकार की उच्च वॉल्यूम सेवाएँ या स्कैटर / असेंबल स्टाइल एप्लिकेशन सक्षम कर सकता है (हमने ESRI रनटाइम और अन्य ओपन सोर्स लिबास का उपयोग करके स्केलेबिलिटी साबित की है)। यदि आप फ़ाइल आधारित डेटा पर काम कर रहे हैं, तो आप इसे क्लाउडआईक्यू स्टोरेज का उपयोग करके वितरित करते हैं, और स्थानीय फ़ाइल प्रतिकृतियों में रूट प्रोसेसिंग जॉब करते हैं ताकि उन्हें नेटवर्क पर इधर-उधर न जाना पड़े। (इसलिए प्रत्येक नोड को सभी डेटा की आवश्यकता नहीं है)

Map / Reduce के लिए, आप CloudIQ Storage पर Hadoop (ओपन सोर्स M / R फ्रेमवर्क) की तरह कुछ लेयर कर सकते हैं। मैं वर्णित समस्या के लिए Hadoop को देखूंगा, लेकिन आपको वास्तव में गोता लगाने की आवश्यकता है, इसे शुरू करना आसान नहीं है, और M / R एक मस्तिष्क शराबी है। क्लोदेरा द्वारा पेश किया गया व्यावसायिक रूप से समर्थित वितरण भी है। एक और एपिस्टिक्स उत्पाद है, CloudIQ Manger जो वितरण और प्रबंधन के लिए Hadoop (Cloudera या अन्यथा) का एक अच्छा पूरक है।

मैं Hadoop (M / R और HDFS फाइलसिस्टम) के साथ शुरू करूंगा, और यदि आपको अधिक व्यावसायिक रूप से समर्थित स्केलेबल समाधान की आवश्यकता है, तो Cloudera Hadoop distro के साथ संयोजन के रूप में Appistry CloudIQ Manager और Storage को देखें।

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


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