ड्यूअल-राइट प्रॉक्सी की मदद से, Cassandra से Bigtable पर माइग्रेट करना

ड्यूअल-राइट प्रॉक्सी की मदद से, Cassandra से Bigtable पर माइग्रेट करना

इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी

subjectपिछली बार अप्रैल 15, 2025 को अपडेट किया गया
account_circleLouis Cheynel ने लिखा

1. परिचय

Bigtable, पूरी तरह से मैनेज की जाने वाली और बेहतरीन परफ़ॉर्मेंस वाली NoSQL डेटाबेस सेवा है. इसे बड़े विश्लेषण और ऑपरेशनल वर्कलोड के लिए डिज़ाइन किया गया है. Apache Cassandra जैसे मौजूदा डेटाबेस से Bigtable पर माइग्रेट करने के लिए, अक्सर सावधानी से प्लान बनाने की ज़रूरत होती है. इससे, ऐप्लिकेशन पर होने वाले असर और डाउनटाइम को कम किया जा सकता है.

इस कोडलैब में, प्रॉक्सी टूल के कॉम्बिनेशन का इस्तेमाल करके, Cassandra से Bigtable पर माइग्रेट करने की रणनीति के बारे में बताया गया है:

  1. Cassandra-Bigtable प्रॉक्सी: यह Cassandra क्लाइंट और टूल (जैसे, cqlsh या ड्राइवर) को क्वेरी का अनुवाद करके, Cassandra क्वेरी लैंग्वेज (CQL) प्रोटोकॉल का इस्तेमाल करके Bigtable के साथ इंटरैक्ट करने की अनुमति देता है.
  2. Datastax Zero Downtime Migration (ZDM) Proxy: यह एक ओपन-सोर्स प्रॉक्सी है, जो आपके ऐप्लिकेशन और डेटाबेस सेवाओं (Cassandra-Bigtable Proxy के ज़रिए ऑरिजिन Cassandra और टारगेट Bigtable) के बीच काम करती है. यह ड्यूअल राइटिंग को ऑर्केस्ट्रेट करता है और ट्रैफ़िक रूटिंग को मैनेज करता है. इससे, ऐप्लिकेशन में कम से कम बदलाव और डाउनटाइम के साथ माइग्रेशन की सुविधा मिलती है.
  3. Cassandra डेटा माइग्रेटर (CDM): यह एक ओपन-सोर्स टूल है. इसका इस्तेमाल, सोर्स Cassandra क्लस्टर से पुराने डेटा को टारगेट Bigtable इंस्टेंस में बल्क में माइग्रेट करने के लिए किया जाता है.

आपको क्या सीखने को मिलेगा

  • Compute Engine पर बुनियादी Cassandra क्लस्टर सेट अप करने का तरीका.
  • Bigtable इंस्टेंस बनाने का तरीका.
  • Cassandra स्कीमा को Bigtable से मैप करने के लिए, Cassandra-Bigtable प्रॉक्सी को डिप्लॉय और कॉन्फ़िगर करने का तरीका.
  • ड्यूअल राइटिंग के लिए, Datastax ZDM प्रॉक्सी को डिप्लॉय और कॉन्फ़िगर करने का तरीका.
  • मौजूदा डेटा को एक साथ माइग्रेट करने के लिए, Cassandra Data Migrator टूल का इस्तेमाल करने का तरीका.
  • प्रॉक्सी-आधारित Cassandra से Bigtable माइग्रेशन के लिए पूरा वर्कफ़्लो.

आपको किन चीज़ों की ज़रूरत होगी

  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट. नए उपयोगकर्ता, बिना किसी शुल्क के आज़माने की सुविधा का फ़ायदा ले सकते हैं.
  • Google Cloud के कॉन्सेप्ट के बारे में बुनियादी जानकारी, जैसे कि प्रोजेक्ट, Compute Engine, VPC नेटवर्क, और फ़ायरवॉल नियम. Linux कमांड-लाइन टूल के बारे में बुनियादी जानकारी.
  • ऐसी मशीन का ऐक्सेस होना चाहिए जिस पर gcloud सीएलआई इंस्टॉल और कॉन्फ़िगर किया गया हो या Google Cloud Shell का इस्तेमाल किया जा सकता हो.

इस कोडलैब में, हम नेटवर्किंग को आसान बनाने के लिए, एक ही VPC नेटवर्क और इलाके में Compute Engine पर वर्चुअल मशीनों (वीएम) का इस्तेमाल करेंगे. हमारा सुझाव है कि आप इंटरनल आईपी पतों का इस्तेमाल करें.

