একটি ডুয়াল-রাইট প্রক্সি সহ ক্যাসান্দ্রা থেকে বিগটেবলে স্থানান্তর

1. ভূমিকা

বিগটেবল হল একটি সম্পূর্ণরূপে পরিচালিত, উচ্চ-কার্যক্ষমতাসম্পন্ন NoSQL ডাটাবেস পরিষেবা যা বৃহৎ বিশ্লেষণাত্মক এবং পরিচালনামূলক কাজের চাপের জন্য ডিজাইন করা হয়েছে। অ্যাপাচি ক্যাসান্দ্রার মতো বিদ্যমান ডাটাবেস থেকে বিগটেবলে স্থানান্তর করার জন্য প্রায়শই ডাউনটাইম এবং অ্যাপ্লিকেশনের প্রভাব কমানোর জন্য সতর্ক পরিকল্পনার প্রয়োজন হয়।

এই কোডল্যাবটি প্রক্সি টুলের সংমিশ্রণ ব্যবহার করে ক্যাসান্ড্রা থেকে বিগটেবলে স্থানান্তরের কৌশল প্রদর্শন করে:

  1. Cassandra-Bigtable Proxy: Cassandra ক্লায়েন্ট এবং টুলগুলিকে (যেমন cqlsh বা ড্রাইভার) Cassandra Query Language (CQL) প্রোটোকল ব্যবহার করে Query অনুবাদ করে Bigtable এর সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়।
  2. Datastax Zero Downtime Migration (ZDM) প্রক্সি: একটি ওপেন-সোর্স প্রক্সি যা আপনার অ্যাপ্লিকেশন এবং আপনার ডাটাবেস পরিষেবার (Cassandra-Bigtable Proxy এর মাধ্যমে অরিজিন Cassandra এবং টার্গেট Bigtable) মধ্যে অবস্থিত। এটি ডুয়াল রাইট পরিচালনা করে এবং ট্র্যাফিক রাউটিং পরিচালনা করে, ন্যূনতম অ্যাপ্লিকেশন পরিবর্তন এবং ডাউনটাইম সহ মাইগ্রেশন সক্ষম করে।
  3. ক্যাসান্ড্রা ডেটা মাইগ্রেটর (CDM): একটি ওপেন-সোর্স টুল যা সোর্স ক্যাসান্ড্রা ক্লাস্টার থেকে টার্গেট বিগটেবল ইনস্ট্যান্সে ঐতিহাসিক ডেটা বাল্ক মাইগ্রেট করার জন্য ব্যবহৃত হয়।

তুমি কি শিখবে

  • কম্পিউট ইঞ্জিনে একটি বেসিক ক্যাসান্ড্রা ক্লাস্টার কীভাবে সেট আপ করবেন।
  • কিভাবে একটি Bigtable ইনস্ট্যান্স তৈরি করবেন।
  • Bigtable-এ Cassandra স্কিমা ম্যাপ করার জন্য Cassandra-Bigtable প্রক্সি কীভাবে স্থাপন এবং কনফিগার করবেন।
  • ডুয়াল রাইটসের জন্য ডেটাস্ট্যাক্স জেডডিএম প্রক্সি কীভাবে স্থাপন এবং কনফিগার করবেন।
  • বিদ্যমান ডেটা বাল্ক-মাইগ্রেট করার জন্য ক্যাসান্ড্রা ডেটা মাইগ্রেটর টুল কীভাবে ব্যবহার করবেন।
  • প্রক্সি-ভিত্তিক ক্যাসান্ড্রা-টু-বিগটেবিল মাইগ্রেশনের সামগ্রিক কর্মপ্রবাহ।

তোমার যা লাগবে

  • বিলিং সক্ষম করা একটি Google ক্লাউড প্রকল্প। নতুন ব্যবহারকারীরা বিনামূল্যে ট্রায়ালের জন্য যোগ্য।
  • গুগল ক্লাউড ধারণা যেমন প্রজেক্ট, কম্পিউট ইঞ্জিন, ভিপিসি নেটওয়ার্ক এবং ফায়ারওয়াল নিয়ম সম্পর্কে প্রাথমিক জ্ঞান। লিনাক্স কমান্ড-লাইন টুল সম্পর্কে প্রাথমিক জ্ঞান।
  • gcloud CLI ইনস্টল এবং কনফিগার করা আছে এমন একটি মেশিনে অ্যাক্সেস করুন, অথবা Google Cloud Shell ব্যবহার করুন।

