3.1 बिगडाटा शब्द के उद्भव का इतिहास

बिग डेटा शब्द अपेक्षाकृत हाल ही में सामने आया। Google रुझान 2011 से वाक्यांश के उपयोग में सक्रिय वृद्धि की शुरुआत दिखाता है :

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

मेरे व्यवहार में, मैं विभिन्न परिभाषाओं के साथ मिला:

  • बिग डेटा तब होता है जब 100GB से अधिक डेटा (500GB, 1TB, जो भी आपको पसंद हो) हो।
  • बिग डेटा वह डेटा है जिसे एक्सेल में प्रोसेस नहीं किया जा सकता है।
  • बिग डेटा वह डेटा है जिसे एक कंप्यूटर पर प्रोसेस नहीं किया जा सकता है।

और ये भी:

  • बिग डेटा आम तौर पर कोई भी डेटा होता है।
  • बिग डेटा मौजूद नहीं है, इसका आविष्कार विपणक ने किया था।

मैं विकिपीडिया से परिभाषा पर टिकूंगा:

बिग डेटा विशाल मात्रा और महत्वपूर्ण विविधता के संरचित और असंरचित डेटा को संसाधित करने के लिए दृष्टिकोणों, उपकरणों और विधियों की एक श्रृंखला है, जो मानव-बोधगम्य परिणाम प्राप्त करने के लिए निरंतर विकास, कंप्यूटर नेटवर्क के कई नोड्स पर वितरण की स्थिति में प्रभावी होते हैं। 2000 के दशक के अंत में, पारंपरिक डेटाबेस प्रबंधन प्रणालियों और व्यापार खुफिया वर्ग समाधानों का विकल्प।

इस प्रकार, बिग डेटा से मैं डेटा की कुछ विशिष्ट मात्रा को नहीं समझूंगा और यहां तक ​​​​कि डेटा को भी नहीं, बल्कि उन्हें संसाधित करने के तरीके, जो सूचना के वितरित प्रसंस्करण की अनुमति देते हैं। इन विधियों को बड़े डेटासेट (जैसे इंटरनेट पर सभी पृष्ठों की सामग्री) के साथ-साथ छोटे डेटासेट (जैसे इस व्याख्यान की सामग्री) पर लागू किया जा सकता है।

यहां कुछ उदाहरण दिए गए हैं कि कौन सा डेटा स्रोत हो सकता है जिसके लिए बड़ी डेटा तकनीकों की आवश्यकता होती है:

  • इंटरनेट पर उपयोगकर्ता व्यवहार के लॉग
  • ट्रांसपोर्ट कंपनी के लिए कारों से GPS सिग्नल
  • लार्ज हैड्रोन कोलाइडर में सेंसर से लिया गया डेटा
  • रूसी राज्य पुस्तकालय में डिजीटल पुस्तकें
  • सभी बैंक ग्राहकों के लेन-देन की जानकारी
  • किसी बड़ी खुदरा शृंखला आदि में सभी खरीदारियों के बारे में जानकारी।

डेटा स्रोतों की संख्या तेजी से बढ़ रही है, जिसका अर्थ है कि डेटा प्रोसेसिंग प्रौद्योगिकियां मांग में अधिक से अधिक होती जा रही हैं।

3.2 बिग डेटा सिद्धांत

बिग डेटा की परिभाषा के आधार पर, हम ऐसे डेटा के साथ काम करने के बुनियादी सिद्धांत तैयार कर सकते हैं:

1. क्षैतिज मापनीयता। चूँकि मनमाने ढंग से बड़ी मात्रा में डेटा हो सकता है, कोई भी सिस्टम जिसमें बड़े डेटा को संसाधित करना शामिल है, एक्स्टेंसिबल होना चाहिए। डेटा की मात्रा 2 गुना बढ़ गई - क्लस्टर में लोहे की मात्रा 2 गुना बढ़ गई और सब कुछ काम करना जारी रखा।

2. दोष सहनशीलता। क्षैतिज मापनीयता के सिद्धांत का तात्पर्य है कि एक क्लस्टर में कई मशीनें हो सकती हैं। उदाहरण के लिए, Yahoo के Hadoop क्लस्टर में 42,000 से अधिक मशीनें हैं (आप इस लिंक पर सभी संगठनों में क्लस्टर आकार देख सकते हैं)। इसका मतलब है कि इनमें से कुछ मशीनों के विफल होने की गारंटी होगी। बड़े डेटा प्रथाओं को इन व्यवधानों के बारे में पता होना चाहिए और बिना किसी महत्वपूर्ण परिणाम के उन्हें जीवित रखना चाहिए।

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

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

3.3 मानचित्र कम करें

MapReduce Google द्वारा कंप्यूटर क्लस्टर पर बड़ी मात्रा में डेटा संसाधित करने के लिए प्रस्तावित एक वितरित डेटा प्रोसेसिंग मॉडल है। MapReduce को निम्न चित्र द्वारा अच्छी तरह से चित्रित किया गया है:

MapReduce मानता है कि डेटा कुछ रिकॉर्ड में व्यवस्थित है। डेटा प्रोसेसिंग 3 चरणों में होती है:

