Apache Hive
অ্যাপাচি হাইভ একটি ডেটা গুদাম সফ্টওয়্যার প্রকল্প যা ডেটা অনুসন্ধান এবং বিশ্লেষণ প্রদানের জন্য অ্যাপাচি হ্যাডোপের উপরে নির্মিত। হাইভ বিভিন্ন ডাটাবেস এবং ফাইল সিস্টেমে সঞ্চিত ডেটা অনুসন্ধান করার জন্য একটি এসকিউএল-এর মতো ইন্টারফেস দেয় যা হ্যাডোপের সাথে একীভূত হয়। প্রচলিত এসকিউএল প্রশ্নগুলি অবশ্যই ম্যাপরিডিউস জাভা এপিআই-এ প্রয়োগ করতে হবে যাতে এসকিউএল অ্যাপ্লিকেশন এবং বিতরণকৃত ডেটার উপর প্রশ্নগুলি কার্যকর করা যায়। হাইভ নিম্ন-স্তরের জাভা এপিআই-এ প্রশ্নগুলি বাস্তবায়নের প্রয়োজন ছাড়াই অন্তর্নিহিত জাভাতে এসকিউএল-সদৃশ প্রশ্নগুলি (হাইভকিউএল) সংহত করার জন্য প্রয়োজনীয় এসকিউএল বিমূর্ততা সরবরাহ করে। যেহেতু বেশিরভাগ ডেটা গুদামজাতকরণ অ্যাপ্লিকেশন এসকিউএল-ভিত্তিক অনুসন্ধানের ভাষাগুলির সাথে কাজ করে, হাইভ হ্যাডুপে এসকিউএল-ভিত্তিক অ্যাপ্লিকেশনগুলির বহনযোগ্যতা সহায়তা করে। প্রাথমিকভাবে ফেসবুক দ্বারা ডেভেলপ করা হলেও, অ্যাপাচি হাইভ অন্যান্য কোম্পানি যেমন নেটফ্লিক্স এবং ফিনান্সিয়াল ইন্ডাস্ট্রি রেগুলেটরি অথরিটি (ফিনরা) দ্বারা ব্যবহার এবং ডেভেলপ করা হয়। অ্যামাজন ওয়েব সার্ভিসেস-এ অ্যামাজন ইলাস্টিক ম্যাপরিডিউস-এ অন্তর্ভুক্ত অ্যাপাচি হাইভের একটি সফ্টওয়্যার কাঁটাচামচ বজায় রাখে। বৈশিষ্ট্যগুলি অ্যাপাচি হাইভ হ্যাডোপের এইচডিএফএস এবং সামঞ্জস্যপূর্ণ ফাইল সিস্টেম যেমন অ্যামাজন এস 3 ফাইল সিস্টেম এবং অলুক্সিওতে সঞ্চিত বড় ডেটাসেটগুলির বিশ্লেষণকে সমর্থন করে। এটি হাইভকিউএল নামে একটি এসকিউএল-এর মতো অনুসন্ধানের ভাষা প্রদান করে যা পড়ার উপর স্কিমা সহ এবং স্বচ্ছভাবে প্রশ্নগুলিকে ম্যাপরিডিউস, অ্যাপাচি তেজ এবং স্পার্ক কাজে রূপান্তরিত করে। তিনটি এক্সিকিউশন ইঞ্জিনই হ্যাডোপের রিসোর্স আলোচক, ই. এ. আর. এন (ইয়েট অ্যানাদার রিসোর্স নেগোশিয়েটর)-এ চলতে পারে। প্রশ্নগুলিকে ত্বরান্বিত করার জন্য, এটি সূচক সরবরাহ করেছিল, তবে এই বৈশিষ্ট্যটি সংস্করণ 3-এ সরানো হয়েছিল হাইভের অন্যান্য বৈশিষ্ট্যগুলির মধ্যে রয়েছেঃ প্লেইন টেক্সট, আরসিফাইল, এইচবেস, ওআরসি এবং অন্যান্য বিভিন্ন ধরণের সঞ্চয়স্থান। একটি রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেমে মেটাডেটা স্টোরেজ, প্রশ্ন সম্পাদনের সময় শব্দার্থিক পরীক্ষা করার সময়কে উল্লেখযোগ্যভাবে হ্রাস করে। ডিএফএলএটিই, বিডব্লিউটি, স্নাপি ইত্যাদি সহ অ্যালগরিদম ব্যবহার করে হ্যাডুপ বাস্তুতন্ত্রে সঞ্চিত সংকুচিত তথ্যের উপর কাজ করা। তারিখ, স্ট্রিং এবং অন্যান্য ডেটা-মাইনিং সরঞ্জামগুলি পরিচালনা করার জন্য অন্তর্নির্মিত ব্যবহারকারী-সংজ্ঞায়িত ফাংশন (ইউডিএফ)। হাইভ ইউডিএফ সেটকে বিল্ট-ইন ফাংশন দ্বারা সমর্থিত নয় এমন ব্যবহারের ক্ষেত্রে পরিচালনা করতে সমর্থন করে। এসকিউএল-সদৃশ প্রশ্ন (হাইভকিউএল), যা পরোক্ষভাবে ম্যাপরিডিউস বা তেজ বা স্পার্ক কাজে রূপান্তরিত হয়। ডিফল্টরূপে, হাইভ একটি এমবেডেড অ্যাপাচি ডার্বি ডাটাবেসে মেটাডেটা সঞ্চয় করে এবং অন্যান্য ক্লায়েন্ট/সার্ভার ডেটাবেস যেমন মাইএসকিউএল বিকল্পভাবে ব্যবহার করা যেতে পারে। হাইভে সমর্থিত প্রথম চারটি ফাইল ফরম্যাট ছিল প্লেইন টেক্সট, সিকোয়েন্স ফাইল, অপ্টিমাইজড রো কলামার (ওআরসি) ফরম্যাট এবং আরসি ফাইল। অ্যাপাচি পার্কেট প্লাগইন সংস্করণের মাধ্যমে 0.10 এর পরে এবং স্থানীয়ভাবে 0.13 থেকে শুরু করা যেতে পারে। হাইভ স্থাপত্যের প্রধান উপাদানগুলি হলঃ এনএনঃ প্রতিটি টেবিলের জন্য স্টোরের মেটাডেটা যেমন তাদের স্কিমা এবং অবস্থান। এটি পার্টিশন মেটাডেটা অন্তর্ভুক্ত করে যা ড্রাইভারকে ক্লাস্টারে বিতরণ করা বিভিন্ন ডেটা সেটের অগ্রগতি ট্র্যাক করতে সহায়তা করে। তথ্যগুলি একটি ঐতিহ্যবাহী আরডিবিএমএস বিন্যাসে সংরক্ষণ করা হয়। মেটাডেটা চালককে তথ্যের উপর নজর রাখতে সাহায্য করে এবং এটি অত্যন্ত গুরুত্বপূর্ণ। সুতরাং, একটি ব্যাকআপ সার্ভার নিয়মিতভাবে তথ্যের প্রতিলিপি তৈরি করে যা তথ্য হারানোর ক্ষেত্রে পুনরুদ্ধার করা যেতে পারে। ড্রাইভারঃ একটি নিয়ন্ত্রকের মতো কাজ করে যা হাইভকিউএল বিবৃতি গ্রহণ করে। এটি অধিবেশন তৈরি করে বিবৃতিটির বাস্তবায়ন শুরু করে এবং জীবনচক্র এবং সম্পাদনের অগ্রগতি পর্যবেক্ষণ করে। এটি একটি হাইভকিউএল বিবৃতি কার্যকর করার সময় উত্পন্ন প্রয়োজনীয় মেটাডেটা সংরক্ষণ করে। ড্রাইভার রিডিউস অপারেশনের পরে প্রাপ্ত তথ্য বা অনুসন্ধানের ফলাফল সংগ্রহের কেন্দ্র হিসাবেও কাজ করে। সংকলকঃ হাইভকিউএল প্রশ্নের সংকলন সম্পাদন করে, যা অনুসন্ধানটিকে একটি সম্পাদন পরিকল্পনায় রূপান্তরিত করে। এই পরিকল্পনায় প্রশ্ন দ্বারা অনুবাদ হিসাবে আউটপুট পেতে হ্যাডুপ ম্যাপরিডিউস দ্বারা সম্পাদিত কাজ এবং পদক্ষেপগুলি রয়েছে। সংকলক প্রশ্নটিকে একটি বিমূর্ত সিনট্যাক্স ট্রি (এ. এস. টি)-তে রূপান্তরিত করে। সামঞ্জস্যতা পরীক্ষা করার পরে এবং সময় ত্রুটিগুলি সংকলন করার পরে, এটি এ. এস. টি-কে একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফে (ডি. এ. জি) রূপান্তরিত করে। ডিএজি অপারেটরদের ইনপুট অনুসন্ধান এবং তথ্যের উপর ভিত্তি করে ম্যাপরিডিউস পর্যায় এবং কাজগুলিতে বিভক্ত করে। অপ্টিমাইজারঃ একটি অপ্টিমাইজড ডিএজি পেতে এক্সিকিউশন প্ল্যানে বিভিন্ন রূপান্তর সম্পাদন করে। রূপান্তরগুলি একত্রিত করা যেতে পারে, যেমন আরও ভাল পারফরম্যান্সের জন্য সংযোগগুলির একটি পাইপলাইনকে একক জয়েনে রূপান্তর করা। এটি আরও ভাল কর্মক্ষমতা এবং পরিমাপযোগ্যতা প্রদানের জন্য কাজগুলিকে বিভক্ত করতে পারে, যেমন একটি হ্রাসকৃত ক্রিয়াকলাপের আগে ডেটাতে রূপান্তর প্রয়োগ করা। যাইহোক, অপ্টিমাইজেশনের জন্য ব্যবহৃত রূপান্তরের যুক্তিটি অন্য অপ্টিমাইজার ব্যবহার করে সংশোধন বা পাইপলাইন করা যেতে পারে। ওয়াইএসমার্ট নামে একটি অপ্টিমাইজার অ্যাপাচি হাইভের একটি অংশ। এই সহ-সম্পর্কিত অপ্টিমাইজারটি সহ-সম্পর্কিত ম্যাপরিডিউস কাজগুলিকে একটি একক ম্যাপরিডিউস কাজে একীভূত করে, কার্যকর করার সময়কে উল্লেখযোগ্যভাবে হ্রাস করে। নির্বাহকঃ সংকলন এবং অপ্টিমাইজেশনের পরে, নির্বাহক কাজগুলি সম্পাদন করেন। এটি চালানোর জন্য কাজগুলি নির্ধারণ করতে হ্যাডোপের জব ট্র্যাকারের সাথে যোগাযোগ করে। এটি নির্ভরতার সাথে একটি কাজ কেবল তখনই কার্যকর হয় তা নিশ্চিত করে কাজগুলি পাইপলাইনের যত্ন নেয় যদি অন্যান্য সমস্ত পূর্বশর্তগুলি চালানো হয়। সি. এল. আই, ইউ. আই এবং থ্রিফ্ট সার্ভারঃ একটি কমান্ড-লাইন ইন্টারফেস (সি. এল. আই) একটি ব্যবহারকারী ইন্টারফেস প্রদান করে যাতে একজন বহিরাগত ব্যবহারকারী প্রশ্ন এবং নির্দেশাবলী জমা দিয়ে এবং প্রক্রিয়াটির অবস্থা পর্যবেক্ষণ করে হাইভের সাথে যোগাযোগ করতে পারে। থ্রিফ্ট সার্ভার বাহ্যিক ক্লায়েন্টদের জে. ডি. বি. সি বা ও. ডি. বি. সি প্রোটোকলের মতো একটি নেটওয়ার্কের মাধ্যমে হাইভের সাথে যোগাযোগ করার অনুমতি দেয়। হাইভকিউএল এসকিউএল ভিত্তিক হলেও, হাইভকিউএল সম্পূর্ণ এসকিউএল-92 মান কঠোরভাবে অনুসরণ করে না। হাইভকিউএল মাল্টি-টেবিল সন্নিবেশ সহ এসকিউএল-এ নয় এমন এক্সটেনশন সরবরাহ করে এবং নির্বাচিত হিসাবে টেবিল তৈরি করে। হাইভকিউএল-এর লেনদেন এবং বাস্তবসম্মত মতামতের জন্য সমর্থনের অভাব ছিল এবং শুধুমাত্র সীমিত সাবকুয়েরি সমর্থন ছিল। পূর্ণ এসিআইডি কার্যকারিতা সহ সন্নিবেশ, আপডেট এবং মুছে ফেলার জন্য সমর্থন রিলিজ 0.14-এর সাথে উপলব্ধ করা হয়েছিল। অভ্যন্তরীণভাবে, একটি সংকলক হাইভকিউএল বিবৃতিগুলিকে ম্যাপরিডিউস, তেজ বা স্পার্ক কাজের একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফে অনুবাদ করে, যা কার্যকর করার জন্য হ্যাডুপের কাছে জমা দেওয়া হয়। উদাহরণ শব্দ গণনা প্রোগ্রামটি ইনপুটটিতে প্রতিটি শব্দ কতবার ঘটে তা গণনা করে। শব্দ গণনা হাইভকিউএল-এ এইভাবে লেখা যেতে পারেঃ বিদ্যমান নথি থাকলে ড্রপ টেবিল; ট্যাবল ডক্স তৈরি করুন (লাইন স্ট্রিং); ট্যাবল ডক্সের মধ্যে 'ইনপুট _ ফাইল'-এর উপর লোড ডেটা; নির্বাচিত শব্দ হিসাবে টেবিল শব্দ গণনা তৈরি করুন, গণনা করুন (1) শব্দ থেকে গণনা করুন (নির্বাচিত বিস্ফোরণ (বিভক্ত (লাইন, 'গুলি') শব্দ থেকে শব্দ হিসাবে) শব্দ দ্বারা আদেশ দ্বারা অস্থায়ী গোষ্ঠী; প্রতিটি বিবৃতির একটি সংক্ষিপ্ত ব্যাখ্যা নিম্নরূপঃ ড্রপ ট্যাব লাইন নামে স্ট্রিং ধরনের একটি একক কলাম সহ ডক্স নামে একটি নতুন টেবিল তৈরি করে। লোড ডেটা ইনপুট 'ইনপুট _ ফাইল' ওভাররাইট টেবিল ডক্সের মধ্যে প্রবেশ করে; নির্দিষ্ট ফাইল বা ডিরেক্টরি (এই ক্ষেত্রে "ইনপুট _ ফাইল") টেবিলে লোড করে। ওভাররাইট নির্দিষ্ট করে যে লক্ষ্য টেবিলটিতে ডেটা লোড করা হচ্ছে তা পুনরায় লিখতে হবে; অন্যথায়, ডেটা সংযুক্ত করা হবে। নির্বাচিত শব্দ হিসাবে টেবিলের শব্দ গণনা তৈরি করুন, গণনা করুন (1) যেমন গণনা করা হয় (নির্বাচিত বিস্ফোরণ (বিভক্ত (লাইন, '\s')) যেমন শব্দ থেকে শব্দ) শব্দের ক্রম অনুসারে অস্থায়ী গোষ্ঠী; প্রশ্নটি দুটি কলাম সহ ওয়ার্ড _ কাউন্টস নামে একটি টেবিল তৈরি করেঃ শব্দ এবং গণনা। এই প্রশ্নটি অভ্যন্তরীণ প্রশ্ন থেকে তার ইনপুট আকর্ষণ করে। এই প্রশ্নটি ইনপুট শব্দগুলিকে একটি অস্থায়ী টেবিলের বিভিন্ন সারিতে বিভক্ত করতে কাজ করে যা অস্থায়ী হিসাবে পরিবর্তিত হয়। দলগুলি তাদের কীগুলির উপর ভিত্তি করে ফলাফলগুলিকে গোষ্ঠীভুক্ত করে। এর ফলে গণনা কলামে শব্দ কলামের প্রতিটি শব্দের জন্য ঘটনার সংখ্যা ধারণ করে। শব্দগুলিকে বর্ণানুক্রমিকভাবে সাজানো হয়। ঐতিহ্যবাহী ডেটাবেসের সাথে তুলনা হাইভের সঞ্চয় এবং অনুসন্ধানের ক্রিয়াকলাপগুলি ঐতিহ্যবাহী ডেটাবেসের সাথে সাদৃশ্যপূর্ণ। যদিও হাইভ একটি এসকিউএল উপভাষা, রিলেশনাল ডেটাবেসের তুলনায় হাইভের কাঠামো এবং কাজের মধ্যে অনেক পার্থক্য রয়েছে। পার্থক্যগুলি মূলত কারণ হাইভ হ্যাডুপ বাস্তুতন্ত্রের উপরে নির্মিত এবং হ্যাডুপ এবং ম্যাপরিডিউসের বিধিনিষেধ মেনে চলতে হয়। ঐতিহ্যবাহী ডেটাবেসে একটি টেবিলে একটি স্কিমা প্রয়োগ করা হয়। এই ধরনের ঐতিহ্যবাহী ডাটাবেসে, টেবিল সাধারণত স্কিমা প্রয়োগ করে যখন ডেটা টেবিলে লোড করা হয়। এটি ডাটাবেসকে নিশ্চিত করতে সক্ষম করে যে প্রবেশ করা ডেটা টেবিলের সংজ্ঞা দ্বারা নির্দিষ্ট টেবিলের উপস্থাপনা অনুসরণ করে। এই নকশাকে স্কিমা অন রাইট বলা হয়। তুলনায়, হাইভ লেখার সময় টেবিল স্কিমার বিপরীতে তথ্য যাচাই করে না। পরিবর্তে, এটি পরবর্তীকালে ডেটা পড়ার সময় রান টাইম চেক করে। এই মডেলটিকে স্কিমা অন রিড বলা হয়। এই দুটি পদ্ধতির নিজস্ব সুবিধা এবং অসুবিধা রয়েছে। লোড করার সময় টেবিল স্কিমার বিরুদ্ধে ডেটা পরীক্ষা করা অতিরিক্ত ওভারহেড যোগ করে, যে কারণে ঐতিহ্যবাহী ডেটাবেসগুলি ডেটা লোড করতে বেশি সময় নেয়। ডেটা দূষিত না হয় তা নিশ্চিত করার জন্য লোডের সময় ডেটার বিরুদ্ধে গুণমান পরীক্ষা করা হয়। দুর্নীতিগ্রস্ত তথ্যের প্রাথমিক সনাক্তকরণ দ্রুত ব্যতিক্রম পরিচালনা নিশ্চিত করে। যেহেতু টেবিলগুলি ডেটা লোডের পরে/চলাকালীন স্কিমার সাথে মেলাতে বাধ্য হয়, তাই এটির আরও ভাল অনুসন্ধানের সময় কর্মক্ষমতা রয়েছে। অন্যদিকে, হাইভ কোনও স্কিমা চেক ছাড়াই গতিশীলভাবে ডেটা লোড করতে পারে, যা একটি দ্রুত প্রাথমিক লোড নিশ্চিত করে, তবে অনুসন্ধানের সময়ে তুলনামূলকভাবে ধীর পারফরম্যান্সের ত্রুটি সহ। হাইভের একটি সুবিধা রয়েছে যখন স্কিমাটি লোড করার সময় উপলব্ধ থাকে না, তবে পরিবর্তে পরে গতিশীলভাবে তৈরি করা হয়। লেনদেনগুলি ঐতিহ্যবাহী ডাটাবেসের মূল ক্রিয়াকলাপ। যে কোনও সাধারণ আর. ডি. বি. এম. এস-এর মতো, হাইভ লেনদেনের চারটি বৈশিষ্ট্যকে (এ. সি. আই. ডি) সমর্থন করেঃ পারমাণবিকতা, ধারাবাহিকতা, বিচ্ছিন্নতা এবং স্থায়িত্ব। হাইভে লেনদেনগুলি হাইভ 0.13-এ চালু করা হয়েছিল তবে কেবল বিভাজন স্তরে সীমাবদ্ধ ছিল। হাইভ 0.14-এর সাম্প্রতিক সংস্করণে সম্পূর্ণ এসিআইডি বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য এই ফাংশনগুলি সম্পূর্ণরূপে যুক্ত করা হয়েছিল। হাইভ 0.14 এবং পরবর্তী বিভিন্ন সারি স্তরের লেনদেন যেমন INSERT, DELETE এবং UPDATE প্রদান করে। INSERT, UPDATE, এবং DELETE লেনদেন সক্ষম করার জন্য hive.support.concurrency, hive.enforce.bucketing, এবং hive.exec.dynamic.partition.mode এর মতো কনফিগারেশন বৈশিষ্ট্যগুলির জন্য উপযুক্ত মান নির্ধারণ করা প্রয়োজন। নিরাপত্তা হাইভ v0.7.0 হ্যাডোপ সুরক্ষার সাথে সংহতকরণ যোগ করেছে। হ্যাডুপ নিরাপত্তা প্রদানের জন্য কেরবেরোস অনুমোদন সমর্থন ব্যবহার করতে শুরু করে। কেরবেরোস ক্লায়েন্ট এবং সার্ভারের মধ্যে পারস্পরিক প্রমাণীকরণের অনুমতি দেয়। এই পদ্ধতিতে, টিকিটের জন্য গ্রাহকের অনুরোধ অনুরোধের সাথে পাস করা হয়। হ্যাডোপের পূর্ববর্তী সংস্করণগুলিতে বেশ কয়েকটি সমস্যা ছিল যেমন ব্যবহারকারীরা hadoop.job.ugi সম্পত্তি সেট করে তাদের ব্যবহারকারীর নাম প্রতারণা করতে সক্ষম হয়েছিল এবং একই ব্যবহারকারীর অধীনে ম্যাপরিডিউস ক্রিয়াকলাপ চালানো হয়েছিলঃ হ্যাডুপ বা ম্যাপ্রেড। হ্যাডোপ সুরক্ষার সাথে হাইভ v0.7.0-এর সংহতকরণের মাধ্যমে, এই সমস্যাগুলি মূলত সমাধান করা হয়েছে। টাস্কট্র্যাকারের কাজগুলি সেই ব্যবহারকারী দ্বারা পরিচালিত হয় যিনি এটি চালু করেছিলেন এবং hadoop.job.ugi সম্পত্তি সেট করে ব্যবহারকারীর নামটি আর প্রতারিত করা যাবে না। হাইভে নতুন তৈরি করা ফাইলগুলির অনুমতি এইচডিএফএস দ্বারা নির্ধারিত হয়। হ্যাডুপ ডিস্ট্রিবিউটেড ফাইল সিস্টেম অনুমোদন মডেল তিনটি সত্তা ব্যবহার করেঃ ব্যবহারকারী, গোষ্ঠী এবং অন্যান্য তিনটি অনুমতি সহঃ পড়ুন, লিখুন এবং কার্যকর করুন। নতুন তৈরি করা ফাইলগুলির ডিফল্ট অনুমতিগুলি হাইভ কনফিগারেশন ভেরিয়েবল hive.files.umask.value-এর জন্য আনমাস্ক মান পরিবর্তন করে সেট করা যেতে পারে। আরও দেখুন অ্যাপাচি পিগ স্কুপ অ্যাপাচি ইম্পালা অ্যাপাচি ড্রিল অ্যাপাচি ফ্লুম অ্যাপাচি এইচবেস ট্রিনো (এসকিউএল ক্যোয়ারি ইঞ্জিন) রেফারেন্স এক্সটার্নাল লিঙ্ক 2015 সফ্টওয়্যার হাইভ ক্লাউড কম্পিউটিং ফেসবুক সফ্টওয়্যার জাভাতে প্রোগ্রাম করা ফ্রি সফ্টওয়্যার (প্রোগ্রামিং ভাষা) অ্যাপাচি লাইসেন্স ব্যবহার করে ফ্রি সিস্টেম সফ্টওয়্যার হ্যাডুপ সফ্টওয়্যার