এই কোডল্যাবের জন্য, নেটওয়ার্কিং সহজ করার জন্য আমরা প্রাথমিকভাবে একই VPC নেটওয়ার্ক এবং অঞ্চলের মধ্যে Compute Engine-এ ভার্চুয়াল মেশিন (VM) ব্যবহার করব। অভ্যন্তরীণ IP ঠিকানা ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।

2. আপনার পরিবেশ সেট আপ করুন

১. একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন

গুগল ক্লাউড কনসোলে নেভিগেট করুন এবং একটি বিদ্যমান প্রকল্প নির্বাচন করুন অথবা একটি নতুন তৈরি করুন। আপনার প্রকল্প আইডি নোট করুন।

2. একটি অঞ্চল এবং অঞ্চল নির্বাচন করুন

আপনার রিসোর্সের জন্য একটি অঞ্চল এবং অঞ্চল নির্বাচন করুন। আমরা উদাহরণ হিসেবে us-central1 এবং us-central1-c ব্যবহার করব। সুবিধার জন্য এগুলিকে পরিবেশের ভেরিয়েবল হিসেবে সংজ্ঞায়িত করুন:

export PROJECT_ID="<your-project-id>"
export REGION="us-central1"
export ZONE="us-central1-c"

gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION
gcloud config set compute/zone $ZONE

৩. প্রয়োজনীয় API গুলি সক্ষম করুন

আপনার প্রকল্পের জন্য Compute Engine API এবং Bigtable API সক্রিয় আছে কিনা তা নিশ্চিত করুন।

gcloud services enable compute.googleapis.com bigtable.googleapis.com bigtableadmin.googleapis.com

৪. ফায়ারওয়াল নিয়ম কনফিগার করুন

আমাদের বিভিন্ন পোর্টে ডিফল্ট VPC নেটওয়ার্কের মধ্যে আমাদের VM-গুলির মধ্যে যোগাযোগের অনুমতি দিতে হবে:

  • ক্যাসান্ড্রা/প্রক্সিজ সিকিউএল পোর্ট: ৯০৪২
  • ZDM প্রক্সি হেলথ চেক পোর্ট: 14001
  • এসএসএইচ: ২২

এই পোর্টগুলিতে অভ্যন্তরীণ ট্র্যাফিকের অনুমতি দেওয়ার জন্য একটি ফায়ারওয়াল নিয়ম তৈরি করুন। প্রাসঙ্গিক VM-তে এই নিয়মটি সহজেই প্রয়োগ করতে আমরা cassandra-migration ট্যাগ ব্যবহার করব।

gcloud compute firewall-rules create allow-migration-internal \
--network=default \
--action=ALLOW \
--rules=tcp:22,tcp:9042,tcp:7000,tcp:14001 \
--source-ranges=10.0.0.0/8 \
--target-tags=cassandra-migration

৩. ক্যাসান্দ্রা ক্লাস্টার স্থাপন করুন (উত্স)

এই কোডল্যাবের জন্য, আমরা কম্পিউট ইঞ্জিনে একটি সাধারণ একক-নোড ক্যাসান্ড্রা ক্লাস্টার সেট আপ করব। বাস্তব পরিস্থিতিতে, আপনাকে আপনার বিদ্যমান ক্লাস্টারের সাথে সংযোগ করতে হবে।

১. ক্যাসান্দ্রার জন্য একটি GCE VM তৈরি করুন

gcloud compute instances create cassandra-origin \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB \
--scopes=cloud-platform \
--zone="$ZONE"

আপনার ক্যাসান্দ্রা ইনস্ট্যান্সে SSH

gcloud compute ssh --zone="$ZONE" "cassandra-origin"

2. ক্যাসান্ড্রা ইনস্টল করুন

# Install Java (Cassandra dependency)
sudo apt-get update
sudo apt-get install -y openjdk-11-jre-headless

# Add Cassandra repository
echo "deb https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -

# Install Cassandra
sudo apt update
sudo apt install -y cassandra

# (Optional) Verify Cassandra is running
sudo systemctl status cassandra

৩. ক্যাসান্ড্রা কনফিগার করুন

আমাদের ক্যাসান্ড্রাকে ব্যক্তিগত নেটওয়ার্কের মধ্যে অ্যাক্সেসযোগ্য করার জন্য কনফিগার করতে হবে।

