आप Google खोज कैसे लागू करेंगे? [बन्द है]


44

माना जाता है कि आपको एक साक्षात्कार में पूछा गया था "आप Google खोज को कैसे लागू करेंगे?" आप इस तरह के सवाल का जवाब कैसे देंगे? वहाँ संसाधन हो सकते हैं जो बताते हैं कि Google में कुछ टुकड़े कैसे लागू किए गए हैं (BigTable, MapReduce, PageRank, ...), लेकिन यह एक साक्षात्कार में बिल्कुल फिट नहीं है।

आप कुल मिलाकर किस वास्तुकला का उपयोग करेंगे, और आप इसे 15-30 मिनट के समय अवधि में कैसे समझाएंगे?

मैं यह समझाने के साथ शुरू करूंगा कि कैसे एक खोज इंजन का निर्माण किया जाए जो ~ 100k दस्तावेज़ों को संभालता है, फिर इसे 50M डॉक्स को शार्पिंग के माध्यम से विस्तारित करें, फिर शायद एक अन्य वास्तुशिल्प / तकनीकी छलांग।

यह 20,000 फीट का दृश्य है। मुझे क्या पसंद है, यह विवरण है - आप वास्तव में एक साक्षात्कार में कैसे जवाब देंगे। आप किन डेटा संरचनाओं का उपयोग करेंगे। आपकी वास्तुकला किस सेवा / मशीनों से बनी है। एक विशिष्ट क्वेरी विलंबता क्या होगी? फेलओवर / विभाजन मस्तिष्क मुद्दों के बारे में क्या? आदि...


1
यह काफी इंटरव्यू का सवाल है। वे कितना विस्तार देख रहे थे?
धान

1
दरअसल, यह एक ऐसा सवाल है जिसका इस्तेमाल मैंने तब किया था जब मैंने कुछ समय पहले कुछ साक्षात्कार किए थे। सुंदरता यह है कि आपके द्वारा दिए गए विवरण की मात्रा वास्तव में आपके ऊपर है, और आपका साक्षात्कारकर्ता इस पर खर्च करना चाहता है।
ripper234

2
"नक्शा कम करो! अगला सवाल कृपया।" "हम आपको फोन करेंगे।"

2
अच्छा सवाल है, लेकिन आप जवाब देने के घंटे खर्च कर सकते हैं कि प्रकार। शायद मैं Google witha फ्लैश ड्राइव में तोड़ दूंगा

मुझे लगता है कि यह एक अच्छा सवाल है, हालांकि मुझे यह काफी भारी लगेगा। मैं अभी हाल ही में एक समाचार साइट पर "वजन" लेख के लिए एक एल्गोरिथ्म का निर्माण करने के बारे में सोच रहा हूं (केवल सिद्धांत में, कुछ मुझे शॉवर में रखने के लिए :) और मैं मानता हूं कि मुझे यह विचार काफी मुश्किल लगता है / जटिल।

जवाबों:


45

मेटा-पॉइंट पर विचार करें: साक्षात्कारकर्ता की तलाश क्या है?

एक आम सवाल यह है कि आप पेजरैंक-प्रकार के एल्गोरिथ्म को लागू करने या वितरित अनुक्रमण को कैसे करें, के बारे में अपना समय बर्बाद करने के लिए नहीं देख रहे हैं। इसके बजाय, यह क्या होगा की पूरी तस्वीर पर ध्यान दें । ऐसा लगता है कि आप पहले से ही सभी बड़े टुकड़ों (BigTable, PageRank, Map / Reduce) को जानते हैं। तो सवाल यह है कि, आप वास्तव में उन्हें एक साथ कैसे तार करते हैं?

यहाँ मेरा छुरा है।

चरण 1: इन्फ्रास्ट्रक्चर को अनुक्रमित करना (5 मिनट की व्याख्या करना)

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

इसे लागू करने के लिए, दो भागों पर विचार करें: क्रॉलर और इंडेक्सर।

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

दूसरा, इंडेकर मैप / रिड्यूस जॉब के हिस्से के रूप में चलेगा। (इनपुट में प्रत्येक आइटम के लिए एक फ़ंक्शन मैप करें, और फिर परिणामों को एक 'चीज़' में घटाएं।) इंडेक्सर एक एकल वेब लिंक लेगा, वेबसाइट को पुनः प्राप्त करेगा, और इसे एक इंडेक्स फ़ाइल में परिवर्तित करेगा। (इसके बाद चर्चा की गई।) इन सभी इंडेक्स फाइलों को एक यूनिट में घटाकर स्टेप को कम किया जाएगा। (बल्कि लाखों ढीली फाइलें।) चूंकि अनुक्रमण चरण समानांतर में किए जा सकते हैं, इसलिए आप इस मानचित्र / नौकरी को मनमाने ढंग से बड़े डेटा सेंटर में खेती कर सकते हैं।

चरण 2: अनुक्रमण एल्गोरिथ्म की विशिष्टताएं (10 मिनट की व्याख्या करना)