2. अपना एनवायरमेंट सेट अप करने का तरीका

1. Google Cloud प्रोजेक्ट चुनना या बनाना

Google Cloud Console पर जाएं और कोई मौजूदा प्रोजेक्ट चुनें या नया प्रोजेक्ट बनाएं. अपना प्रोजेक्ट आईडी नोट कर लें.

2. ज़रूरी एपीआई चालू करना

पक्का करें कि आपके प्रोजेक्ट के लिए 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. फ़ायरवॉल के नियम कॉन्फ़िगर करना

हमें डिफ़ॉल्ट VPC नेटवर्क में कई पोर्ट पर, अपने वीएम के बीच कम्यूनिकेशन की अनुमति देनी होगी:

  • Cassandra/Proxies CQL पोर्ट: 9042
  • ZDM प्रॉक्सी की परफ़ॉर्मेंस की जांच करने वाला पोर्ट: 14001
  • एसएसएच: 22

इन पोर्ट पर इंटरनल ट्रैफ़िक की अनुमति देने के लिए, फ़ायरवॉल नियम बनाएं. हम टैग 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. Cassandra क्लस्टर (ऑरिजिन) डिप्लॉय करना

इस कोडलैब के लिए, हम Compute Engine पर एक आसान सिंगल-नोड Cassandra क्लस्टर सेट अप करेंगे. असल दुनिया में, आपको अपने मौजूदा क्लस्टर से कनेक्ट करना होगा.

1. Cassandra के लिए GCE (जीसीई) वीएम बनाना

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. Cassandra इंस्टॉल करना

# 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;

एसएसएच सेशन को खुला रखें या इस वीएम का आईपी पता (होस्टनेम -I) नोट करें.

4. Bigtable (टारगेट) सेट अप करना

अवधि 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

Cassandra-Bigtable प्रॉक्सी सेटअप स्क्रिप्ट, बाद में 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 में एसएसएच करें:

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

फ़ाइल को सेव और बंद करें. इसके लिए, nano में ctrl+X दबाएं. इसके बाद, Y और फिर Enter दबाएं.

3. Cassandra-Bigtable प्रॉक्सी शुरू करना

प्रॉक्सी सर्वर शुरू करें.

# At the root of the cassandra-to-bigtable-proxy directory
go run proxy.go

आने वाले CQL कनेक्शन के लिए, प्रॉक्सी पोर्ट 9042 पर शुरू हो जाएगी और सुनेगी. इस टर्मिनल सेशन को चालू रखें. इस VM का आईपी पता नोट करें (होस्टनेम -I)

4. CQL की मदद से टेबल बनाना

cqlsh को Cassandra-Bigtable प्रॉक्सी वीएम के आईपी पते से कनेक्ट करें.

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 Cloud Console में पुष्टि करें कि आपके Bigtable इंस्टेंस में कर्मचारी टेबल और मेटाडेटा टेबल मौजूद है.

6. ZDM प्रॉक्सी सेट अप करना

ZDM Proxy के लिए कम से कम दो मशीनों की ज़रूरत होती है: ट्रैफ़िक को मैनेज करने वाला एक या उससे ज़्यादा प्रॉक्सी नोड और Ansible की मदद से डिप्लॉयमेंट और ऑर्केस्ट्रेशन के लिए इस्तेमाल किया जाने वाला "Jumphost".

1. ZDM प्रॉक्सी के लिए Compute Engine 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 के आईपी पते नोट करें.

2. जंपहोस्ट तैयार करना

zdm-jumphost में एसएसएच से कनेक्ट करना

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 में बदलाव करें:

origin_contact_points और target_contact_points को अपने Cassandra VM और Cassandra-Bigtable Proxy VM के इंटरनल आईपी पतों से अपडेट करें. पुष्टि करने की सुविधा को टिप्पणी के तौर पर छोड़ दें, क्योंकि हमने इसे सेट अप नहीं किया है.

##############################
#### 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 डायरेक्ट्री से Ansible प्लेबुक चलाएं:

ansible-playbook deploy_zdm_proxy.yml -i zdm_ansible_inventory

यह कमांड, प्रॉक्सी नोड (zdm-proxy-node-1) पर ज़रूरी सॉफ़्टवेयर (जैसे, Docker) इंस्टॉल करेगा. साथ ही, ZDM प्रॉक्सी Docker इमेज को खींचेगा और आपके दिए गए कॉन्फ़िगरेशन के साथ प्रॉक्सी कंटेनर को शुरू करेगा.