ক্যাসান্দ্রা-অরিজিনের ব্যক্তিগত আইপিটি রান করে নিন:

hostname -I

ক্যাসান্ড্রা কনফিগারেশনটি সম্পাদনা করুন, আপনাকে কোনও নতুন কনফিগারেশন লাইন যুক্ত করতে হবে না - কেবল ইতিমধ্যে থাকাগুলি আপডেট করুন:

sudo vim /etc/cassandra/cassandra.yaml
  1. seed_provider.parameters.seeds "CASSANDRA_ORIGIN_PRIVATE_IP:7000" এ সেট করুন।
  2. rpc_address CASSANDRA_ORIGIN_PRIVATE_IP তে সেট করুন।
  3. listen_address CASSANDRA_ORIGIN_PRIVATE_IP তে সেট করুন।

ফাইলটি সংরক্ষণ করুন।

অবশেষে, কনফিগারেশন পরিবর্তনগুলি লোড করতে Cassandra পুনরায় চালু করুন:

sudo systemctl restart cassandra

# (Optional) Verify Cassandra is running
sudo systemctl status cassandra

৪. একটি কীস্পেস এবং টেবিল তৈরি করুন

আমরা একটি কর্মচারী টেবিলের উদাহরণ ব্যবহার করব এবং "zdmbigtable" নামক একটি কীস্পেস তৈরি করব।

দ্রষ্টব্য: ক্যাসান্দ্রার সংযোগ গ্রহণ শুরু করতে এক মিনিট সময় লাগতে পারে।

# Start cqlsh
cqlsh $(hostname -I)

cqlsh এর ভিতরে:

-- Create keyspace (adjust replication for production)
CREATE KEYSPACE zdmbigtable WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};

-- Use the keyspace
USE zdmbigtable;

-- Create the employee table
CREATE TABLE employee (
    name text PRIMARY KEY,
    age bigint,
    code int,
    credited double,
    balance float,
    is_active boolean,
    birth_date timestamp
);

-- Exit cqlsh
EXIT;

SSH সেশনটি খোলা রাখুন অথবা এই VM (হোস্টনেম -I) এর IP ঠিকানাটি নোট করুন।

৪. বিগটেবিল সেট আপ করুন (টার্গেট)

সময়কাল ০:০১

একটি Bigtable ইনস্ট্যান্স তৈরি করুন। আমরা ইনস্ট্যান্স আইডি হিসেবে zdmbigtable ব্যবহার করব।

gcloud bigtable instances create zdmbigtable \
--display-name="ZDM Bigtable Target" \
--cluster="bigtable-c1" \
--cluster-zone="$ZONE" \
--cluster-num-nodes=1 # Use 1 node for dev/testing; scale as needed

বিগটেবল টেবিলটি পরে ক্যাসান্ড্রা-বিগটেবল প্রক্সি সেটআপ স্ক্রিপ্ট দ্বারা তৈরি করা হবে।

৫. ক্যাসান্ড্রা-বিগটেবল প্রক্সি সেট আপ করুন

১. ক্যাসান্ড্রা-বিগটেবল প্রক্সির জন্য কম্পিউট ইঞ্জিন ভিএম তৈরি করুন

gcloud iam service-accounts create bigtable-proxy-sa \
    --description="Service account for Bigtable Proxy access" \
    --display-name="Bigtable Proxy Access SA"

export BIGTABLE_PROXY_SA_EMAIL=$(gcloud iam service-accounts list --filter="displayName='Bigtable Proxy Access SA'" --format="value(email)")

gcloud bigtable instances add-iam-policy-binding zdmbigtable \
  --member="serviceAccount:$BIGTABLE_PROXY_SA_EMAIL" \
  --role="roles/bigtable.admin"

gcloud compute instances create bigtable-proxy-vm \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB \
--zone=$ZONE \
--scopes=cloud-platform \
--service-account="$BIGTABLE_PROXY_SA_EMAIL"

বিগটেবল-প্রক্সি-ভিএম-এ SSH:

gcloud compute ssh --zone="$ZONE" "bigtable-proxy-vm"

bigtable-proxy-vm রানে:

# Install Git and Go
sudo apt-get update
sudo apt-get install -y git

wget https://go.dev/dl/go1.23.6.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.23.6.linux-amd64.tar.gz

