এই কোডল্যাব সম্পর্কে
1. ভূমিকা
Bigtable হল একটি সম্পূর্ণরূপে পরিচালিত, উচ্চ-কর্মক্ষমতা সম্পন্ন NoSQL ডাটাবেস পরিষেবা যা বৃহৎ বিশ্লেষণাত্মক এবং কর্মক্ষম কাজের চাপের জন্য ডিজাইন করা হয়েছে। Apache Cassandra এর মতো বিদ্যমান ডাটাবেস থেকে Bigtable-এ স্থানান্তরিত করার জন্য প্রায়ই ডাউনটাইম এবং অ্যাপ্লিকেশন প্রভাব কমানোর জন্য সতর্ক পরিকল্পনার প্রয়োজন হয়।
এই কোডল্যাবটি প্রক্সি সরঞ্জামগুলির সংমিশ্রণ ব্যবহার করে ক্যাসান্দ্রা থেকে বিগটেবলে একটি মাইগ্রেশন কৌশল প্রদর্শন করে:
- Cassandra-Bigtable Proxy: Cassandra ক্লায়েন্ট এবং টুলগুলিকে (যেমন
cqlsh
বা ড্রাইভার) বিগটেবলের সাথে ইন্টারঅ্যাক্ট করতে দেয় ক্যাসান্ড্রা কোয়েরি ল্যাঙ্গুয়েজ (CQL) প্রোটোকল ব্যবহার করে প্রশ্ন অনুবাদ করে। - ডেটাস্ট্যাক্স জিরো ডাউনটাইম মাইগ্রেশন (জেডডিএম) প্রক্সি: একটি ওপেন-সোর্স প্রক্সি যা আপনার অ্যাপ্লিকেশন এবং আপনার ডাটাবেস পরিষেবাগুলির মধ্যে বসে (উৎপত্তি ক্যাসান্দ্রা এবং ক্যাসান্দ্রা-বিগটেবল প্রক্সির মাধ্যমে বিগটেবলের উদ্ভব)। এটি দ্বৈত লেখার অর্কেস্ট্রেট করে এবং ট্রাফিক রাউটিং পরিচালনা করে, ন্যূনতম অ্যাপ্লিকেশন পরিবর্তন এবং ডাউনটাইম সহ মাইগ্রেশন সক্ষম করে।
- ক্যাসান্দ্রা ডেটা মাইগ্রেটর (CDM): একটি ওপেন-সোর্স টুল যা উৎস ক্যাসান্দ্রা ক্লাস্টার থেকে লক্ষ্য Bigtable উদাহরণে ঐতিহাসিক ডেটা বাল্ক স্থানান্তর করার জন্য ব্যবহৃত হয়।
আপনি কি শিখবেন
- কম্পিউট ইঞ্জিনে একটি মৌলিক ক্যাসান্দ্রা ক্লাস্টার কীভাবে সেট আপ করবেন।
- কিভাবে একটি Bigtable উদাহরণ তৈরি করতে হয়।
- বিগটেবলে একটি ক্যাসান্দ্রা স্কিমা ম্যাপ করতে ক্যাসান্দ্রা-বিগটেবল প্রক্সি কীভাবে স্থাপন এবং কনফিগার করবেন।
- দ্বৈত লেখার জন্য ডেটাস্ট্যাক্স জেডডিএম প্রক্সি কীভাবে স্থাপন এবং কনফিগার করবেন।
- বিদ্যমান ডেটা বাল্ক-মাইগ্রেট করতে ক্যাসান্দ্রা ডেটা মাইগ্রেটর টুলটি কীভাবে ব্যবহার করবেন।
- একটি প্রক্সি-ভিত্তিক ক্যাসান্ড্রা থেকে বিগটেবল মাইগ্রেশনের জন্য সামগ্রিক কর্মপ্রবাহ।
আপনি কি প্রয়োজন হবে
- বিলিং সক্ষম সহ একটি Google ক্লাউড প্রকল্প৷ নতুন ব্যবহারকারীরা বিনামূল্যে ট্রায়ালের জন্য যোগ্য৷
- Google ক্লাউড ধারণাগুলির সাথে প্রাথমিক পরিচিতি যেমন প্রকল্প, কম্পিউট ইঞ্জিন, ভিপিসি নেটওয়ার্ক এবং ফায়ারওয়াল নিয়ম। লিনাক্স কমান্ড-লাইন সরঞ্জামগুলির সাথে প্রাথমিক পরিচিতি।
-
gcloud
সিএলআই ইনস্টল এবং কনফিগার করা মেশিনে অ্যাক্সেস করুন বা Google ক্লাউড শেল ব্যবহার করুন।
এই কোডল্যাবের জন্য, নেটওয়ার্কিং সহজ করার জন্য আমরা প্রাথমিকভাবে একই VPC নেটওয়ার্ক এবং অঞ্চলের মধ্যে Compute Engine-এ ভার্চুয়াল মেশিন (VMs) ব্যবহার করব। অভ্যন্তরীণ আইপি ঠিকানাগুলি ব্যবহার করার পরামর্শ দেওয়া হয়।
2. আপনার পরিবেশ সেট আপ করুন
1. একটি Google ক্লাউড প্রকল্প নির্বাচন করুন বা তৈরি করুন৷
Google ক্লাউড কনসোলে নেভিগেট করুন এবং একটি বিদ্যমান প্রকল্প নির্বাচন করুন বা একটি নতুন তৈরি করুন৷ আপনার প্রজেক্ট আইডি নোট করুন।
2. প্রয়োজনীয় API সক্রিয় করুন
আপনার প্রকল্পের জন্য Compute Engine API এবং Bigtable API সক্ষম করা আছে তা নিশ্চিত করুন।
gcloud services enable compute.googleapis.com bigtable.googleapis.com bigtableadmin.googleapis.com --project=<your-project-id>
আপনার প্রকৃত প্রকল্প আইডি দিয়ে প্রতিস্থাপন করুন।
3. একটি অঞ্চল এবং অঞ্চল চয়ন করুন৷
আপনার সম্পদের জন্য একটি অঞ্চল এবং অঞ্চল নির্বাচন করুন। আমরা উদাহরণ হিসেবে 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
4. ফায়ারওয়াল নিয়ম কনফিগার করুন
আমাদের বিভিন্ন পোর্টে ডিফল্ট ভিপিসি নেটওয়ার্কের মধ্যে আমাদের ভিএমগুলির মধ্যে যোগাযোগের অনুমতি দিতে হবে:
- ক্যাসান্দ্রা/প্রক্সি সিকিউএল পোর্ট: 9042
- ZDM প্রক্সি হেলথ চেক পোর্ট: 14001
- SSH: 22
এই পোর্টগুলিতে অভ্যন্তরীণ ট্র্যাফিকের অনুমতি দেওয়ার জন্য একটি ফায়ারওয়াল নিয়ম তৈরি করুন৷ প্রাসঙ্গিক VM-এ এই নিয়মটি সহজে প্রয়োগ করতে আমরা একটি ট্যাগ cassandra-migration
ব্যবহার করব।
gcloud compute firewall-rules create allow-migration-internal \ --network=default \ --action=ALLOW \ --rules=tcp:22,tcp:9042,tcp:14001 \ --source-ranges=10.128.0.0/9 # Adjust if using a custom VPC/IP range \ --target-tags=cassandra-migration
3. ক্যাসান্দ্রা ক্লাস্টার স্থাপন করুন (উৎস)
এই কোডল্যাবের জন্য, আমরা কম্পিউট ইঞ্জিনে একটি সাধারণ একক-নোড ক্যাসান্ড্রা ক্লাস্টার সেট আপ করব। একটি বাস্তব-বিশ্বের দৃশ্যে, আপনি আপনার বিদ্যমান ক্লাস্টারের সাথে সংযুক্ত হবেন।
1. ক্যাসান্দ্রার জন্য একটি GCE VM তৈরি করুন৷
gcloud compute instances create cassandra-origin \ --machine-type=e2-medium \ --image-family=ubuntu-2004-lts \ --image-project=ubuntu-os-cloud \ --tags=cassandra-migration \ --boot-disk-size=20GB
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](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](https://downloads.apache.org/cassandra/KEYS) | sudo apt-key add - # Install Cassandra sudo apt-get update sudo apt-get install -y cassandra
3. একটি কীস্পেস এবং টেবিল তৈরি করুন
আমরা একটি কর্মচারী টেবিল উদাহরণ ব্যবহার করব এবং "zdmbigtable" নামে একটি কীস্পেস তৈরি করব।
cd ~/apache-cassandra bin/cqlsh <your-localhost-ip? 9042 #starts the cql shell
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 ঠিকানাটি নোট করুন।
4. বিগটেবল সেট আপ করুন (লক্ষ্য)
সময়কাল 0:01
একটি 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
Bigtable টেবিল নিজেই পরে Cassandra-Bigtable প্রক্সি সেটআপ স্ক্রিপ্ট দ্বারা তৈরি করা হবে।
5. Cassandra-Bigtable প্রক্সি সেট আপ করুন
1. Cassandra-Bigtable প্রক্সির জন্য Compute Engine VM তৈরি করুন
gcloud compute instances create bigtable-proxy-vm \ --machine-type=e2-medium \ --image-family=ubuntu-2004-lts \ --image-project=ubuntu-os-cloud \ --tags=cassandra-migration \ --boot-disk-size=20GB
Bigtable-proxy-vm-এ SSH:
gcloud compute ssh bigtable-proxy-vm
ভিএম এর ভিতরে:
# Install Git and Go sudo apt-get update sudo apt-get install -y git golang-go # Clone the proxy repository # Replace with the actual repository URL if different git clone https://github.com/GoogleCloudPlatform/cloud-bigtable-ecosystem.git cd cassandra-to-bigtable-proxy/ # Set Go environment variables export GOPATH=$HOME/go export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
2. প্রক্সি কনফিগার করুন
nano config.yaml
নিম্নলিখিত ভেরিয়েবল আপডেট করুন. আরও উন্নত কনফিগারেশনের জন্য GitHub-এ দেওয়া এই উদাহরণটি ব্যবহার করুন।
#!/bin/bash
cassandraToBigtableConfigs:
# Global default GCP Project ID
projectId: <your-project-id>
listeners:
- name: cluster1
port: 9042
bigtable:
#If you want to use multiple instances then pass the instance names by comma seperated
#Instance name should not contain any special characters except underscore(_)
instanceIds: zdmbigtable
# Number of grpc channels to be used for Bigtable session.
Session:
grpcChannels: 4
otel:
# Set enabled to true or false for OTEL metrics/traces/logs.
enabled: False
# Name of the collector service to be setup as a sidecar
serviceName: cassandra-to-bigtable-otel-service
healthcheck:
# Enable the health check in this proxy application config only if the
# "health_check" extension is added to the OTEL collector service configuration.
#
# Recommendation:
# Enable the OTEL health check if you need to verify the collector's availability
# at the start of the application. For development or testing environments, it can
# be safely disabled to reduce complexity.
# Enable/Disable Health Check for OTEL, Default 'False'.
enabled: False
# Health check endpoint for the OTEL collector service
endpoint: localhost:13133
metrics:
# Collector service endpoint
endpoint: localhost:4317
traces:
# Collector service endpoint
endpoint: localhost:4317
#Sampling ratio should be between 0 and 1. Here 0.05 means 5/100 Sampling ratio.
samplingRatio: 1
loggerConfig:
# Specifies the type of output, here it is set to 'file' indicating logs will be written to a file.
# Value of `outputType` should be `file` for file type or `stdout` for standard output.
# Default value is `stdout`.
outputType: stdout
# Set this only if the outputType is set to `file`.
# The path and name of the log file where logs will be stored. For example, output.log, Required Key.
# Default `/var/log/cassandra-to-spanner-proxy/output.log`.
fileName: output/output.log
# Set this only if the outputType is set to `file`.
# The maximum size of the log file in megabytes before it is rotated. For example, 500 for 500 MB.
maxSize: 10
# Set this only if the outputType is set to `file`.
# The maximum number of backup log files to keep. Once this limit is reached, the oldest log file will be deleted.
maxBackups: 2
# Set this only if the outputType is set to `file`.
# The maximum age in days for a log file to be retained. Logs older than this will be deleted. Required Key.
# Default 3 days
maxAge: 1
# Set this only if the outputType is set to `file`.
# Default value is set to 'False'. Change the value to 'True', if log files are required to be compressed.
compress: True
ফাইলটি সংরক্ষণ করুন এবং বন্ধ করুন (ctrl+X, তারপর Y, তারপর ন্যানোতে এন্টার)।
3. Cassandra-Bigtable প্রক্সি শুরু করুন
প্রক্সি সার্ভার শুরু করুন।
# At the root of the cassandra-to-bigtable-proxy directory go run proxy.go
ইনকামিং CQL সংযোগের জন্য পোর্ট 9042-এ প্রক্সি শুরু হবে এবং শুনবে। এই টার্মিনাল অধিবেশন চলমান রাখুন. এই VM এর IP ঠিকানাটি নোট করুন (হোস্টনেম -I)
4. CQL এর মাধ্যমে টেবিল তৈরি করুন
Cassandra-Bigtable Proxy VM এর IP ঠিকানার সাথে cqlsh
সংযোগ করুন।
cqlsh
এ নিম্নলিখিত কমান্ডটি চালান
-- 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 );
Google ক্লাউড কনসোলে যাচাই করুন যে কর্মচারী টেবিল এবং মেটাডেটা টেবিল আপনার Bigtable উদাহরণে বিদ্যমান।
6. ZDM প্রক্সি সেট আপ করুন
ZDM প্রক্সির জন্য কমপক্ষে দুটি মেশিনের প্রয়োজন: এক বা একাধিক প্রক্সি নোড যা ট্র্যাফিক পরিচালনা করে এবং একটি "Jumphost" ব্যবহার করা হয় এবং Ansible এর মাধ্যমে অর্কেস্ট্রেশনের জন্য ব্যবহৃত হয়।
1. ZDM প্রক্সির জন্য কম্পিউট ইঞ্জিন VM তৈরি করুন
আমাদের দুটি ভিএম দরকার: zdm-proxy-jumphost এবং zdm-proxy-node-1
# Jumphost VM gcloud compute instances create zdm-jumphost \ --machine-type=e2-medium \ --image-family=ubuntu-2004-lts \ --image-project=ubuntu-os-cloud \ --tags=cassandra-migration \ --boot-disk-size=20GB # Proxy Node VM gcloud compute instances create zdm-proxy-node-1 \ --machine-type=e2-standard-8 \ --image-family=ubuntu-2004-lts \ --image-project=ubuntu-os-cloud \ --tags=cassandra-migration \ --boot-disk-size=20GB
উভয় VM-এর IP ঠিকানা নোট করুন।
2. জাম্পহোস্ট প্রস্তুত করুন
zdm-jumphost-এ SSH
gcloud compute ssh zdm-jumphost
# Install Git and Ansible
sudo apt-get update
sudo apt-get install -y git ansible
জাম্পহোস্টের ভিতরে
git clone https:\/\/github.com/datastax/zdm-proxy-automation.git
cd zdm-proxy-automation/ansible/
প্রধান কনফিগারেশন ফাইল vars/zdm_proxy_cluster_config.yml সম্পাদনা করুন:
যথাক্রমে আপনার Cassandra VM এবং Cassandra-Bigtable Proxy VM-এর অভ্যন্তরীণ IP ঠিকানাগুলির সাথে origin_contact_points এবং target_contact_points আপডেট করুন। আমরা এটি সেট আপ না হিসাবে প্রমাণীকরণ মন্তব্য আউট ছেড়ে দিন.
##############################
#### ORIGIN CONFIGURATION ####
##############################
## Origin credentials (leave commented if no auth)
# origin_username: ...
# origin_password: ...
## Set the following two parameters only if Origin is a self-managed, non-Astra cluster
origin_contact_points: <Your-Cassandra-VM-Internal-IP> # Replace!
origin_port: 9042
##############################
#### TARGET CONFIGURATION ####
##############################
## Target credentials (leave commented if no auth)
# target_username: ...
# target_password: ...
## Set the following two parameters only if Target is a self-managed, non-Astra cluster
target_contact_points: <Your-Bigtable-Proxy-VM-Internal-IP> # Replace!
target_port: 9042
# --- Other ZDM Proxy settings can be configured below ---
# ... (keep defaults for this codelab)
এই ফাইলটি সংরক্ষণ করুন এবং বন্ধ করুন।
3. Ansible ব্যবহার করে ZDM প্রক্সি স্থাপন করুন
জাম্পহোস্টে উত্তরযোগ্য ডিরেক্টরি থেকে উত্তরযোগ্য প্লেবুকটি চালান:
ansible-playbook deploy_zdm_proxy.yml -i zdm_ansible_inventory
এই কমান্ডটি প্রক্সি নোডে (zdm-proxy-node-1) প্রয়োজনীয় সফ্টওয়্যার (যেমন ডকার) ইনস্টল করবে, ZDM প্রক্সি ডকার ইমেজ টানবে এবং আপনার দেওয়া কনফিগারেশনের সাথে প্রক্সি কন্টেইনার শুরু করবে।
4. ZDM প্রক্সি স্বাস্থ্য যাচাই করুন
জাম্পহোস্ট থেকে zdm-proxy-node-1 (পোর্ট 14001) এ চলমান ZDM প্রক্সির প্রস্তুতির শেষ পয়েন্ট পরীক্ষা করুন:
# Replace <zdm-proxy-node-1-internal-ip> with the actual internal IP.
curl -G http://<zdm-proxy-node-1-internal-ip>:14001/health/readiness
আপনি এটির অনুরূপ আউটপুট দেখতে পাবেন, এটি নির্দেশ করে যে অরিজিন (ক্যাসান্দ্রা) এবং লক্ষ্য (ক্যাসান্দ্রা-বিগটেবল প্রক্সি) উভয়ই ইউপি:
{
"OriginStatus": {
"Addr": "<Your-Cassandra-VM-Internal-IP>:9042",
"CurrentFailureCount": 0,
"FailureCountThreshold": 1,
"Status": "UP"
},
"TargetStatus": {
"Addr": "<Your-Bigtable-Proxy-VM-Internal-IP>:9042",
"CurrentFailureCount": 0,
"FailureCountThreshold": 1,
"Status": "UP"
},
"Status": "UP"
}
7. অ্যাপ্লিকেশন কনফিগার করুন এবং দ্বৈত লেখা শুরু করুন
সময়কাল 0:05
সত্যিকারের মাইগ্রেশনের এই পর্যায়ে, আপনি সরাসরি ক্যাসান্দ্রার সাথে সংযোগ করার পরিবর্তে ZDM প্রক্সি নোডের আইপি ঠিকানা (যেমন :9042) নির্দেশ করতে আপনার অ্যাপ্লিকেশন(গুলি) পুনরায় কনফিগার করবেন।
একবার অ্যাপ্লিকেশনটি ZDM প্রক্সির সাথে সংযুক্ত হয়ে গেলে: ডিফল্টরূপে অরিজিন (ক্যাসান্ড্রা) থেকে রিডগুলি পরিবেশন করা হয়৷ অরিজিন (ক্যাসান্ড্রা) এবং টার্গেট (বিগটেবল, ক্যাসান্দ্রা-বিগটেবল প্রক্সির মাধ্যমে) উভয়ের কাছেই লেখা পাঠানো হয়। উভয় ডাটাবেসে একই সাথে নতুন ডেটা লেখা হয়েছে তা নিশ্চিত করার সময় এটি আপনার অ্যাপ্লিকেশনটিকে স্বাভাবিকভাবে কাজ চালিয়ে যেতে সক্ষম করে। আপনি জাম্পহোস্ট বা নেটওয়ার্কের অন্য ভিএম থেকে জেডডিএম প্রক্সিতে নির্দেশিত cqlsh ব্যবহার করে সংযোগ পরীক্ষা করতে পারেন:
Cqlsh <zdm-proxy-node-1-ip-address> 9042
কিছু তথ্য সন্নিবেশ করার চেষ্টা করুন:
INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Alice', 30, true); SELECT * FROM employee WHERE name = 'Alice';
এই ডেটা ক্যাসান্দ্রা এবং বিগটেবল উভয়ের কাছে লেখা উচিত। Google ক্লাউড কনসোলে গিয়ে এবং আপনার উদাহরণের জন্য Bigtable ক্যোয়ারী এডিটর খুলে আপনি Bigtable-এ এটি নিশ্চিত করতে পারেন। একটি "SELECT * FROM কর্মচারী" ক্যোয়ারী চালান এবং সম্প্রতি ঢোকানো ডেটা দৃশ্যমান হওয়া উচিত।
8. ক্যাসান্দ্রা ডেটা মাইগ্রেটর ব্যবহার করে ঐতিহাসিক ডেটা স্থানান্তর করুন
এখন যেহেতু দ্বৈত লেখাগুলি নতুন ডেটার জন্য সক্রিয়, ক্যাসান্দ্রা ডেটা মাইগ্রেটর (CDM) টুল ব্যবহার করুন ক্যাসান্দ্রা থেকে বিগটেবলে বিদ্যমান ঐতিহাসিক ডেটা কপি করতে।
1. সিডিএম-এর জন্য কম্পিউট ইঞ্জিন ভিএম তৈরি করুন
এই VM-এর স্পার্কের জন্য পর্যাপ্ত মেমরি প্রয়োজন।
gcloud compute instances create cdm-migrator-vm \ --machine-type=e2-medium \ --image-family=ubuntu-2004-lts \ --image-project=ubuntu-os-cloud \ --tags=cassandra-migration \ --boot-disk-size=40GB
2. পূর্বশর্ত ইনস্টল করুন (জাভা 11, স্পার্ক)
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](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
export SPARK_HOME=$PWD/spark-3.5.3-bin-hadoop3-scala2.13
export PATH=$PATH:$SPARK_HOME/bin
3. Cassandra ডেটা মাইগ্রেটর ডাউনলোড করুন
CDM টুল জার ফাইলটি ডাউনলোড করুন। পছন্দসই সংস্করণের সঠিক URL এর জন্য Cassandra Data Migrator GitHub রিলিজ পৃষ্ঠাটি দেখুন।
# Example using version 5.2.2 - replace URL if needed
wget https://github.com/datastax/cassandra-data-migrator/releases/download/v5.2.2/cassandra-data-migrator-5.2.2.jar)
4. সিডিএম কনফিগার করুন
cdm.properties নামে একটি বৈশিষ্ট্য ফাইল তৈরি করুন
Nano cdm.properties
নিম্নলিখিত কনফিগারেশন পেস্ট করুন, IP ঠিকানাগুলি প্রতিস্থাপন করুন এবং TTL/Writetime বৈশিষ্ট্যগুলি নিষ্ক্রিয় করুন কারণ সেগুলি একইভাবে Bigtable দ্বারা সরাসরি সমর্থিত নয়৷ আউট মন্তব্য ত্যাগ.
# Origin Cassandra Connection
spark.cdm.connect.origin.host <Your-Cassandra-VM-IP-Address> # Replace!
spark.cdm.connect.origin.port 9042
spark.cdm.connect.origin.username cassandra # Leave default, or set if auth is enabled #
spark.cdm.connect.origin.password cassandra # Leave default, or set if auth is enabled #
# Target Bigtable (via Cassandra-Bigtable Proxy)
Connection spark.cdm.connect.target.host <Your-Bigtable-Proxy-VM-IP-Address> # Replace!
spark.cdm.connect.target.port 9042
spark.cdm.connect.target.username cassandra # Leave default, or set if auth is enabled #
spark.cdm.connect.target.password cassandra # Leave default, or set if auth is enabled #
# Disable TTL/Writetime features (Important for Bigtable compatibility via Proxy)
spark.cdm.feature.origin.ttl.automatic false
spark.cdm.feature.origin.writetime.automatic false
spark.cdm.feature.target.ttl.automatic false
spark.cdm.feature.target.writetime.automatic false
ফাইলটি সংরক্ষণ করুন এবং বন্ধ করুন।
5. মাইগ্রেশন কাজ চালান
স্পার্ক-সাবমিট ব্যবহার করে মাইগ্রেশন চালান। এই কমান্ডটি স্পার্ককে CDM জার চালাতে বলে, আপনার প্রপার্টি ফাইল ব্যবহার করে এবং মাইগ্রেট করার জন্য কীস্পেস এবং টেবিল নির্দিষ্ট করে। আপনার VM আকার এবং ডেটা ভলিউমের উপর ভিত্তি করে মেমরি সেটিংস (-ড্রাইভার-মেমরি, -এক্সিকিউটর-মেমরি) সামঞ্জস্য করুন।
নিশ্চিত করুন যে আপনি সিডিএম জার এবং বৈশিষ্ট্য ফাইল ধারণকারী ডিরেক্টরিতে আছেন। আপনি যদি একটি ভিন্ন সংস্করণ ডাউনলোড করেন তবে 'casandra-data-migrator-5.2.2.jar' প্রতিস্থাপন করুন।
./spark-3.5.3-bin-hadoop3-scala2.13/bin/spark-submit \ --properties-file cdm.properties \ --master "local[*]" \ --driver-memory 4G \ --executor-memory 4G \ --class com.datastax.cdm.job.Migrate \ cassandra-data-migrator-5.2.2.jar &> cdm_migration_$(date +%Y%m%d_%H%M).log
মাইগ্রেশন ব্যাকগ্রাউন্ডে চলবে, এবং লগগুলি cdm_migration_... .log এ লেখা হবে। অগ্রগতি এবং কোনো ত্রুটির জন্য লগ ফাইল নিরীক্ষণ করুন:
tail -f cdm_migration_*.log
6. ডেটা মাইগ্রেশন যাচাই করুন
একবার সিডিএম কাজ সফলভাবে সম্পন্ন হলে, বিগটেবলে ঐতিহাসিক ডেটা বিদ্যমান কিনা তা যাচাই করুন। যেহেতু ক্যাসান্ড্রা-বিগটেবল প্রক্সি CQL পড়ার অনুমতি দেয়, আপনি আবার ZDM প্রক্সির সাথে সংযুক্ত cqlsh ব্যবহার করতে পারেন (যা মাইগ্রেশনের পরে টার্গেটে যায় বা কনফিগার করা যেতে পারে) বা ডাটা জিজ্ঞাসা করার জন্য সরাসরি ক্যাসান্ড্রা-বিগটেবল প্রক্সিতে। ZDM প্রক্সির মাধ্যমে সংযোগ করুন:
cqlsh <zdm-proxy-node-1-ip-address> 9042
cqlsh এর ভিতরে:
SELECT COUNT(*) FROM zdmbigtable.employee; -- Check row count matches origin SELECT * FROM employee LIMIT 10; -- Check some sample data
বিকল্পভাবে, বিগটেবলে সরাসরি ডেটা দেখতে cbt টুল (যদি CDM VM বা ক্লাউড শেলে ইনস্টল করা থাকে) ব্যবহার করুন:
# First, install cbt if needed
# gcloud components update
# gcloud components install cbt
# Then lookup a specific row (replace 'some_employee_name' with an actual primary key)
cbt -project $PROJECT_ID -instance zdmbigtable lookup employee some_employee_name
9. কাটওভার (ধারণাগত)
ক্যাসান্দ্রা এবং বিগটেবলের মধ্যে ডেটা সামঞ্জস্য পুঙ্খানুপুঙ্খভাবে যাচাই করার পরে, আপনি চূড়ান্ত কাটওভার নিয়ে এগিয়ে যেতে পারেন।
ZDM প্রক্সির সাথে, কাটওভারে মূল (Cassandra) এর পরিবর্তে লক্ষ্য (Bigtable) থেকে পড়ার জন্য এটিকে পুনরায় কনফিগার করা জড়িত। এটি সাধারণত ZDM প্রক্সির কনফিগারেশনের মাধ্যমে করা হয়, কার্যকরভাবে আপনার অ্যাপ্লিকেশনের পঠিত ট্রাফিককে Bigtable-এ স্থানান্তরিত করে।
একবার আপনি নিশ্চিত হন যে Bigtable সঠিকভাবে সমস্ত ট্র্যাফিক পরিবেশন করছে, আপনি শেষ পর্যন্ত:
- ZDM প্রক্সি পুনরায় কনফিগার করে দ্বৈত লেখা বন্ধ করুন।
- মূল ক্যাসান্দ্রা ক্লাস্টার বাতিল করুন।
- ZDM প্রক্সিটি সরান এবং অ্যাপ্লিকেশনটিকে সরাসরি Cassandra-Bigtable প্রক্সির সাথে সংযুক্ত করুন বা Java এর জন্য নেটিভ Bigtable CQL ক্লায়েন্ট ব্যবহার করুন৷
কাটওভারের জন্য জেডডিএম প্রক্সি পুনঃকনফিগারেশনের বৈশিষ্ট্যগুলি এই মৌলিক কোডল্যাবের বাইরে কিন্তু ডেটাস্ট্যাক্স জেডডিএম ডকুমেন্টেশনে বিস্তারিত রয়েছে।
10. পরিষ্কার করুন
চার্জ এড়াতে, এই কোডল্যাবের সময় তৈরি সংস্থানগুলি মুছুন।
1. কম্পিউট ইঞ্জিন VM গুলি মুছুন৷
gcloud compute instances delete cassandra-origin-vm zdm-proxy-jumphost zdm-proxy-node-1 bigtable-proxy-vm cdm-migrator-vm --zone=$ZONE --quiet
2. Bigtable উদাহরণ মুছুন
gcloud bigtable instances delete zdmbigtable
3. ফায়ারওয়াল নিয়ম মুছুন
gcloud compute firewall-rules delete allow-migration-internal
4. ক্যাসান্ড্রা ডাটাবেস মুছুন (যদি স্থানীয়ভাবে ইনস্টল করা থাকে বা অব্যাহত থাকে)
আপনি যদি এখানে তৈরি করা কম্পিউট ইঞ্জিন VM-এর বাইরে Cassandra ইনস্টল করেন, তাহলে ডেটা সরাতে বা Cassandra আনইনস্টল করার জন্য উপযুক্ত পদক্ষেপগুলি অনুসরণ করুন।
11. অভিনন্দন!
আপনি Apache Cassandra থেকে Bigtable পর্যন্ত একটি প্রক্সি-ভিত্তিক মাইগ্রেশন পথ সেট আপ করার প্রক্রিয়ার মধ্য দিয়ে সফলভাবে হেঁটেছেন!
আপনি শিখেছেন কিভাবে:
ক্যাসান্দ্রা এবং বিগটেবল স্থাপন করুন।
- CQL সামঞ্জস্যের জন্য Cassandra-Bigtable প্রক্সি কনফিগার করুন।
- দ্বৈত লেখা এবং ট্রাফিক পরিচালনা করতে Datastax ZDM প্রক্সি স্থাপন করুন।
- ঐতিহাসিক ডেটা সরাতে ক্যাসান্দ্রা ডেটা মাইগ্রেটর ব্যবহার করুন।
এই পদ্ধতিটি প্রক্সি লেয়ার ব্যবহার করে ন্যূনতম ডাউনটাইম সহ মাইগ্রেশনের অনুমতি দেয় এবং কোন কোড পরিবর্তন হয় না।
পরবর্তী পদক্ষেপ
- Bigtable ডকুমেন্টেশন অন্বেষণ
- উন্নত কনফিগারেশন এবং কাটওভার পদ্ধতির জন্য Datastax ZDM প্রক্সি ডকুমেন্টেশনের সাথে পরামর্শ করুন।
- আরো বিস্তারিত জানার জন্য Cassandra-Bigtable Proxy সংগ্রহস্থল পর্যালোচনা করুন।
- উন্নত ব্যবহারের জন্য ক্যাসান্দ্রা ডেটা মাইগ্রেটর সংগ্রহস্থল পরীক্ষা করুন।
- অন্যান্য Google ক্লাউড কোডল্যাব ব্যবহার করে দেখুন