Skill

Hive Transactions এবং ACID Properties গাইড ও নোট

Big Data and Analytics - হাইভ (Hive)
365

Apache Hive মূলত একটি ডেটাবেস ম্যানেজমেন্ট সিস্টেম (DBMS) যা Hadoop ইকোসিস্টেমের উপর কাজ করে এবং বড় পরিসরের ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। Hive একসময় শুধুমাত্র read-only ডেটা প্রসেসিং সমর্থন করত, কিন্তু সাম্প্রতিক সংস্করণগুলিতে transactions এবং ACID properties সমর্থন যোগ করা হয়েছে, যা Hive-কে আরও শক্তিশালী এবং ডেটা ম্যানিপুলেশনের জন্য উপযোগী করে তোলে।

Hive Transactions কী?


Hive Transactions এমন একটি ফিচার যা Hive-এ Atomic, Consistent, Isolated, এবং Durable (ACID) প্রপার্টি বজায় রেখে ডেটা পরিবর্তন করতে সক্ষম। এর মাধ্যমে Hive-এ INSERT, UPDATE, DELETE অপারেশন সম্পাদন করা সম্ভব হয়। Hive-এ transactions পরিচালনা করা Hive's Metastore এবং HDFS ব্যবস্থার সাথে সমন্বিতভাবে কাজ করে।

এই ফিচারটি Hive-এর ACID (Atomicity, Consistency, Isolation, Durability) প্রপার্টি নিশ্চিত করে, যা একটি ডেটাবেস ট্রানজেকশন কার্যকর করতে সাহায্য করে।

ACID Properties


ACID হল একটি টার্ম যা ডেটাবেস ম্যানেজমেন্ট সিস্টেমে চারটি মৌলিক গুণাবলী বর্ণনা করে, যেগুলি নিশ্চিত করে যে ডেটার সঠিকতা এবং ধারাবাহিকতা বজায় থাকে। Hive-এ ACID properties যোগ করা হয়েছে, যাতে ডেটা সঠিকভাবে ইনসার্ট, আপডেট বা ডিলিট করা যায়। Hive-এর ACID প্রপার্টি হলো:

১. Atomicity (অ্যাটমিকতা)

Atomicity নিশ্চিত করে যে একটি ট্রানজেকশন বা ডেটা পরিবর্তন পুরোপুরি সফল অথবা পুরোপুরি ব্যর্থ হবে। অর্থাৎ, কোন অংশ সম্পন্ন না হলে পুরো অপারেশন ব্যর্থ হবে। Hive-এ INSERT, UPDATE, বা DELETE ট্রানজেকশন যখন সম্পন্ন হয়, তখন বা পুরোপুরি সম্পন্ন হয় বা পুরোপুরি বাতিল হয়ে যায়।

২. Consistency (সুসংগততা)

Consistency নিশ্চিত করে যে একটি ট্রানজেকশন সম্পন্ন হওয়ার পর ডেটাবেসের স্টেট অ্যাক্সেপ্টেবল এবং সুসঙ্গত থাকবে। Hive-এ যখন কোনো ডেটা পরিবর্তন করা হয়, তখন ডেটাবেস একটি নির্দিষ্ট স্টেট বজায় রাখে এবং কোনো আংশিক পরিবর্তন বা ডেটা বিশৃঙ্খলা ঘটবে না।

৩. Isolation (আযোলেশন)

Isolation মানে হচ্ছে একাধিক ট্রানজেকশন একে অপরের সাথে সংঘর্ষ করবে না, যখন তারা একযোগে সম্পাদিত হবে। Hive-এ Serializable আইসোলেশন লেভেল সমর্থিত, যার মানে হচ্ছে এক ট্রানজেকশন সম্পন্ন হওয়ার পর অন্য ট্রানজেকশন কেবল তখনই কার্যকরী হবে।

৪. Durability (টেকসইতা)

Durability নিশ্চিত করে যে একটি ট্রানজেকশন সফলভাবে সম্পন্ন হলে, তার পরিবর্তন স্থায়ীভাবে ডেটাবেসে সংরক্ষিত হবে। Hive-এ একটি ট্রানজেকশন যদি সফলভাবে সম্পন্ন হয়, তবে পরিবর্তিত ডেটা HDFS-এ সেভ হয়ে থাকবে এবং বিপর্যয়ের পরেও ডেটা হারিয়ে যাবে না।


Hive-এ Transactions কিভাবে কাজ করে?


Hive-এ ট্রানজেকশনগুলি ACID প্রপার্টি বজায় রেখে কাজ করে, এবং এগুলি Transactional Tables-এ কার্যকরী হয়। Hive-এ ট্রানজেকশন সক্ষম করতে আপনাকে কয়েকটি কনফিগারেশন সেটিংস করতে হবে এবং একটি Managed Table তৈরি করতে হবে, কারণ External Tables ট্রানজেকশন সমর্থন করে না।

Transaction Enabled Tables

Hive-এ Transactional Tables তৈরি করতে হলে আপনাকে টেবিল তৈরি করার সময় কিছু নির্দিষ্ট অপশন ব্যবহার করতে হবে:

CREATE TABLE transactions_table (
    id INT,
    name STRING,
    amount FLOAT
)
STORED AS ORC
TBLPROPERTIES ('transactional'='true');

এখানে, TBLPROPERTIES ('transactional'='true') এটি নিশ্চিত করে যে টেবিলটি ট্রানজেকশনাল এবং ACID প্রপার্টি সমর্থিত হবে।

ACID Transaction Operations