echo 'export GOPATH=$HOME/go' >> ~/.profile
echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile
source ~/.profile

# Clone the proxy repository
git clone https://github.com/GoogleCloudPlatform/cloud-bigtable-ecosystem.git
cd cloud-bigtable-ecosystem/cassandra-bigtable-migration-tools/cassandra-bigtable-proxy/

২. ক্যাসান্ড্রা-বিগটেবল প্রক্সি শুরু করুন

প্রক্সি সার্ভার শুরু করুন।

# At the root of the cassandra-to-bigtable-proxy directory
go run proxy.go --project-id="$(gcloud config get-value project)" --instance-id=zdmbigtable --keyspace-id=zdmbigtable --rpc-address=$(hostname -I)

ইনকামিং CQL সংযোগের জন্য প্রক্সিটি 9042 পোর্টে শুরু হবে এবং শুনবে। এই টার্মিনাল সেশনটি চালু রাখুন। এই VM (হোস্টনেম -I) এর IP ঠিকানাটি লক্ষ্য করুন।

৩. CQL এর মাধ্যমে টেবিল তৈরি করুন

CQLSH কে Cassandra-Bigtable Proxy VM এর IP ঠিকানার সাথে সংযুক্ত করুন। স্থানীয়ভাবে নিম্নলিখিত কমান্ডটি চালিয়ে আপনি IP ঠিকানাটি খুঁজে পেতে পারেন:

gcloud compute instances describe bigtable-proxy-vm --format='get(networkInterfaces[0].networkIP)'

একটি পৃথক উইন্ডোতে আপনার cassandra-origin vm-এ SSH করুন এবং bigtable-proxy-তে cqlsh ব্যবহার করুন। মনে রাখবেন যে Bigtable-এর অন্তর্নিহিত টেবিল তৈরি করার জন্য পর্যাপ্ত সময় নিশ্চিত করার জন্য আমরা একটি দীর্ঘতর অনুরোধের সময়সীমা নির্ধারণ করেছি। আপনি "Connected to cassandra-bigtable-proxy-v0.2.3" বা অনুরূপ দেখতে পাবেন, যা নির্দেশ করে যে আপনি bigtable প্রক্সির সাথে সংযুক্ত আছেন, স্থানীয় cassandra সার্ভারের সাথে নয়।

# Replace <your-bigtable-proxy-vm-ip> with the ip from the above command
export BIGTABLE_PROXY_IP=<your-bigtable-proxy-vm-ip>
cqlsh --request-timeout=60 $BIGTABLE_PROXY_IP
-- Create the employee table
CREATE TABLE zdmbigtable.employee (
    name text PRIMARY KEY,
    age bigint,
    code int,
    credited double,
    balance float,
    is_active boolean,
    birth_date timestamp
);

CQLSH-এ, আপনার টেবিলটি তৈরি হয়েছে কিনা তা যাচাই করুন:

DESC TABLE zdmbigtable.employee;

৬. ZDM প্রক্সি সেট আপ করুন

আমরা এই ল্যাবের জন্য ZDM প্রক্সির একটি একক উদাহরণ তৈরি করব, তবে আপনাকে প্রোডাকশন মাইগ্রেশনের জন্য একটি মাল্টি-নোড সেট আপ চাইবে।

১. ZDM প্রক্সি VM তৈরি করুন

gcloud compute instances create zdm-proxy-vm \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB \
--scopes=cloud-platform \
--zone=$ZONE

উভয় VM-এর IP ঠিকানাগুলি লক্ষ্য করুন।

2. ZDM প্রক্সি প্রস্তুত করুন

gcloud compute ssh --zone="$ZONE" zdm-proxy-vm
export ZDM_VERSION="2.3.4"
wget "https://github.com/datastax/zdm-proxy/releases/download/v$ZDM_VERSION/zdm-proxy-linux-amd64-v$ZDM_VERSION.tgz"
tar -xvzf "zdm-proxy-linux-amd64-v$ZDM_VERSION.tgz"