एक बार जब आप कह चुके हैं कि आप वेब पृष्ठों को कैसे संसाधित करेंगे, तो अगला भाग बता रहा है कि आप सार्थक परिणामों की गणना कैसे कर सकते हैं। यहाँ संक्षिप्त उत्तर 'बहुत अधिक मानचित्र / घटता है', लेकिन उन बातों पर विचार करें जो आप कर सकते हैं:

  • प्रत्येक वेब साइट के लिए, आने वाले लिंक की संख्या की गणना करें। (अधिक भारी लिंक वाले पृष्ठों को 'बेहतर' होना चाहिए।)
  • प्रत्येक वेब साइट के लिए, यह देखें कि लिंक कैसे प्रस्तुत किया गया था। (<H1> या <b> में लिंक <h3> में दफन किए गए लोगों की तुलना में अधिक महत्वपूर्ण होना चाहिए।]
  • प्रत्येक वेब साइट के लिए, आउटबाउंड लिंक की संख्या देखें। (किसी को भी स्पैमर पसंद नहीं है।)
  • प्रत्येक वेब साइट के लिए, प्रयुक्त शब्दों के प्रकारों को देखें। उदाहरण के लिए, 'हैश' और 'टेबल' का अर्थ है कि वेब साइट कंप्यूटर विज्ञान से संबंधित है। दूसरी ओर 'हैश' और 'ब्राउनीज' का अर्थ यह होगा कि साइट कुछ अलग थी।

दुर्भाग्य से मुझे डेटा को सुपर उपयोगी बनाने के लिए विश्लेषण और संसाधित करने के तरीकों के बारे में पर्याप्त नहीं पता है। लेकिन सामान्य विचार आपके डेटा का विश्लेषण करने के लिए स्केलेबल तरीके हैं

चरण 3: परिणाम की सेवा (10 मिनट का समय बिताते हुए)

अंतिम चरण वास्तव में परिणामों की सेवा कर रहा है। उम्मीद है कि आपने वेब पेज डेटा का विश्लेषण करने में कुछ दिलचस्प अंतर्दृष्टि साझा की हैं, लेकिन सवाल यह है कि आप वास्तव में इसे कैसे क्वेरी करते हैं? प्रत्येक दिन Google के 10% खोज प्रश्नों को पहले कभी नहीं देखा गया है। इसका मतलब है कि आप पिछले परिणामों को कैश नहीं कर सकते।

आपके पास अपने वेब इंडेक्स से एक भी 'लुकअप' नहीं हो सकता है, इसलिए आप कौन सा प्रयास करेंगे? आप अलग-अलग इंडेक्स में कैसे दिखेंगे? (शायद संयोजन परिणाम - शायद कीवर्ड 'स्टैकओवरफ़्लो' कई अनुक्रमों में अत्यधिक आया।)

इसके अलावा, आप इसे कैसे भी देखेंगे? सूचनाओं का भारी मात्रा में डेटा पढ़ने के लिए आप किस तरह के दृष्टिकोणों का उपयोग कर सकते हैं ? (अपने पसंदीदा NoSQL डेटाबेस को यहां नामांकित करने के लिए स्वतंत्र महसूस करें और / या Google के BigTable के बारे में सब कुछ देखें।) यहां तक ​​कि अगर आपके पास एक भयानक सूचकांक है जो अत्यधिक सटीक है, तो आपको इसमें डेटा खोजने का एक तरीका चाहिए। (उदाहरण के लिए, 200GB फ़ाइल के अंदर 'stackoverflow.com' के लिए रैंक नंबर का पता लगाएं।)

यादृच्छिक मुद्दे (शेष समय)

एक बार जब आप अपने खोज इंजन की 'हड्डियों' को कवर कर लेते हैं, तो किसी भी व्यक्तिगत विषय पर विशेष रूप से जानकार हों, जो आपके बारे में जानकार हो।

  • वेबसाइट फ्रंटएंड का प्रदर्शन
  • अपने मानचित्र / नौकरियों को कम करने के लिए डेटा केंद्र का प्रबंधन करना
  • ए / बी परीक्षण खोज इंजन में सुधार
  • अनुक्रमण में पिछले खोज मात्रा / रुझान को एकीकृत करना। (उदाहरण के लिए, फ्रंटएंड सर्वर लोड की उम्मीद है 9-9 स्पाइक और प्रारंभिक एएम में मर जाते हैं।)

यहां चर्चा करने के लिए लगभग 15 मिनट से अधिक की सामग्री है, लेकिन उम्मीद है कि यह आपको शुरू करने के लिए पर्याप्त है।


1
यह एक महान asnswer है, लेकिन मुझे लगता है कि यह Google के निर्माण के साथ पैमाने के मुद्दों को संबोधित करना शुरू नहीं करता है। मुझे लगता है कि अधिक चुनौतीपूर्ण हिस्सा आपके उत्तर के परिणाम देने वाले हिस्से में है, और जहां Google का बहुत सारा जादू निहित है। मुझे इस बारे में कुछ पता है कि किसी चीज़ को कैसे आर्किटेक्ट किया जाए, लेकिन मैं दूसरों को सुनने में दिलचस्प हूँ।
ripper234

मैंने Quora पर यह पूछा - मुझे लगता है कि इस सवाल का जवाब देने के लिए दर्शकों के पास हो सकता है। quora.com/…
ripper234

मेरे उत्तर की जाँच करें।
ripper234

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