Hive-এ ACID Transactions কার্যকর করতে নিম্নলিখিত অপারেশনগুলো ব্যবহার করা যায়:

  • INSERT: নতুন ডেটা টেবিলে ইনসার্ট করা।
  • UPDATE: পূর্বে ইনসার্ট করা ডেটা আপডেট করা।
  • DELETE: টেবিল থেকে ডেটা মুছে ফেলা।

Hive Transaction Configuration

Hive-এ ট্রানজেকশন সক্ষম করতে কিছু কনফিগারেশন করতে হয়। উদাহরণস্বরূপ:

SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
SET hive.support.concurrency=true;
SET hive.enforce.bucketing=true;
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;

এই কনফিগারেশনগুলো Hive-এ ট্রানজেকশন পরিচালনার জন্য প্রয়োজনীয় সেটিংস প্রদান করে।


Hive Transactions এবং ACID Properties এর ব্যবহার এবং সুবিধা


1. ডেটা ম্যানিপুলেশন ক্ষমতা

Hive-এ INSERT, UPDATE, এবং DELETE অপারেশনগুলো ট্রানজেকশনের মাধ্যমে করা সম্ভব হওয়ায়, ব্যবহারকারীরা ডেটা ম্যানিপুলেশন আরও সুনির্দিষ্টভাবে করতে পারেন। এটা Hive-কে একে অপরের সাথে সংঘর্ষহীনভাবে ডেটা পরিচালনা করতে সক্ষম করে, যেটি পূর্বে Hive-এ সম্ভব ছিল না।

2. Concurrency

Hive-এ ট্রানজেকশন সমর্থিত হওয়ায় একাধিক ব্যবহারকারী একই সময়ে ডেটা পরিবর্তন করতে পারেন, এবং Isolation প্রপার্টি নিশ্চিত করে যে তাদের কার্যকলাপ একে অপরের সাথে সংঘর্ষ করবে না। এই কারণে Hive অনেক বেশি স্কেলেবল এবং আরও কার্যকরী ডেটা বিশ্লেষণ ও ম্যানিপুলেশন কার্যক্রমে ব্যবহারযোগ্য।

3. Fault Tolerance

Durability এবং Atomicity প্রপার্টির কারণে, Hive-এ ডেটা যদি কোনো কারণে পুরোপুরি সম্পন্ন না হয়, তবে অর্ধেক পরিবর্তনগুলো বাতিল হয়ে যাবে এবং পুরো ট্রানজেকশন ব্যর্থ হবে। একইভাবে, যদি কোনো সমস্যা ঘটে, তবে সম্পন্ন হওয়া ট্রানজেকশনগুলো ডেটাবেসে সুরক্ষিত থাকবে।

4. Improved Data Integrity

ACID properties Hive-এ ডেটা ম্যানিপুলেশন করে ডেটার সঠিকতা নিশ্চিত করতে সাহায্য করে। আপডেট বা ডিলিট অপারেশনের মাধ্যমে ডেটার integrity বজায় থাকে এবং ডেটাবেসে কোন অপ্রত্যাশিত বা অর্ধেক সম্পন্ন পরিবর্তন থাকে না।


উপসংহার


Hive-এ ACID Transactions এর সমর্থন একটি শক্তিশালী ফিচার, যা Hive-এর কার্যক্ষমতা ও নির্ভরযোগ্যতা অনেক গুণ বাড়িয়ে দিয়েছে। ACID properties—Atomicity, Consistency, Isolation, Durability—হবে Hive-এ ডেটা প্রসেসিংয়ের জন্য একটি মূল পিলার, যা ট্রানজেকশনাল টেবিলের মাধ্যমে INSERT, UPDATE, এবং DELETE অপারেশনগুলো সঠিকভাবে সম্পন্ন করতে সাহায্য করে। Hive-এ ট্রানজেকশনাল সাপোর্ট এবং ACID properties এর মাধ্যমে, Hive এখন বড় পরিসরের ডেটা ম্যানিপুলেশন, বিশ্লেষণ এবং ম্যানেজমেন্টের জন্য আরও কার্যকরী এবং নিরাপদ।

Content added By

Hive এর জন্য Transactions এর ধারণা

360

Hive একটি বিশাল ডেটাসেট প্রক্রিয়া এবং বিশ্লেষণের জন্য ব্যবহৃত একটি ডেটাবেস ম্যানেজমেন্ট সিস্টেম যা মূলত Hadoop প্ল্যাটফর্মের উপর তৈরি। যদিও Hive সাধারণত বড় পরিমাণে ডেটা প্রক্রিয়া করতে ব্যবহৃত হয়, এর আগের সংস্করণগুলিতে transactional support ছিল না। তবে, Hive 0.14 সংস্করণ থেকে transactional support যোগ করা হয়েছে, যা Hive-এ ACID (Atomicity, Consistency, Isolation, Durability) ট্রানজেকশন পরিচালনার সুবিধা প্রদান করে।

Hive Transactions এর ধারণা


Transactions হল একটি প্রক্রিয়া যা একাধিক কার্যকলাপকে একত্রে সম্পাদন করার জন্য ব্যবহৃত হয়, যাতে সমস্ত কার্যকলাপ সফলভাবে সম্পন্ন হলে সেগুলিকে একত্রে কমিট (commit) করা যায় এবং যদি কোনো এক কার্যকলাপ ব্যর্থ হয়, তবে সবকিছু রোলব্যাক (rollback) করা যায়। Hive-এ ট্রানজেকশনাল সাপোর্টের মাধ্যমে আপনি insert, update, delete অপারেশন পরিচালনা করতে পারেন, যা ডেটাবেসের ডেটাকে একটি সুনির্দিষ্ট অবস্থায় রাখতে সাহায্য করে।