# replace YOUR_ZONE
gcloud config set compute/zone "YOUR_ZONE"
export ZDM_ORIGIN_CONTACT_POINTS=$(gcloud compute instances describe cassandra-origin --format='get(networkInterfaces[0].networkIP)') 
export ZDM_TARGET_CONTACT_POINTS=$(gcloud compute instances describe bigtable-proxy-vm --format='get(networkInterfaces[0].networkIP)')
export ZDM_ORIGIN_USERNAME=""
export ZDM_ORIGIN_PASSWORD=""
export ZDM_TARGET_USERNAME=""
export ZDM_TARGET_PASSWORD=""
export ZDM_PROXY_LISTEN_ADDRESS=0.0.0.0
export ZDM_PROXY_LISTEN_PORT=9042
./zdm-proxy-v${ZDM_VERSION}

৭. অ্যাপ্লিকেশন কনফিগার করুন এবং ডুয়াল রাইট শুরু করুন

সময়কাল ০:০৫

প্রকৃত মাইগ্রেশনের এই পর্যায়ে, আপনাকে আপনার অ্যাপ্লিকেশন(গুলি) পুনরায় কনফিগার করতে হবে যাতে সরাসরি ক্যাসান্দ্রার সাথে সংযোগ স্থাপনের পরিবর্তে ZDM প্রক্সি vm এর IP ঠিকানা (যেমন, :9042) নির্দেশ করা যায়।

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

cqlsh $(gcloud compute instances describe zdm-proxy-vm --format='get(networkInterfaces[0].networkIP)')

কিছু তথ্য সন্নিবেশ করার চেষ্টা করুন:

INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Alice', 30, true); 
INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Anna', 45, true); 
INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Albert', 50, false); 
SELECT * FROM zdmbigtable.employee;

এই ডেটা Cassandra এবং Bigtable উভয়ের কাছেই লেখা উচিত। আপনি Bigtable-এ এটি নিশ্চিত করতে পারেন, Google Cloud Console- এ গিয়ে এবং আপনার ইনস্ট্যান্সের জন্য Bigtable Query Editor খুলে। "SELECT * FROM employee" কোয়েরি চালান, এবং সম্প্রতি ঢোকানো ডেটা দৃশ্যমান হবে।

8. ক্যাসান্দ্রা ডেটা মাইগ্রেটর ব্যবহার করে ঐতিহাসিক ডেটা স্থানান্তর করুন

এখন যেহেতু নতুন ডেটার জন্য ডুয়াল রাইট সক্রিয়, তাই ক্যাসান্ড্রা ডেটা মাইগ্রেটর (CDM) টুল ব্যবহার করে ক্যাসান্ড্রা থেকে বিগটেবলে বিদ্যমান ঐতিহাসিক ডেটা কপি করুন।

১. সিডিএম-এর জন্য কম্পিউট ইঞ্জিন ভিএম তৈরি করুন

এই VM-এর স্পার্কের জন্য পর্যাপ্ত মেমোরির প্রয়োজন।

gcloud compute instances create cdm-migrator-vm \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=40GB \
--scopes=cloud-platform \
--zone=$ZONE

২. পূর্বশর্ত ইনস্টল করুন (জাভা ১১, স্পার্ক)

cdm-migrator-vm-এ SSH:

gcloud compute ssh cdm-migrator-vm

ভিএম-এর ভেতরে:

# Install Java 11 
sudo apt-get update 
sudo apt-get install -y openjdk-11-jdk
 
# Verify Java installation 
java -version 

# Download and Extract Spark (Using version 3.5.3 as requested) 
# Check the Apache Spark archives for the correct URL if needed

wget  https://archive.apache.org/dist/spark/spark-3.5.3/spark-3.5.3-bin-hadoop3-scala2.13.tgz
tar -xvzf spark-3.5.3-bin-hadoop3-scala2.13.tgz

echo 'export SPARK_HOME=$PWD/spark-3.5.3-bin-hadoop3-scala2.13' >> ~/.profile
echo 'export PATH=$PATH:$SPARK_HOME/bin' >> ~/.profile
source ~/.profile

3. Cassandra ডেটা মাইগ্রেটর ডাউনলোড করুন

আপনার ব্রাউজারে, CDM প্যাকেজ পৃষ্ঠাটি খুলুন এবং Assets প্যানেল থেকে .jar লিঙ্কটি অনুলিপি করুন। যদি 5.4.0 উপলব্ধ না থাকে, তাহলে পরবর্তী নিকটতম সংস্করণটি নির্বাচন করুন। নীচের কমান্ডে লিঙ্কটি পেস্ট করুন এবং আপনার cdm-migrator-vm ইনস্ট্যান্সে এটি চালান, url এর চারপাশে একক উদ্ধৃতি চিহ্ন সংরক্ষণ করুন।