4. ZDM प्रॉक्सी की परफ़ॉर्मेंस की पुष्टि करना

जंपहोस्ट से zdm-proxy-node-1 (पोर्ट 14001) पर चल रहे ZDM प्रॉक्सी के readiness एंडपॉइंट की जांच करें:

# Replace <zdm-proxy-node-1-internal-ip> with the actual internal IP.
curl
-G http://<zdm-proxy-node-1-internal-ip>:14001/health/readiness

आपको इससे मिलता-जुलता आउटपुट दिखेगा, जिससे पता चलता है कि ऑरिजिन (Cassandra) और टारगेट (Cassandra-Bigtable Proxy), दोनों चालू हैं:

{
 
"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 प्रॉक्सी से कनेक्ट हो जाता है, तब डिफ़ॉल्ट रूप से ऑरिजिन (Cassandra) से रीड की जाती हैं. डेटा, ऑरिजिन (Cassandra) और टारगेट (Bigtable, Cassandra-Bigtable प्रॉक्सी के ज़रिए) दोनों को भेजा जाता है. इससे आपका ऐप्लिकेशन सामान्य तरीके से काम करता रहता है. साथ ही, यह भी पक्का होता है कि नया डेटा, दोनों डेटाबेस में एक साथ लिखा जाए. नेटवर्क में मौजूद जंपहोस्ट या किसी अन्य वर्चुअल मशीन से, 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';

यह डेटा, Cassandra और Bigtable, दोनों में लिखा जाना चाहिए. Bigtable में इसकी पुष्टि करने के लिए, Google Cloud Console पर जाएं और अपने इंस्टेंस के लिए Bigtable क्वेरी एडिटर खोलें. "SELECT * FROM employee" क्वेरी चलाएं. इससे, हाल ही में डाला गया डेटा दिखेगा.

8. Cassandra Data Migrator का इस्तेमाल करके, पुराना डेटा माइग्रेट करना

अब नए डेटा के लिए ड्यूअल राइटिंग चालू है. इसलिए, Cassandra से Bigtable में मौजूदा पुराने डेटा को कॉपी करने के लिए, Cassandra Data Migrator (CDM) टूल का इस्तेमाल करें.

1. सीडीएम के लिए Compute Engine VM बनाना

इस VM में Spark के लिए ज़रूरत के मुताबिक मेमोरी होनी चाहिए.

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. ज़रूरी शर्तें (Java 11, Spark) इंस्टॉल करना

cdm-migrator-vm में एसएसएच करें:

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 Data Migrator डाउनलोड करना

सीडीएम टूल की jar फ़ाइल डाउनलोड करें. अपने पसंदीदा वर्शन के सही यूआरएल के लिए, 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

नीचे दिया गया कॉन्फ़िगरेशन चिपकाएं. इसके लिए, आईपी पते बदलें और टीटीएल/लिखने में लगने वाला समय की सुविधाएं बंद करें. ऐसा इसलिए, क्योंकि 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. माइग्रेशन जॉब चलाना

spark-submit का इस्तेमाल करके माइग्रेशन को लागू करें. यह निर्देश, Spark को आपकी प्रॉपर्टी फ़ाइल का इस्तेमाल करके, सीडीएम jar को चलाने के लिए कहता है. साथ ही, माइग्रेट करने के लिए कीस्पेस और टेबल की जानकारी देता है. अपने वर्चुअल मशीन (वीएम) के साइज़ और डेटा के वॉल्यूम के आधार पर, मेमोरी सेटिंग (–driver-memory, –executor-memory) में बदलाव करें.

पक्का करें कि आप उस डायरेक्ट्री में हों जिसमें सीडीएम jar और प्रॉपर्टी फ़ाइल मौजूद है. अगर आपने कोई दूसरा वर्शन डाउनलोड किया है, तो ‘cassandra-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. डेटा माइग्रेशन की पुष्टि करना

सीडीएम जॉब पूरा होने के बाद, पुष्टि करें कि पुराना डेटा Bigtable में मौजूद है. Cassandra-Bigtable प्रॉक्सी, CQL रीड की अनुमति देता है. इसलिए, डेटा की क्वेरी करने के लिए, ZDM प्रॉक्सी (जो माइग्रेशन के बाद रीड को टारगेट पर भेजता है या कॉन्फ़िगर किया जा सकता है) या सीधे Cassandra-Bigtable प्रॉक्सी से कनेक्ट किए गए 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

इसके अलावा, सीधे Bigtable में डेटा देखने के लिए, cbt टूल का इस्तेमाल करें. हालांकि, इसके लिए ज़रूरी है कि यह टूल सीडीएम VM या Cloud Shell पर इंस्टॉल हो:

# 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. कट-ओवर (कॉन्सेप्ट)

Cassandra और Bigtable के बीच डेटा की एक जैसी स्थिति की पूरी तरह से पुष्टि करने के बाद, फ़ाइनल कटओवर की प्रोसेस शुरू की जा सकती है.

ZDM प्रॉक्सी के साथ, कटओवर में इसे मुख्य रूप से ऑरिजिन (Cassandra) के बजाय टारगेट (Bigtable) से पढ़ने के लिए फिर से कॉन्फ़िगर करना शामिल है. आम तौर पर, यह ZDM Proxy के कॉन्फ़िगरेशन की मदद से किया जाता है. इससे, आपके ऐप्लिकेशन के रीड ट्रैफ़िक को Bigtable पर असरदार तरीके से ट्रांसफ़र किया जाता है.

जब आपको यह भरोसा हो जाए कि Bigtable, सारा ट्रैफ़िक सही तरीके से दिखा रहा है, तब ये काम किए जा सकते हैं:

  • ZDM प्रॉक्सी को फिर से कॉन्फ़िगर करके, डुप्लीकेट डेटा लिखने की प्रोसेस को रोकें.
  • ओरिजनल Cassandra क्लस्टर को बंद कर दें.
  • ZDM प्रॉक्सी को हटाएं और ऐप्लिकेशन को सीधे Cassandra-Bigtable प्रॉक्सी से कनेक्ट करें या Java के लिए नेटिव Bigtable CQL क्लाइंट का इस्तेमाल करें.

कटओवर के लिए ZDM प्रॉक्सी को फिर से कॉन्फ़िगर करने की खास जानकारी, इस बुनियादी कोडलैब में नहीं दी गई है. हालांकि, इस बारे में ज़्यादा जानकारी Datastax ZDM के दस्तावेज़ में दी गई है.

10. व्यवस्थित करें

शुल्क से बचने के लिए, इस कोडलैब के दौरान बनाए गए संसाधन मिटाएं.

1. Compute Engine के वीएम मिटाना

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. Cassandra डेटाबेस मिटाएं (अगर इसे स्थानीय तौर पर इंस्टॉल किया गया है या सेव किया गया है)

अगर आपने यहां बनाए गए Compute Engine VM के बाहर Cassandra इंस्टॉल किया है, तो डेटा हटाने या Cassandra को अनइंस्टॉल करने के लिए, सही तरीके अपनाएं.

11. बधाई हो!

आपने Apache Cassandra से Bigtable पर, प्रॉक्सी पर आधारित माइग्रेशन पाथ सेट अप करने की प्रोसेस पूरी कर ली है!

आपने ये काम करने का तरीका जाना:

Cassandra और Bigtable को डिप्लॉय करें.

  • CQL के साथ काम करने के लिए, Cassandra-Bigtable प्रॉक्सी को कॉन्फ़िगर करें.
  • ड्यूअल राइटिंग और ट्रैफ़िक को मैनेज करने के लिए, Datastax ZDM Proxy को डिप्लॉय करें.
  • पुराने डेटा को माइग्रेट करने के लिए, Cassandra Data Migrator का इस्तेमाल करें.

इस तरीके से, प्रॉक्सी लेयर का फ़ायदा उठाकर, कम से कम डाउनटाइम के साथ माइग्रेशन किया जा सकता है. साथ ही, कोड में कोई बदलाव भी नहीं करना पड़ता.

अगले चरण

  • Bigtable के दस्तावेज़ एक्सप्लोर करना
  • बेहतर कॉन्फ़िगरेशन और कटओवर प्रोसेस के लिए, Datastax ZDM प्रॉक्सी दस्तावेज़ देखें.
  • ज़्यादा जानकारी के लिए, Cassandra-Bigtable प्रॉक्सी रिपॉज़िटरी देखें.
  • बेहतर तरीके से इस्तेमाल करने के लिए, Cassandra Data Migrator का रिपॉज़िटरी देखें.
  • Google Cloud के अन्य कोडलैब आज़माएं