Hive-এ Transactions এর বৈশিষ্ট্য


১. ACID Properties

Hive-এ ট্রানজেকশনগুলো ACID বৈশিষ্ট্য অনুসরণ করে, যা নিশ্চিত করে যে ডেটা সঠিকভাবে এবং নিরাপদে প্রক্রিয়া হচ্ছে। ACID বৈশিষ্ট্যগুলির মাধ্যমে Hive-এ ট্রানজেকশন সঠিকভাবে পরিচালিত হয়:

  • Atomicity: একটি ট্রানজেকশনের সমস্ত অপারেশন একযোগে সম্পন্ন হয় অথবা যদি কোনো একটি অপারেশন ব্যর্থ হয়, তাহলে ট্রানজেকশনটি পুরোপুরি রোলব্যাক (rollback) করা হয়।
  • Consistency: ডেটাবেসের পূর্ববর্তী অবস্থার সাথে সম্পর্কিত কোনও ধরণের অস্বাভাবিকতা (anomalies) এড়ানো হয়।
  • Isolation: একাধিক ট্রানজেকশন সমান্তরালে চললে, তাদের কার্যকলাপ একে অপরকে প্রভাবিত করে না।
  • Durability: একবার ট্রানজেকশন কমিট (commit) হলে, তা স্থায়ী হয়ে যায় এবং সিস্টেম পুনরায় চালু হলেও ডেটা হারানো যায় না।

২. ACID ট্রানজেকশন সমর্থন

Hive-এ ট্রানজেকশনের মাধ্যমে insert, update, এবং delete অপারেশন করা সম্ভব হয়েছে। এর আগে Hive শুধুমাত্র insert অপারেশন সমর্থন করত, কিন্তু নতুন ট্রানজেকশনাল সাপোর্টের মাধ্যমে update এবং delete অপারেশনও সম্ভব হয়েছে।

৩. Hive Transactional Tables

Hive-এ transactional tables তৈরি করতে আপনাকে কিছু কনফিগারেশন সেট করতে হবে এবং এই টেবিলগুলি ACID operations (insert, update, delete) সমর্থন করবে। Transactional tables সঠিকভাবে কাজ করার জন্য HBase বা ORC file format ব্যবহার করা উচিত।

৪. Hive’s Transactional Support with ORC Format

ORC (Optimized Row Columnar) ফরম্যাট ব্যবহার করলে Hive-এ ট্রানজেকশনাল টেবিল তৈরি এবং কার্যকরী করা অনেক সহজ হয়। ORC ফরম্যাটের জন্য acid টেবিলগুলি কার্যকরী হয়, কারণ এটি ডেটার দ্রুত অ্যাক্সেস এবং কম্প্রেশন প্রদান করে, যা ট্রানজেকশনাল কার্যকলাপের জন্য উপযুক্ত।

Hive-এ Transactional Tables তৈরি করা


Hive-এ ট্রানজেকশনাল টেবিল তৈরি করার জন্য আপনাকে কিছু নির্দিষ্ট কনফিগারেশন এবং অপশন দিতে হবে। সাধারণত ORC file format এবং transactional=true সেটিংস ব্যবহার করে ট্রানজেকশনাল টেবিল তৈরি করা হয়।

১. Hive Configuration for Transactions

Hive-এ ট্রানজেকশনাল সাপোর্ট সক্ষম করতে আপনাকে hive-site.xml ফাইলে কিছু কনফিগারেশন করতে হবে:

<property>
  <name>hive.txn.manager</name>
  <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>

<property>
  <name>hive.support.concurrency</name>
  <value>true</value>
</property>

<property>
  <name>hive.enforce.bucketing</name>
  <value>true</value>
</property>

<property>
  <name>hive.exec.dynamic.partition.mode</name>
  <value>nonstrict</value>
</property>

২. Transactional Table তৈরি করা

আপনি Hive-এ transactional table তৈরি করার জন্য TBLPROPERTIES ব্যবহার করতে হবে এবং transactional=true নিশ্চিত করতে হবে। এছাড়া, ORC ফরম্যাট ব্যবহার করতে হবে।

CREATE TABLE sales (
  id INT,
  amount FLOAT,
  transaction_date DATE
)
STORED AS ORC
TBLPROPERTIES ('transactional'='true');

এই কুয়েরি একটি sales নামক ট্রানজেকশনাল টেবিল তৈরি করবে, যা ORC ফরম্যাটে ডেটা সঞ্চয় করবে এবং ACID অপারেশন সমর্থন করবে।

৩. Insert, Update, Delete Operations

Hive-এ ট্রানজেকশনাল টেবিল ব্যবহার করে আপনি insert, update, এবং delete অপারেশন করতে পারবেন।

Insert:
INSERT INTO TABLE sales VALUES (1, 100.0, '2024-01-01');
Update:
UPDATE sales SET amount = 120.0 WHERE id = 1;
Delete:
DELETE FROM sales WHERE id = 1;

Hive Transaction Management


১. Transaction Isolation Level

Hive-এ transaction isolation স্তর সেট করা সম্ভব। সাধারণত READ_COMMITTED এবং SERIALIZABLE দুটি স্তর রয়েছে। Hive ডিফল্টভাবে READ_COMMITTED ব্যবহৃত হয়, যার মানে হল যে, চলমান ট্রানজেকশন কেবলমাত্র শেষ হওয়া ট্রানজেকশনের ডেটা দেখতে পাবে।

