3.1 BigData শব্দটির উত্থানের ইতিহাস

বিগ ডেটা শব্দটি তুলনামূলকভাবে সম্প্রতি উপস্থিত হয়েছিল। Google Trends 2011 সাল থেকে শব্দগুচ্ছের ব্যবহারে সক্রিয় বৃদ্ধির সূচনা দেখায় :

একই সময়ে, শুধুমাত্র অলস এখন শব্দটি ব্যবহার করে না। বিশেষ করে প্রায়ই, শব্দটি বিপণনকারীদের দ্বারা অনুপযুক্তভাবে ব্যবহৃত হয়। তাহলে বিগ ডেটা আসলে কি? যেহেতু আমি পদ্ধতিগতভাবে সমস্যাটি প্রকাশ করার এবং হাইলাইট করার সিদ্ধান্ত নিয়েছি, তাই ধারণাটি সংজ্ঞায়িত করা প্রয়োজন।

আমার অনুশীলনে, আমি বিভিন্ন সংজ্ঞার সাথে দেখা করেছি:

  • বিগ ডেটা হল যখন 100GB-এর বেশি ডেটা থাকে (500GB, 1TB, আপনি যা পছন্দ করেন)৷
  • বিগ ডেটা এমন ডেটা যা এক্সেলে প্রক্রিয়া করা যায় না।
  • বিগ ডেটা এমন ডেটা যা একটি একক কম্পিউটারে প্রক্রিয়া করা যায় না।

এবং এমনকি এইগুলি:

  • বিগ ডেটা সাধারণত যে কোনও ডেটা।
  • বিগ ডেটার অস্তিত্ব নেই, এটি বিপণনকারীদের দ্বারা উদ্ভাবিত হয়েছিল।

আমি উইকিপিডিয়া থেকে সংজ্ঞায় থাকব:

বিগ ডেটা হল বিশাল আয়তনের কাঠামোগত এবং অসংগঠিত ডেটা প্রক্রিয়াকরণের জন্য পদ্ধতি, সরঞ্জাম এবং পদ্ধতির একটি সিরিজ এবং মানব-অনুভূতিযোগ্য ফলাফলগুলি পাওয়ার জন্য যা একটি কম্পিউটার নেটওয়ার্কের অসংখ্য নোডের উপর অবিচ্ছিন্ন বৃদ্ধি, বিতরণের পরিস্থিতিতে কার্যকর। 2000 এর দশকের শেষের দিকে, ঐতিহ্যগত ডাটাবেস ম্যানেজমেন্ট সিস্টেম এবং ব্যবসায়িক বুদ্ধিমত্তা শ্রেণীর সমাধানের বিকল্প।

সুতরাং, বিগ ডেটা দ্বারা আমি কিছু নির্দিষ্ট পরিমাণ ডেটা এবং এমনকি ডেটা নিজেই নয়, তবে সেগুলি প্রক্রিয়াকরণের পদ্ধতিগুলি বুঝতে পারি, যা তথ্যের বিতরণ প্রক্রিয়াকরণের অনুমতি দেয়। এই পদ্ধতিগুলি বড় ডেটাসেটে (যেমন ইন্টারনেটের সমস্ত পৃষ্ঠার বিষয়বস্তু) পাশাপাশি ছোট ডেটাসেটে (যেমন এই বক্তৃতার বিষয়বস্তু) প্রয়োগ করা যেতে পারে।

এখানে একটি ডেটা উৎস কী হতে পারে তার কিছু উদাহরণ রয়েছে যার জন্য বড় ডেটা কৌশল প্রয়োজন:

  • ইন্টারনেটে ব্যবহারকারীর আচরণের লগ
  • একটি পরিবহন কোম্পানির জন্য গাড়ি থেকে GPS সংকেত
  • লার্জ হ্যাড্রন কোলাইডারে সেন্সর থেকে নেওয়া ডেটা
  • রাশিয়ান স্টেট লাইব্রেরিতে ডিজিটালাইজড বই
  • সমস্ত ব্যাঙ্ক গ্রাহকদের লেনদেন সম্পর্কে তথ্য
  • একটি বৃহৎ খুচরা চেইনে সমস্ত কেনাকাটার তথ্য, ইত্যাদি।

ডেটা উত্সের সংখ্যা দ্রুত বাড়ছে, যার মানে ডেটা প্রক্রিয়াকরণ প্রযুক্তির চাহিদা আরও বেশি হচ্ছে।

3.2 বড় ডেটা নীতি

বিগ ডেটার সংজ্ঞার উপর ভিত্তি করে, আমরা এই ধরনের ডেটা নিয়ে কাজ করার প্রাথমিক নীতিগুলি তৈরি করতে পারি:

1. অনুভূমিক মাপযোগ্যতা। যেহেতু ইচ্ছামত প্রচুর পরিমাণে ডেটা থাকতে পারে, তাই যে কোনও সিস্টেমে বৃহত্তর ডেটা প্রক্রিয়াকরণের সাথে সম্প্রসারণযোগ্য হতে হবে। ডেটার ভলিউম 2 গুণ বৃদ্ধি পেয়েছে - ক্লাস্টারে লোহার পরিমাণ 2 গুণ বৃদ্ধি পেয়েছে এবং সবকিছু কাজ করতে থাকে।

2. দোষ সহনশীলতা। অনুভূমিক মাপযোগ্যতার নীতিটি বোঝায় যে একটি ক্লাস্টারে অনেকগুলি মেশিন থাকতে পারে। উদাহরণস্বরূপ, Yahoo-এর Hadoop ক্লাস্টারে 42,000 টিরও বেশি মেশিন রয়েছে (আপনি এই লিঙ্কে প্রতিষ্ঠান জুড়ে ক্লাস্টারের আকার দেখতে পারেন)। এর মানে হল যে এই মেশিনগুলির মধ্যে কিছু ব্যর্থ হওয়ার গ্যারান্টি দেওয়া হবে। বড় ডেটা অনুশীলনগুলিকে এই বাধাগুলি সম্পর্কে সচেতন হতে হবে এবং কোনও উল্লেখযোগ্য পরিণতি ছাড়াই তাদের বেঁচে থাকতে হবে।

3. ডেটা স্থানীয়তা। বৃহৎ বিতরণ ব্যবস্থায়, বিপুল সংখ্যক মেশিনে ডেটা বিতরণ করা হয়। যদি ডেটা শারীরিকভাবে একটি সার্ভারে অবস্থিত থাকে এবং অন্য সার্ভারে প্রক্রিয়া করা হয় তবে ডেটা স্থানান্তরের খরচ নিজেই প্রক্রিয়াকরণের খরচ অতিক্রম করতে পারে। অতএব, BigData সমাধানগুলি ডিজাইন করার জন্য সবচেয়ে গুরুত্বপূর্ণ নীতিগুলির মধ্যে একটি হল ডেটা স্থানীয়তার নীতি - যদি সম্ভব হয়, আমরা যে মেশিনে ডেটা সংরক্ষণ করি সেই একই মেশিনে আমরা ডেটা প্রক্রিয়া করি।

সমস্ত আধুনিক বড় ডেটা সরঞ্জামগুলি এই তিনটি নীতিকে এক বা অন্যভাবে অনুসরণ করে। তাদের অনুসরণ করার জন্য, ডেটা বিকাশের সরঞ্জামগুলি বিকাশের জন্য কিছু পদ্ধতি, পদ্ধতি এবং দৃষ্টান্ত নিয়ে আসা প্রয়োজন। আমি আজকের লেকচারে বিশ্লেষণ করব সবচেয়ে ক্লাসিক পদ্ধতিগুলির মধ্যে একটি।

3.3 MapReduce

MapReduce হল কম্পিউটার ক্লাস্টারে প্রচুর পরিমাণে ডেটা প্রক্রিয়াকরণের জন্য Google দ্বারা প্রস্তাবিত একটি বিতরণকৃত ডেটা প্রক্রিয়াকরণ মডেল৷ MapReduce নিম্নলিখিত ছবিটি দ্বারা ভালভাবে চিত্রিত হয়েছে:

MapReduce অনুমান করে যে ডেটা কিছু রেকর্ডে সংগঠিত হয়। ডেটা প্রক্রিয়াকরণ 3টি পর্যায়ে ঘটে:

1. মানচিত্র পর্যায় । এই পর্যায়ে, ডেটা ম্যাপ() ফাংশন ব্যবহার করে প্রিপ্রসেস করা হয়, যা ব্যবহারকারী দ্বারা সংজ্ঞায়িত করা হয়। এই পর্যায়ের কাজ হল ডেটা প্রিপ্রসেস এবং ফিল্টার করা। অপারেশনটি কার্যকরী প্রোগ্রামিং ভাষায় মানচিত্রের অপারেশনের অনুরূপ - প্রতিটি ইনপুট রেকর্ডে একটি কাস্টম ফাংশন প্রয়োগ করা হয়।