wget 'JAR_URL_GOES_HERE' -O cassandra-data-migrator.jar

jar টুল দিয়ে স্ক্যান করে jar ফাইলটি সঠিকভাবে ডাউনলোড হয়েছে কিনা তা যাচাই করুন: আপনি ".class" ফাইলের একটি দীর্ঘ তালিকা দেখতে পাবেন।

jar tf cassandra-data-migrator.jar 

৪. কিছু তথ্য যোগ করুন

আমাদের cassandra-origin- এ সরাসরি লিখে মাইগ্রেট করার জন্য কিছু ডেটা যোগ করতে হবে (zdm-proxy-vm নয়)।

INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Alfred', 67, true); 
INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Bobby', 12, false); 
INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Carol', 29, true); 

৫. মাইগ্রেশন কাজটি চালান

spark-submit ব্যবহার করে মাইগ্রেশনটি সম্পাদন করুন। এই কমান্ডটি Spark কে আপনার প্রোপার্টি ফাইল ব্যবহার করে এবং মাইগ্রেট করার জন্য কীস্পেস এবং টেবিল নির্দিষ্ট করে CDM জারটি চালাতে বলে। আপনার VM আকার এবং ডেটা ভলিউমের উপর ভিত্তি করে মেমরি সেটিংস (–driver-memory, –executor-memory) সামঞ্জস্য করুন।

নিশ্চিত করুন যে আপনি CDM jar এবং properties ফাইল ধারণকারী ডিরেক্টরিতে আছেন।

টিপস: আপনার স্থানীয় মেশিন থেকে এই কমান্ডগুলি চালিয়ে আপনি আপনার ক্যাসান্ড্রা এবং প্রক্সি ভিএম-এর অভ্যন্তরীণ আইপি পেতে পারেন:

gcloud compute instances describe cassandra-origin --format='get(networkInterfaces[0].networkIP)'
gcloud compute instances describe bigtable-proxy-vm --format='get(networkInterfaces[0].networkIP)'
export ORIGIN_HOST="<your-cassandra-origin-ip>"
export TARGET_HOST="<your-bigtable-proxy-vm-ip>"
export KEYSPACE_TABLE="zdmbigtable.employee"
spark-submit --verbose --master "local[*]" \
--driver-memory 3G --executor-memory 3G \
--conf spark.cdm.schema.origin.keyspaceTable="$KEYSPACE_TABLE" \
--conf spark.cdm.connect.origin.host="$ORIGIN_HOST" \
--conf spark.cdm.connect.origin.port=9042 \
--conf spark.cdm.connect.target.host="$TARGET_HOST" \
--conf spark.cdm.connect.target.port=9042 \
--conf spark.cdm.feature.origin.ttl.automatic=false \
--conf spark.cdm.feature.origin.writetime.automatic=false \
--conf spark.cdm.feature.target.ttl.automatic=false \
--conf spark.cdm.feature.target.writetime.automatic=false \
--conf spark.cdm.schema.origin.column.ttl.automatic=false \
--conf spark.cdm.schema.ttlwritetime.calc.useCollections=false \
--class com.datastax.cdm.job.Migrate cassandra-data-migrator.jar

৬. ডেটা মাইগ্রেশন যাচাই করুন

সিডিএম কাজটি সফলভাবে সম্পন্ন হলে, বিগটেবলে ঐতিহাসিক তথ্য বিদ্যমান কিনা তা যাচাই করুন।

cqlsh <bigtable-proxy-vm-ip>

cqlsh এর ভিতরে:

SELECT COUNT(*) FROM zdmbigtable.employee; -- Check row count matches origin 
SELECT * FROM zdmbigtable.employee LIMIT 10; -- Check some sample data

৯. কাটওভার (ধারণাগত)

ক্যাসান্ড্রা এবং বিগটেবলের মধ্যে ডেটার সামঞ্জস্য পুঙ্খানুপুঙ্খভাবে যাচাই করার পরে, আপনি চূড়ান্ত কাটওভারের সাথে এগিয়ে যেতে পারেন।

ZDM প্রক্সির সাথে, কাটওভারটি মূলত অরিজিন (ক্যাসান্ড্রা) এর পরিবর্তে টার্গেট (বিগটেবল) থেকে পড়ার জন্য পুনরায় কনফিগার করা জড়িত। এটি সাধারণত ZDM প্রক্সির কনফিগারেশনের মাধ্যমে করা হয়, কার্যকরভাবে আপনার অ্যাপ্লিকেশনের পঠিত ট্র্যাফিককে Bigtable-এ স্থানান্তরিত করে।