২. Transaction Commit and Rollback

Hive-এ transaction commit এবং rollback প্রক্রিয়া রয়েছে। একটি ট্রানজেকশন সফল হলে commit এবং ব্যর্থ হলে rollback হয়।

-- Commit the transaction
COMMIT;

-- Rollback the transaction in case of an error
ROLLBACK;

Hive Transactions-এর সুবিধা


  1. ACID সাপোর্ট: Hive এখন ACID সমর্থন করে, ফলে insert, update, এবং delete অপারেশন সম্ভব হয়েছে।
  2. ডেটার অখণ্ডতা রক্ষা: Hive ট্রানজেকশনগুলি ACID বৈশিষ্ট্য অনুসরণ করে, তাই ডেটার অখণ্ডতা রক্ষা হয় এবং যেকোনো ভুল অথবা ব্যর্থ ট্রানজেকশনের কারণে ডেটা হারানো এড়ানো যায়।
  3. প্রতিযোগিতামূলক ট্রানজেকশনের ব্যবস্থাপনা: Hive এখন একাধিক ব্যবহারকারী বা প্রক্রিয়া সমান্তরালে একে অপরের ডেটা প্রভাবিত না করে কাজ করতে পারে।
  4. পলিসি নির্ধারণ: Hive-এ পলিসি নির্ধারণ করা সম্ভব, যেমন ডেটার জন্য ট্রানজেকশনাল টেবিল বা নির্দিষ্ট কার্যকলাপের জন্য অনুমতি প্রদান।

উপসংহার


Hive-এ transactional support ব্যবহারে ACID বৈশিষ্ট্য অনুসরণ করে ডেটার নিরাপত্তা এবং অখণ্ডতা রক্ষা করা সম্ভব হয়েছে। Hive-এ ট্রানজেকশনাল টেবিলগুলি তৈরি করার মাধ্যমে, আপনি insert, update, এবং delete অপারেশন চালাতে পারেন এবং Hive-এর ORC file format এবং ACID ট্রানজেকশন সাপোর্টের সুবিধা নিতে পারেন। এই নতুন বৈশিষ্ট্যগুলো Hive-কে বৃহৎ এবং সেকেন্ডের মধ্যে পরিবর্তিত ডেটার সঙ্গে কার্যকরভাবে কাজ করার সক্ষমতা প্রদান করে।

Content added By

ACID Properties এবং Hive এর সাথে সম্পর্ক

299

ACID Properties (Atomicity, Consistency, Isolation, Durability) হল একটি ডেটাবেস সিস্টেমের চারটি মৌলিক বৈশিষ্ট্য যা নিশ্চিত করে যে ডেটা ট্রানজেকশনগুলির জন্য নির্ভরযোগ্যতা এবং সঠিকতা বজায় থাকে। যদিও Hive মূলত Batch Processing এর জন্য ডিজাইন করা হয়েছিল এবং ঐতিহ্যবাহী RDBMS-এর মতো ট্রানজেকশনাল সাপোর্ট ছিল না, কিন্তু আধুনিক Hive সংস্করণে ACID বৈশিষ্ট্যগুলো অন্তর্ভুক্ত করা হয়েছে। এতে Hive এখন Transactional Processing-এর জন্য উপযুক্ত হয়ে উঠেছে, যা ডেটা সঠিকভাবে এবং নির্ভরযোগ্যভাবে পরিচালনা করতে সহায়তা করে।

ACID Properties


১. Atomicity (অ্যাটমিসিটি)

Atomicity মানে হল যে, একটি ট্রানজেকশন পুরোপুরি সফল অথবা পুরোপুরি ব্যর্থ হবে। অর্থাৎ, কোনো একটি কাজের অংশ সফল হলেও অন্য অংশ ব্যর্থ হলে পুরো ট্রানজেকশনটি বাতিল হয়ে যাবে। Hive-এ যদি কোনো ইনসার্ট, আপডেট বা ডিলিট অপারেশন চলার সময় কোনো সমস্যা হয়, তবে সেই অপারেশনটি সম্পূর্ণভাবে ব্যর্থ হয়ে যাবে এবং ডেটা অপরিবর্তিত থাকবে।

২. Consistency (সঙ্গতি)

Consistency নিশ্চিত করে যে, একটি ট্রানজেকশন সম্পন্ন হওয়ার পর, ডেটাবেস সবসময় একটি বৈধ অবস্থায় থাকবে। Hive-এর ক্ষেত্রে, এর মানে হল যে কোনো ডেটা আপডেট বা পরিবর্তন করার সময়, সেটি ডেটাবেসের মূল কাঠামোর সাথে সামঞ্জস্যপূর্ণ থাকবে এবং কোনো ডেটা দুর্নীতিগ্রস্ত হবে না।

৩. Isolation (আইসোলেশন)

Isolation মানে হল যে, একাধিক ট্রানজেকশন একে অপরকে প্রভাবিত না করে চলতে থাকবে। Hive-এ Isolation নিশ্চিত করা হয় যাতে একাধিক ব্যবহারকারী বা কাজ একসাথে রান করার সময় তাদের কাজের মধ্যে কোনো সংঘর্ষ না হয় এবং একটি ট্রানজেকশন অন্যটির সম্পাদনের উপর প্রভাব ফেলে না।

৪. Durability (টেকসইতা)