1. नक्शा चरण । इस स्तर पर, मानचित्र () फ़ंक्शन का उपयोग करके डेटा को पूर्व-संसाधित किया जाता है, जिसे उपयोगकर्ता द्वारा परिभाषित किया जाता है। इस चरण का कार्य डेटा को प्रीप्रोसेस और फ़िल्टर करना है। ऑपरेशन कार्यात्मक प्रोग्रामिंग भाषाओं में मैप ऑपरेशन के समान है - प्रत्येक इनपुट रिकॉर्ड पर एक कस्टम फ़ंक्शन लागू होता है।

एक इनपुट रिकॉर्ड पर लागू मानचित्र () फ़ंक्शन कई कुंजी-मूल्य जोड़े उत्पन्न करता है। सेट - यानी, यह केवल एक रिकॉर्ड लौटा सकता है, यह कुछ भी नहीं लौटा सकता है, या यह कई कुंजी-मूल्य जोड़े लौटा सकता है। कुंजी में क्या होगा और मूल्य में उपयोगकर्ता पर निर्भर है, लेकिन कुंजी एक बहुत ही महत्वपूर्ण चीज है, क्योंकि भविष्य में एक कुंजी वाला डेटा कम फ़ंक्शन के एक उदाहरण में गिर जाएगा।

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

3. स्टेज कम करें। प्रत्येक "बास्केट" फेरबदल चरण में उत्पन्न मूल्यों के साथ कम () फ़ंक्शन के इनपुट पर जाता है।

कम करने का कार्य उपयोगकर्ता द्वारा दिया जाता है और एक "बास्केट" के लिए अंतिम परिणाम की गणना करता है । कम () फ़ंक्शन द्वारा लौटाए गए सभी मानों का सेट MapReduce कार्य का अंतिम परिणाम है।

MapReduce के बारे में कुछ अतिरिक्त तथ्य:

  1. मैप फ़ंक्शन के सभी रन स्वतंत्र रूप से काम करते हैं और अलग-अलग क्लस्टर मशीनों सहित समानांतर में चल सकते हैं।
  2. कम फ़ंक्शन के सभी रन स्वतंत्र रूप से काम करते हैं और अलग-अलग क्लस्टर मशीनों सहित समानांतर में चल सकते हैं।
  3. फेरबदल आंतरिक रूप से एक समानांतर प्रकार का प्रतिनिधित्व करता है, इसलिए यह विभिन्न क्लस्टर मशीनों पर भी काम कर सकता है। अंक 1-3 आपको क्षैतिज मापनीयता के सिद्धांत को लागू करने की अनुमति देते हैं
  4. मैप फ़ंक्शन का उपयोग आमतौर पर उसी मशीन पर किया जाता है जहां डेटा संग्रहीत होता है - यह नेटवर्क पर डेटा के संचरण को कम करता है (डेटा स्थानीयता का सिद्धांत)।
  5. MapReduce हमेशा एक पूर्ण डेटा स्कैन होता है, इसमें कोई अनुक्रमणिका नहीं होती है। इसका मतलब यह है कि जब प्रतिक्रिया की बहुत जल्दी आवश्यकता होती है तो MapReduce खराब रूप से लागू होता है।

3.4 MapReduce के साथ प्रभावी ढंग से हल किए गए कार्यों के उदाहरण

शब्द गणना

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

समाधान:

चूंकि हमारे पास दस्तावेज़ों का एक बड़ा संग्रह है, एक दस्तावेज़ को MapRreduce कार्य के लिए एक इनपुट रिकॉर्ड होने दें। MapReduce में, हम केवल उपयोगकर्ता-परिभाषित कार्यों को परिभाषित कर सकते हैं, जो हम करेंगे (हम अजगर-जैसे स्यूडोकोड का उपयोग करेंगे):

def map(doc): 
for word in doc: 
yield word, 1 
def reduce(word, values): 
yield word, sum(values) 

नक्शा फ़ंक्शन इनपुट दस्तावेज़ को जोड़े (शब्द, 1) के एक सेट में बदल देता है, हमारे लिए पारदर्शी रूप से फेरबदल करता है, इसे जोड़े में बदल देता है (शब्द, [1,1,1,1,1,1]), इन राशियों को कम करें , वापस लौटें शब्द का अंतिम उत्तर।

प्रसंस्करण विज्ञापन प्रणाली लॉग

दूसरा उदाहरण डेटा-सेंट्रिक एलायंस के वास्तविक अभ्यास से लिया गया है।

टास्क: फॉर्म की विज्ञापन प्रणाली का एक सीएसवी-लॉग है:

<user_id>,<country>,<city>,<campaign_id>,<creative_id>,<payment></p> 
 
11111,RU,Moscow,2,4,0.3 
22222,RU,Voronezh,2,3,0.2 
13413,UA,Kyiv,4,11,0.7 
… 

रूस के शहरों में विज्ञापन प्रदर्शित करने की औसत लागत की गणना करना आवश्यक है।

समाधान:

def map(record): 
user_id, country, city, campaign_id, creative_id, payment = record.split(",") 
payment=float(payment) 
if country == "RU": 
yield city, payment 
def reduce(city, payments): 
yield city, sum(payments)/len(payments) 

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