Apache Hive একটি শক্তিশালী ডেটা ওয়্যারহাউজ সিস্টেম যা Hadoop প্ল্যাটফর্মের উপর তৈরি। Hive-এর মূল কাজ হচ্ছে SQL-এর মতো কুয়েরি ভাষা ব্যবহার করে বড় ডেটাসেট বিশ্লেষণ করা এবং সেই ডেটার ওপর কুয়েরি চালানো। Hive-এর কার্যক্রম সুষ্ঠুভাবে পরিচালনা করার জন্য বেশ কিছু কম্পোনেন্ট রয়েছে, যার মধ্যে Metastore, Driver, Compiler, এবং Execution Engine গুরুত্বপূর্ণ ভূমিকা পালন করে। এই কম্পোনেন্টগুলোর কাজ এবং প্রতিটি অংশ কিভাবে একে অপরের সঙ্গে কাজ করে, তা বিস্তারিতভাবে বুঝলে Hive-এর কার্যক্ষমতা এবং কাঠামো আরও ভালোভাবে grasp করা যাবে।
১. Metastore
Metastore হাইভের একটি অত্যন্ত গুরুত্বপূর্ণ কম্পোনেন্ট, যা হাইভে ব্যবহৃত মেটাডেটা (ডেটাবেস, টেবিল, কলাম, পার্টিশন ইত্যাদি) সংরক্ষণ করে। এটি একটি রিলেশনাল ডেটাবেস (যেমন MySQL বা PostgreSQL) ব্যবহার করে, যেখানে Hive-এর স্কিমা, টেবিল, এবং অন্যান্য মেটাডেটা রাখা হয়। Metastore এর মাধ্যমে Hive ডেটার কাঠামো (structure) ও সংরক্ষণ পদ্ধতি সম্পর্কিত সমস্ত তথ্য পায় এবং সেগুলো কুয়েরি করার সময় প্রয়োজনীয় রেফারেন্স হিসেবে ব্যবহার করে।
Metastore-এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য:
- স্কিমা সংরক্ষণ: Hive-এর সমস্ত ডেটা এবং টেবিলের স্কিমা এখানে সঞ্চিত থাকে।
- ডেটা ক্যাটালগ: এটি Hive-এর ডেটাবেস, টেবিল, পার্টিশন ইত্যাদির একটি ক্যাটালগ হিসেবে কাজ করে।
- টেবিলের মেটাডেটা: টেবিলের ফরম্যাট (যেমন, Parquet, ORC), কলামের ডাটা টাইপ এবং অন্যান্য গুণাবলী সংরক্ষিত থাকে।
Metastore ডেটাবেস Hive-কে ডেটার সংরক্ষণ, আনপ্যাকিং, এবং কুয়েরি পরিচালনা করার সময় প্রয়োজনীয় সমস্ত স্কিমা সম্পর্কিত তথ্য দেয়।
২. Driver
Driver Hive-এর কম্পোনেন্ট যা ব্যবহারকারীর কুয়েরি গ্রহণ করে এবং তা Hive-এর অন্যান্য কম্পোনেন্টের মাধ্যমে প্রক্রিয়াকরণ নিশ্চিত করে। এটি মূলত কুয়েরি এক্সিকিউশন স্টেপস-এর নিয়ন্ত্রণকারী অংশ। Driver কুয়েরি প্রাপ্তির পরে সেটিকে প্রয়োজনীয় পর্যায়ে প্রক্রিয়া করে এবং ফলাফল প্রস্তুত করে।
Driver-এর কাজ:
- কুয়েরি গ্রহণ: এটি ব্যবহারকারীর কাছ থেকে কুয়েরি ইনপুট গ্রহণ করে।
- অথেনটিকেশন: কুয়েরির সঠিকতা যাচাই এবং প্রক্রিয়াকরণের জন্য প্রয়োজনীয় প্রিভিলেজেস চেক করা।
- কোড ট্রান্সলেশন: Driver কুয়েরিকে HiveQL থেকে কম্পাইল এবং সম্পাদনযোগ্য কোডে রূপান্তরিত করে।
৩. Compiler
Compiler Hive-এর কুয়েরি প্রক্রিয়াকরণের অপরিহার্য অংশ, যা HiveQL কুয়েরি ভাষার কোডকে MapReduce, Tez বা Spark কোডে রূপান্তর করে। এটি কুয়েরির লজিক্যাল প্ল্যান থেকে একটি বাস্তব (physical) কার্যকরী প্ল্যান তৈরি করে, যার মাধ্যমে ডেটা প্রসেসিং শুরু হয়।
Compiler-এর কাজ:
- পার্সিং: প্রথমে এটি HiveQL কুয়েরি বিশ্লেষণ করে এবং সেটিকে একটি পার্সড স্ট্রাকচারে রূপান্তরিত করে।
- লজিক্যাল প্ল্যান: এরপর এটি লজিক্যাল প্ল্যান তৈরি করে, যা কুয়েরির কার্যকারিতা বা লজিকের বর্ণনা করে।
- ফিজিক্যাল প্ল্যান: লজিক্যাল প্ল্যানকে বাস্তব (physical) প্ল্যান হিসেবে রূপান্তরিত করে, যা MapReduce, Tez বা Spark এ ব্যবহৃত হতে পারে।
৪. Execution Engine
Execution Engine Hive-এর প্রক্রিয়াকরণ কম্পোনেন্ট, যা Compiler-এর কাছ থেকে প্রাপ্ত কুয়েরি ইনফরমেশন গ্রহণ করে এবং সেই অনুযায়ী ডেটা প্রসেসিং বাস্তবায়ন করে। Execution Engine মূলত কুয়েরি চালানোর জন্য নির্দিষ্ট execution framework (যেমন, MapReduce, Tez, Spark) ব্যবহার করে এবং এটি বিভিন্ন স্টেজে ডেটা প্রসেসিং করতে সহায়তা করে।
Execution Engine এর কাজ:
- প্রক্রিয়াকরণ শুরু: Compiler থেকে প্রাপ্ত ফিজিক্যাল প্ল্যান অনুযায়ী ডেটা প্রসেসিং শুরু করা।
- ডিস্ট্রিবিউটেড প্রসেসিং: Hadoop-এর MapReduce বা অন্যান্য execution framework ব্যবহার করে ডিস্ট্রিবিউটেড উপায়ে কুয়েরি প্রক্রিয়া করা।
- ফলাফল প্রদান: প্রক্রিয়াকৃত ডেটা শেষ পর্যন্ত ফলাফল হিসেবে ব্যবহারকারীকে প্রদান করা।
উপসংহার
Hive-এর প্রধান কম্পোনেন্টস যেমন Metastore, Driver, Compiler, এবং Execution Engine একে অপরের সাথে সমন্বিতভাবে কাজ করে Hive-এর কার্যকরী ক্ষমতা এবং কর্মক্ষমতা নিশ্চিত করে। Metastore ডেটা কাঠামো এবং মেটাডেটা সঞ্চয়ের দায়িত্ব পালন করে, Driver কুয়েরি গ্রহণ করে এবং প্রক্রিয়াকরণের জন্য সঠিক দিশা নির্দেশ করে, Compiler কুয়েরিকে কার্যকরী কোডে রূপান্তরিত করে এবং Execution Engine কুয়েরি বাস্তবায়নে সহায়তা করে। এই সমন্বিত প্রক্রিয়া Hive-কে Hadoop প্ল্যাটফর্মে বিশাল ডেটাসেট বিশ্লেষণের জন্য একটি শক্তিশালী টুলে পরিণত করেছে।
Read more