Durability নিশ্চিত করে যে, একবার একটি ট্রানজেকশন সফলভাবে সম্পন্ন হলে, তার ফলাফল স্থায়ী হবে। যদি সিস্টেম বন্ধ হয়ে যায় বা অন্য কোনো সমস্যা দেখা দেয়, তবুও সফল ট্রানজেকশন থেকে প্রাপ্ত ডেটা হারাবে না এবং সেগুলি পুনরুদ্ধারযোগ্য থাকবে।


Hive এবং ACID Properties


প্রথাগতভাবে Hive MapReduce ভিত্তিক একটি ডিস্ট্রিবিউটেড সিস্টেম ছিল, এবং এটি batch processing-এর জন্য উপযুক্ত ছিল, যেখানে ট্রানজেকশনাল সাপোর্ট ছিল না। তবে, Hive-এর নতুন সংস্করণগুলিতে ACID transactions এর সমর্থন প্রদান করা হয়েছে, যা Insert, Update, Delete অপারেশন সম্পাদন করার ক্ষমতা দেয়। এতে Hive একটি Transactional Database হিসেবে কার্যকরী হতে শুরু করেছে, যা রিলেশনাল ডেটাবেসের মতো কার্যক্রম সম্পাদন করতে সক্ষম।

Hive ACID এর কার্যপ্রণালী

Hive-এ ACID ট্রানজেকশন সমর্থন করতে কিছু গুরুত্বপূর্ণ উপাদান রয়েছে:

  • Transactional Tables: Hive-এ Transactional Tables তৈরি করা যায়, যা ডেটার মধ্যে ইনসার্ট, আপডেট এবং ডিলিট পরিচালনা করতে সক্ষম।
  • Write-Ahead Logging (WAL): ACID ট্রানজেকশনের জন্য Hive Write-Ahead Log ব্যবহার করে ডেটার পরিবর্তন ট্র্যাক করে।
  • HBase Integration: Hive HBase-এর সাথে ইন্টিগ্রেটেড, যা দ্রুত আপডেট এবং ট্রানজেকশনাল ডেটা ম্যানেজমেন্টে সহায়ক।
  • Compaction: Hive-এ Compaction একটি প্রক্রিয়া যা ছোট ছোট ফাইলগুলোকে একত্রিত করে বড় ফাইল হিসেবে রূপান্তরিত করে, এবং এটি ডেটার সঙ্গতি নিশ্চিত করে।

Hive ACID Properties সক্রিয় করার জন্য কনফিগারেশন:

Hive-এর ACID ট্রানজেকশন ফিচার ব্যবহার করতে হলে কিছু কনফিগারেশন সেটিংস পরিবর্তন করতে হয়:

<property>
  <name>hive.txn.manager</name>
  <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>

<property>
  <name>hive.compactor.initiator.on</name>
  <value>true</value>
</property>

<property>
  <name>hive.compactor.worker.threads</name>
  <value>2</value>
</property>

<property>
  <name>hive.acid.output.format</name>
  <value>org.apache.hadoop.hive.ql.io.HiveAcidOutputFormat</value>
</property>

<property>
  <name>hive.txn.timeout</name>
  <value>600000</value> <!-- Timeout in milliseconds -->
</property>

এছাড়াও, Hive-এ ACID Transactions সমর্থন করতে, ACID Tables তৈরি করতে হবে, যা নিম্নলিখিত কুয়েরির মাধ্যমে করা যায়:

CREATE TABLE acid_table (
  id INT,
  name STRING
)
STORED AS ORC
TBLPROPERTIES ('transactional'='true');

এই কুয়েরি একটি transactional table তৈরি করবে, যা Hive-এ INSERT, UPDATE, এবং DELETE অপারেশন চালানোর জন্য সক্ষম হবে।


ACID Transactions এবং Hive এর সুবিধা


  1. ডেটা ইন্টিগ্রিটি বজায় রাখা: ACID ট্রানজেকশন নিশ্চিত করে যে Hive-এ ডেটার সব ধরনের পরিবর্তন সঠিকভাবে এবং নিরাপদভাবে কার্যকরী হয়।
  2. Concurrency Control: Hive ACID ট্রানজেকশনের মাধ্যমে একাধিক ব্যবহারকারী বা প্রসেসের জন্য একে অপরকে প্রভাবিত না করে ডেটা আপডেট করা যায়।
  3. Real-time Data Manipulation: ACID ট্রানজেকশন সমর্থন করার মাধ্যমে Hive এখন RDBMS-এর মতো ডেটা প্রক্রিয়া করতে সক্ষম, যেমন UPDATE এবং DELETE করা যায়।
  4. ডেটা পুনরুদ্ধার: সফল ট্রানজেকশন কার্যকর হওয়ার পর, যদি সিস্টেম ক্র্যাশ হয় বা কোনো সমস্যা দেখা দেয়, তবে ACID বৈশিষ্ট্য ডেটার সঠিকতা এবং টেকসইতা নিশ্চিত করে।

উপসংহার


ACID প্রপার্টি Hive-এ transactional support প্রদান করার মাধ্যমে ডেটা প্রক্রিয়ার সঠিকতা এবং নির্ভরযোগ্যতা নিশ্চিত করেছে। Hive-এ ACID ট্রানজেকশনের মাধ্যমে Insert, Update, এবং Delete অপারেশন চালানোর ক্ষমতা রয়েছে, যা Hive-এর কার্যকারিতা এবং ব্যবহারের পরিসরকে অনেক বড় করেছে। ACID ট্রানজেকশন ফিচারটি Hive-কে RDBMS-এর মতো কার্যকরী করে তুলেছে, এবং এটি হাইভ ব্যবহারকারীদেরকে সঠিক এবং নির্ভরযোগ্য ডেটা ম্যানেজমেন্টের সুবিধা প্রদান করে।