একটি একক ইনপুট রেকর্ডে প্রয়োগ করা ম্যাপ() ফাংশন অনেক কী-মান জোড়া তৈরি করে। সেট - অর্থাৎ, এটি শুধুমাত্র একটি রেকর্ড ফেরত দিতে পারে, এটি কিছুই ফেরত দিতে পারে না বা এটি বেশ কয়েকটি কী-মান জোড়া ফেরত দিতে পারে। কী এবং মানের মধ্যে কী থাকবে তা ব্যবহারকারীর উপর নির্ভর করে, তবে কীটি একটি অত্যন্ত গুরুত্বপূর্ণ জিনিস, যেহেতু ভবিষ্যতে একটি কী সহ ডেটা হ্রাস ফাংশনের একটি উদাহরণে পড়বে।

2. স্টেজ এলোমেলো। এটা ব্যবহারকারীর অলক্ষ্যে যায়. এই পর্যায়ে, মানচিত্র ফাংশনের আউটপুট "বিনড" - প্রতিটি বিন মানচিত্র পর্যায়ের একটি আউটপুট কী এর সাথে মিলে যায়। ভবিষ্যতে, এই ঝুড়ি কমানোর জন্য একটি ইনপুট হিসাবে পরিবেশন করা হবে.

3. পর্যায় হ্রাস. শাফেল পর্যায়ে উত্পন্ন মান সহ প্রতিটি "ঝুড়ি" হ্রাস() ফাংশনের ইনপুটে যায়।

হ্রাস ফাংশন ব্যবহারকারী দ্বারা দেওয়া হয় এবং একটি একক "ঝুড়ি" এর জন্য চূড়ান্ত ফলাফল গণনা করে । Reduce() ফাংশন দ্বারা প্রত্যাবর্তিত সমস্ত মানগুলির সেটটি MapReduce টাস্কের চূড়ান্ত ফলাফল।

MapReduce সম্পর্কে কিছু অতিরিক্ত তথ্য:

  1. ম্যাপ ফাংশনের সমস্ত রান স্বাধীনভাবে কাজ করে এবং বিভিন্ন ক্লাস্টার মেশিন সহ সমান্তরালভাবে চলতে পারে।
  2. হ্রাস ফাংশনের সমস্ত রান স্বাধীনভাবে কাজ করে এবং বিভিন্ন ক্লাস্টার মেশিন সহ সমান্তরালভাবে চলতে পারে।
  3. শাফেল অভ্যন্তরীণভাবে একটি সমান্তরাল সাজানোর প্রতিনিধিত্ব করে, তাই এটি বিভিন্ন ক্লাস্টার মেশিনেও কাজ করতে পারে। পয়েন্ট 1-3 আপনাকে অনুভূমিক মাপযোগ্যতার নীতি বাস্তবায়ন করতে দেয়
  4. ম্যাপ ফাংশনটি সাধারণত একই মেশিনে ব্যবহৃত হয় যেখানে ডেটা সংরক্ষণ করা হয় - এটি নেটওয়ার্কের মাধ্যমে ডেটা প্রেরণকে হ্রাস করে (ডেটা স্থানীয়তার নীতি)।
  5. MapReduce সর্বদা একটি সম্পূর্ণ ডেটা স্ক্যান, কোন সূচী নেই। এর মানে হল যে যখন খুব দ্রুত প্রতিক্রিয়া প্রয়োজন হয় তখন MapReduce খারাপভাবে প্রযোজ্য।

3.4 MapReduce দিয়ে কার্যকরভাবে সমাধান করা কাজের উদাহরণ

শব্দ গণনা

আসুন ক্লাসিক টাস্ক দিয়ে শুরু করি - শব্দ গণনা। কাজটি নিম্নরূপ প্রণয়ন করা হয়েছে: নথির একটি বড় সংস্থা রয়েছে। টাস্ক হল কর্পাসে অন্তত একবার হওয়া প্রতিটি শব্দের জন্য মোট কতবার এটি কর্পাসে ঘটে তা গণনা করা।

সমাধান:

যেহেতু আমাদের কাছে নথির একটি বড় সংগ্রহ রয়েছে, তাই একটি নথিকে MapRreduce টাস্কের জন্য একটি ইনপুট রেকর্ড হতে দিন। MapReduce-এ, আমরা শুধুমাত্র ব্যবহারকারী-সংজ্ঞায়িত ফাংশনগুলিকে সংজ্ঞায়িত করতে পারি, যা আমরা করব (আমরা পাইথনের মতো pseudocode ব্যবহার করব):

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,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) 

মানচিত্র ফাংশন আমাদের এই এন্ট্রির প্রয়োজন কিনা তা পরীক্ষা করে - এবং যদি আমরা তা করি তবে এটি শুধুমাত্র প্রয়োজনীয় তথ্য (শহর এবং অর্থপ্রদানের পরিমাণ) রেখে যায়। হ্রাস ফাংশন সেই শহরের সমস্ত অর্থপ্রদানের তালিকা দেওয়া একটি শহরের জন্য চূড়ান্ত উত্তর গণনা করে।