একবার আপনি নিশ্চিত হয়ে গেলে যে Bigtable সমস্ত ট্র্যাফিক সঠিকভাবে পরিবেশন করছে, আপনি অবশেষে এটি করতে পারবেন:

  • ZDM প্রক্সি পুনরায় কনফিগার করে দ্বৈত লেখা বন্ধ করুন।
  • মূল ক্যাসান্দ্রা ক্লাস্টারটি বাতিল করুন।
  • ZDM প্রক্সিটি সরান এবং অ্যাপ্লিকেশনটিকে সরাসরি Cassandra-Bigtable প্রক্সির সাথে সংযুক্ত করুন অথবা জাভার জন্য নেটিভ Bigtable CQL ক্লায়েন্ট ব্যবহার করুন।

কাটওভারের জন্য ZDM প্রক্সি পুনর্গঠনের সুনির্দিষ্ট বিবরণ এই মৌলিক কোডল্যাবের বাইরে, তবে Datastax ZDM ডকুমেন্টেশনে বিস্তারিতভাবে বর্ণনা করা হয়েছে।

১০. পরিষ্কার করা

চার্জ এড়াতে, এই কোডল্যাবের সময় তৈরি করা রিসোর্সগুলি মুছে ফেলুন।

১. কম্পিউট ইঞ্জিন ভিএম মুছে ফেলুন

gcloud compute instances delete cassandra-origin zdm-proxy-vm bigtable-proxy-vm cdm-migrator-vm --zone=$ZONE --quiet

২. বিগটেবল ইনস্ট্যান্স মুছুন

gcloud bigtable instances delete zdmbigtable

৩. ফায়ারওয়াল নিয়ম মুছে ফেলুন

gcloud compute firewall-rules delete allow-migration-internal

৪. ক্যাসান্দ্রা ডাটাবেস মুছে ফেলুন (যদি স্থানীয়ভাবে ইনস্টল করা থাকে বা স্থায়ী থাকে)

যদি আপনি এখানে তৈরি করা কম্পিউট ইঞ্জিন ভিএমের বাইরে ক্যাসান্ড্রা ইনস্টল করে থাকেন, তাহলে ডেটা অপসারণ করতে বা ক্যাসান্ড্রা আনইনস্টল করতে যথাযথ পদক্ষেপগুলি অনুসরণ করুন।

১১. অভিনন্দন!

আপনি Apache Cassandra থেকে Bigtable-এ প্রক্সি-ভিত্তিক মাইগ্রেশন পাথ স্থাপনের প্রক্রিয়াটি সফলভাবে সম্পন্ন করেছেন!

তুমি শিখেছো কিভাবে:

ক্যাসান্ড্রা এবং বিগটেবলকে মোতায়েন করুন।

  • CQL সামঞ্জস্যের জন্য Cassandra-Bigtable প্রক্সি কনফিগার করুন।
  • ডুয়াল রাইট এবং ট্র্যাফিক পরিচালনা করতে Datastax ZDM প্রক্সি স্থাপন করুন।
  • ঐতিহাসিক তথ্য স্থানান্তর করতে ক্যাসান্দ্রা ডেটা মাইগ্রেটর ব্যবহার করুন।

এই পদ্ধতিটি প্রক্সি স্তর ব্যবহার করে ন্যূনতম ডাউনটাইম এবং কোনও কোড পরিবর্তন ছাড়াই মাইগ্রেশনের অনুমতি দেয়।

পরবর্তী পদক্ষেপ

  • বিগটেবল ডকুমেন্টেশন অন্বেষণ করুন
  • উন্নত কনফিগারেশন এবং কাটওভার পদ্ধতির জন্য Datastax ZDM প্রক্সি ডকুমেন্টেশন দেখুন।
  • আরও বিস্তারিত জানার জন্য Cassandra-Bigtable Proxy সংগ্রহস্থলটি পর্যালোচনা করুন।
  • উন্নত ব্যবহারের জন্য Cassandra Data Migrator সংগ্রহস্থলটি পরীক্ষা করুন।
  • অন্যান্য Google Cloud Codelabs ব্যবহার করে দেখুন