Content added By

INSERT, UPDATE, এবং DELETE Operations

351

Hive, Hadoop-এর ওপরে তৈরি একটি ডেটাবেস ম্যানেজমেন্ট সিস্টেম, যা বড় ডেটাসেটের জন্য কার্যকরী এবং স্কেলেবল। যদিও Hive মূলত একটি data warehouse সিস্টেম, এবং এটি Hadoop এর জন্য SQL-অনুরূপ কুয়েরি ভাষা (HiveQL) প্রদান করে, তবে Hive-এর মধ্যে কিছু সীমাবদ্ধতা রয়েছে। এক্ষেত্রে INSERT, UPDATE, এবং DELETE অপারেশনগুলোর ক্ষেত্রে কিছু অতিরিক্ত বিবেচনা এবং কনফিগারেশন থাকতে পারে। Hive সাধারণত batch processing এর জন্য ডিজাইন করা হলেও, কিছু ট্রানজেকশনাল অপারেশন সমর্থন করে।

Hive-এ INSERT Operation


INSERT অপারেশন Hive-এ ডেটা টেবিলে নতুন রেকর্ড যোগ করার জন্য ব্যবহৃত হয়। Hive সাধারণত দুটি ধরণের INSERT অপারেশন সমর্থন করে:

১. INSERT INTO

এই অপারেশনটি একটি টেবিলের মধ্যে নতুন ডেটা যোগ করে, যেখানে পুরোনো ডেটা কোনওভাবেই পরিবর্তিত হয় না। এটি একটি সোজা INSERT অপারেশন।

উদাহরণ:
INSERT INTO TABLE employees
VALUES (1, 'John Doe', 45000);

এই কুয়েরি employees টেবিলে একটি নতুন রেকর্ড (id=1, name='John Doe', salary=45000) যোগ করবে।

২. INSERT OVERWRITE

INSERT OVERWRITE ব্যবহার করে, আপনি একটি টেবিলের পুরোনো ডেটা সম্পূর্ণভাবে মুছে ফেলে নতুন ডেটা আপলোড করতে পারেন। এটি সাধারণত ডেটার আপডেট বা পরিবর্তন করতে ব্যবহৃত হয়, যেখানে টেবিলের সমস্ত ডেটা নতুন ডেটা দিয়ে প্রতিস্থাপিত হয়।

উদাহরণ:
INSERT OVERWRITE TABLE employees
SELECT * FROM new_employees;

এখানে, employees টেবিলের সমস্ত পুরোনো ডেটা new_employees টেবিল থেকে প্রাপ্ত ডেটা দিয়ে প্রতিস্থাপিত হবে।


Hive-এ UPDATE Operation


Hive সাধারণত UPDATE অপারেশন সমর্থন করে না, কারণ এটি মূলত batch processing-এর জন্য তৈরি করা হয়েছে। তবে, ACID (Atomicity, Consistency, Isolation, Durability) সমর্থিত Transactional Tables-এ কিছু সীমিত UPDATE সমর্থন করা হয়, বিশেষত Hive 0.14 সংস্করণ থেকে ACID ট্রানজেকশন সমর্থন যোগ করা হয়েছে।

Transactional Tables:

Hive-এ UPDATE করতে চাইলে আপনাকে Transactional Tables সক্রিয় করতে হবে। Transactional tables ব্যবহার করার জন্য Hive-এ ACID সমর্থন সক্ষম করা প্রয়োজন। এর জন্য ORC ফরম্যাটে টেবিল তৈরি করতে হয় এবং Transactional ফ্ল্যাগ true করতে হয়।

ACID সক্রিয় করার উদাহরণ:
SET hive.txn.manager=org.apache.hadoop.hive.ql.txn.HiveTxnManager;
SET hive.support.concurrency=true;
SET hive.enforce.bucketing=true;
SET hive.exec.dynamic.partition.mode=nonstrict;

এখানে, Hive-এ ACID ট্রানজেকশন সক্রিয় করা হয়েছে, যার মাধ্যমে আপনি UPDATE অপারেশন চালাতে পারবেন।

উদাহরণ: ACID টেবিলের মধ্যে UPDATE
UPDATE employees SET salary = 50000 WHERE id = 1;

এটি employees টেবিলের id = 1 রেকর্ডটির salary আপডেট করবে।


Hive-এ DELETE Operation


Hive-এ DELETE অপারেশনও ACID সমর্থিত টেবিলগুলোতে কিছুটা সীমাবদ্ধ। Hive-এ সাধারণ DELETE অপারেশন চালানো যেতে পারে শুধুমাত্র Transactional Tables-এ। তবে, Hive 0.14 সংস্করণ থেকে DELETE অপারেশন সমর্থিত হয়েছে, এবং এটি ACID ট্রানজেকশনের সাথে কাজ করে।

Transactional Tables ব্যবহার:

Hive-এ DELETE করার জন্য Transactional Tables ব্যবহার করতে হবে, যেখানে ACID সমর্থন সক্রিয় করা থাকে।

উদাহরণ: ACID টেবিলের মধ্যে DELETE
DELETE FROM employees WHERE id = 2;

এটি employees টেবিলের id = 2 রেকর্ডটি মুছে ফেলবে।


Hive-এ INSERT, UPDATE, এবং DELETE Operations এর সীমাবদ্ধতা


  1. Batch Processing: Hive মূলত batch processing এর জন্য তৈরি করা হয়েছে, এবং real-time ট্রানজেকশনাল অপারেশনগুলোর জন্য উপযুক্ত নয়। তবে ACID সমর্থিত টেবিলগুলির মধ্যে কিছু ট্রানজেকশনাল অপারেশন সম্ভব।
  2. Limited ACID Support: Hive 0.14 সংস্করণ থেকে ACID (Atomicity, Consistency, Isolation, Durability) সমর্থিত হয়েছে, কিন্তু এই ফিচারটি সক্রিয় করতে ORC file format, Transactional Tables, এবং বিশেষ কনফিগারেশন প্রয়োজন হয়।
  3. Performance Overhead: UPDATE এবং DELETE অপারেশনগুলি INSERT OVERWRITE এবং INSERT INTO অপারেশনগুলির তুলনায় আরও বেশি I/O এবং compute রিসোর্স ব্যবহার করে, বিশেষ করে যখন টেবিলগুলো খুব বড় হয়।
  4. Transactional Tables Setup: Hive-এ UPDATE এবং DELETE করতে হলে Transactional Tables তৈরি করতে হয়, যা অতিরিক্ত কনফিগারেশন এবং রিসোর্সের প্রয়োজন।

উপসংহার


INSERT, UPDATE, এবং DELETE অপারেশনগুলি Hive-এ ডেটার প্রক্রিয়া এবং আপডেট করার জন্য অত্যন্ত গুরুত্বপূর্ণ। তবে, Hive-এ UPDATE এবং DELETE অপারেশন সম্পাদন করার জন্য Transactional Tables এবং ACID সমর্থন সক্রিয় করা প্রয়োজন। Hive সাধারণত batch processing এর জন্য ডিজাইন করা হয়েছে, তবে কিছু সীমাবদ্ধতার সাথে real-time transactional সমর্থনও প্রদান করা হচ্ছে। INSERT INTO এবং INSERT OVERWRITE অপারেশনগুলো Hive-এ অধিক ব্যবহৃত হলেও, ট্রানজেকশনাল অপারেশনগুলি Hive-এর সক্ষমতার মধ্যে নতুন মাত্রা যোগ করেছে।

Content added By

Transactions এর জন্য Compaction এবং Lock Management

280

Hive, Hadoop প্ল্যাটফর্মের উপর ভিত্তি করে একটি ডেটাবেস ম্যানেজমেন্ট সিস্টেম, যা ডেটা বিশ্লেষণ এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়। Hive 0.13 সংস্করণের পর থেকে transactions এর সমর্থন দেওয়া হয়েছে, যা ACID (Atomicity, Consistency, Isolation, Durability) ট্রানজেকশন বৈশিষ্ট্য প্রদান করে। Hive-এ ট্রানজেকশন সমর্থন করার ফলে ডেটা এক্সেস এবং আপডেটের সময় আরও কার্যকরী এবং নিরাপদ পদ্ধতি ব্যবহৃত হচ্ছে। তবে, ট্রানজেকশন পরিচালনার জন্য কিছু অতিরিক্ত কৌশল প্রয়োজন, যেমন Compaction এবং Lock Management, যা সিস্টেমের পারফরম্যান্স এবং ডেটার সঠিকতা বজায় রাখতে সাহায্য করে।

Transactions in Hive


Hive-এ ট্রানজেকশন পরিচালনা করার জন্য প্রথমে ACID বৈশিষ্ট্য সক্রিয় করতে হয়। Hive ACID ট্রানজেকশনগুলির মাধ্যমে INSERT, UPDATE, এবং DELETE অপারেশন পরিচালনা করা সম্ভব হয়। এই বৈশিষ্ট্য কার্যকর করার জন্য Hive-এ ORC ফরম্যাট ব্যবহার করা হয় এবং transactional tables ব্যবহার করা হয়।

Hive-এ ট্রানজেকশন সক্রিয় করার জন্য কনফিগারেশন:

<property>
  <name>hive.support.concurrency</name>
  <value>true</value>
</property>

<property>
  <name>hive.enforce.bucketing</name>
  <value>true</value>
</property>

<property>
  <name>hive.exec.dynamic.partition.mode</name>
  <value>nonstrict</value>
</property>

<property>
  <name>hive.transactional.table.task.maximum</name>
  <value>10</value>
</property>

<property>
  <name>hive.compactor.initiator.on</name>
  <value>true</value>
</property>

<property>
  <name>hive.compactor.worker.threads</name>
  <value>1</value>
</property>

এই কনফিগারেশনটি Hive-এ ট্রানজেকশন এবং কম্প্যাকশন পরিচালনা করতে সহায়ক।


Compaction in Hive


Compaction হল একটি প্রক্রিয়া যা Hive-এ ট্রানজেকশনাল টেবিলের মধ্যে লকার ডেটা ম্যানেজমেন্ট এবং পারফরম্যান্সের জন্য ব্যবহৃত হয়। Hive-এ যখন অনেকগুলি INSERT, UPDATE, বা DELETE অপারেশন চালানো হয়, তখন ডেটা একটি বিশাল সংখ্যা টুকরোতে (files) বিভক্ত হতে পারে, যা পরবর্তীতে পারফরম্যান্সের সমস্যার সৃষ্টি করতে পারে। Compaction এই টুকরোগুলিকে একত্রিত করে এবং ডেটার আয়তন এবং পারফরম্যান্স উন্নত করে।

Types of Compaction

Hive-এ দুই ধরনের Compaction হয়:

  1. Minor Compaction:
    • এটি ছোট ছোট ফাইলগুলো একত্রিত করে। যখন Hive-এ একটি ট্রানজেকশন সম্পন্ন হয় এবং নতুন ডেটা ছোট ফাইলে সংরক্ষিত হয়, তখন minor compaction ট্রিগার হয়, যা ছোট ফাইলগুলো একত্রিত করে।
    • Minor compaction ডেটার সামগ্রিক সাইজ এবং পারফরম্যান্স উন্নত করে।
  2. Major Compaction:
    • এটি পুরানো ডেটা এবং মুছে ফেলা (deleted) ডেটা একত্রিত করে। major compaction যখন ঘটে, তখন এটি সমস্ত পুরানো এবং অব্যবহৃত ডেটা মুছে দেয় এবং সেগুলোকে একটি একক ফাইলে আনে।
    • Major compaction Hive-এর পারফরম্যান্সকে উল্লেখযোগ্যভাবে বৃদ্ধি করতে পারে, বিশেষত যখন অনেক ডেটা মোছা হয় এবং তার স্থান পুনরুদ্ধার করা হয়।

Compaction Example:

-- Trigger a compaction
ALTER TABLE your_table_name COMPACT 'MAJOR';

এই কমান্ডটি major compaction চালু করবে, যা আপনার টেবিলের পুরানো এবং অব্যবহৃত ডেটা একত্রিত করে এবং স্থান পুনরুদ্ধার করবে।

Best Practices for Compaction:

  • Minor Compaction অটোমেটিকভাবে সংঘটিত হয়, তবে Major Compaction প্রয়োজনে ম্যানুয়ালি চালানো উচিত।
  • যদি ডেটার পরিমাণ খুব বেশি হয়, তাহলে Major Compaction প্রক্রিয়াটি সময় নিতে পারে, তাই এটিকে সময় মতো পরিকল্পনা করা উচিত।
  • Hive-এর Compactor Initiator এবং Compactor Worker Threads সঠিকভাবে কনফিগার করা উচিত।

Lock Management in Hive


Lock Management Hive-এ ট্রানজেকশন পরিচালনার একটি গুরুত্বপূর্ণ অংশ। Hive-এ locking ব্যবহৃত হয় যাতে data consistency এবং transaction isolation নিশ্চিত করা যায়, বিশেষ করে যখন একাধিক ব্যবহারকারী একই ডেটার উপর কাজ করছেন। Hive-এর Lock Management ট্রানজেকশনগুলির মধ্যে পারস্পরিক সম্পর্ক বজায় রাখে এবং সিস্টেমের মধ্যে তথ্যের অখণ্ডতা নিশ্চিত করে।

Types of Locks in Hive:

Hive-এ প্রধানত দুটি ধরনের লক ব্যবহৃত হয়:

  1. Read Lock:
    • এটি শুধুমাত্র পাঠন (read) অপারেশনগুলির জন্য ব্যবহৃত হয়। এটি একটি টেবিল বা পার্টিশনের মধ্যে শুধুমাত্র একাধিক SELECT অপারেশন চালানোর অনুমতি দেয়।
    • Read lock সহ একাধিক ট্রানজেকশন একে অপরের সাথে সংঘর্ষ না করে একসাথে রান করতে পারে।
  2. Write Lock:
    • এটি INSERT, UPDATE, বা DELETE অপারেশনের জন্য ব্যবহৃত হয়। Write lock এর মাধ্যমে ডেটা পরিবর্তন করা হয়, এবং এটি অন্য কোনো ট্রানজেকশনের দ্বারা ডেটা পরিবর্তনের সময় প্রতিরোধ সৃষ্টি করে।
    • যখন একটি write lock থাকে, তখন অন্য কোনো ট্রানজেকশন ওই ডেটায় পরিবর্তন করতে পারে না।

Lock Management Example:

-- Locking a table for write operation
LOCK TABLE your_table_name WRITE;

এটি WRITE লক তৈরি করবে, যা অন্য কোনো ডেটা পরিবর্তনকারী অপারেশন চলতে দেয় না।

Best Practices for Lock Management:

  • Hive-এ ট্রানজেকশনাল টেবিলের জন্য READ এবং WRITE লক ম্যানেজমেন্ট সঠিকভাবে কনফিগার করতে হবে।
  • LOCK_WAIT_TIMEOUT কনফিগারেশনটি সমন্বিত করুন, যাতে লক দীর্ঘ সময় ধরে স্থিত না থাকে।
  • সঠিক সময়ে লক রিলিজ নিশ্চিত করুন, যাতে সিস্টেমে বিলম্ব না ঘটে।

উপসংহার


Hive-এ Compaction এবং Lock Management একটি কার্যকরী ট্রানজেকশন পরিচালনা এবং ডেটা সুরক্ষার জন্য অত্যন্ত গুরুত্বপূর্ণ। Compaction দ্বারা ডেটা ফাইল একত্রিত করা হয় এবং তার আয়তন এবং পারফরম্যান্স বাড়ানো হয়। Lock Management Hive-এ ডেটার অখণ্ডতা বজায় রাখার জন্য গুরুত্বপূর্ণ, যাতে একাধিক ট্রানজেকশন পরিচালিত হতে পারে এবং তথ্যের ধারাবাহিকতা রক্ষা করা হয়। Hive-এ সঠিকভাবে Compaction এবং Lock Management প্রয়োগ করা সিস্টেমের পারফরম্যান্স এবং কার্যকারিতা নিশ্চিত করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...