Oktatóanyag: Adatok migrálása Egy Cassandra-fiókhoz készült API-ba
A KÖVETKEZŐKRE VONATKOZIK: Cassandra
Fejlesztőként előfordulhat, hogy meglévő Cassandra-számítási feladatokkal rendelkezik, amelyek a helyszínen vagy a felhőben futnak, és érdemes lehet áttelepíteni őket az Azure-ba. Ezeket a számítási feladatokat migrálhatja egy Azure Cosmos DB Cassandra-fiókhoz készült API-ba. Ez az oktatóanyag útmutatást nyújt az Apache Cassandra-adatok Azure Cosmos DB-fiókhoz készült API-ba való migrálásához elérhető különböző lehetőségekről.
Ez az oktatóanyag a következő feladatokat mutatja be:
- Az áttelepítés megtervezése
- Az áttelepítés előfeltételei
- Adatok áttelepítése a
cqlsh
COPY
parancs használatával - Adatok migrálása a Spark használatával
Ha nem rendelkezik Azure-előfizetéssel, mindössze néhány perc alatt létrehozhat egy ingyenes fiókot a virtuális gép létrehozásának megkezdése előtt.
Az áttelepítés előfeltételei
Az átviteli sebességre vonatkozó igények becslése: Mielőtt adatokat migrál az Azure Cosmos DB-beli Cassandra-fiók API-jába, meg kell becsülnie a számítási feladat átviteli sebességére vonatkozó igényeket. Általánosságban kezdjük a CRUD-műveletek által igényelt átlagos átviteli sebességgel, majd adja meg a kinyerési átalakító terheléshez vagy a tüskés műveletekhez szükséges további átviteli sebességet. A migrálás megtervezéséhez a következő adatokra lesz szükség:
Meglévő vagy becsült adatmennyiség: A minimálisan szükséges adatbázisméretet és átviteli sebességet határozza meg. Ha egy új alkalmazás adatméretét becsüli meg, feltételezheti, hogy az adatok egyenletesen vannak elosztva a sorok között, és az adatmérettel való szorzással megbecsülheti az értéket.
Szükséges átviteli sebesség: Az olvasási (lekérdezési/lekérési) és írási (frissítési/törlési/beszúrási) műveletek becsült átviteli sebessége. Ez az érték szükséges a szükséges kérelemegységek kiszámításához, valamint az állandó állapotú adatok méretének kiszámításához.
A séma: Csatlakozzon a meglévő Cassandra-fürthöz
cqlsh
, és exportálja a sémát a Cassandra-ból:cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
Miután azonosította a meglévő számítási feladat követelményeit, hozzon létre egy Azure Cosmos DB-fiókot, adatbázist és tárolót az összegyűjtött átviteli sebesség követelményeinek megfelelően.
Egy művelet ru-díjának meghatározása: A kérelemegységeket a Cassandra API által támogatott SDK-k bármelyikével határozhatja meg. Ez a példa a kérelemegység-díjak .NET-tel való beszerzését mutatja be.
var tableInsertStatement = table.Insert(sampleEntity); var insertResult = await tableInsertStatement.ExecuteAsync(); foreach (string key in insertResult.Info.IncomingPayload) { byte[] valueInBytes = customPayload[key]; double value = Encoding.UTF8.GetString(valueInBytes); Console.WriteLine($"CustomPayload: {key}: {value}"); }
A szükséges átviteli sebesség lefoglalása: Az Azure Cosmos DB-vel automatikusan, a növekvő követelményeknek megfelelően skálázható a tárolás és az átviteli sebesség. A szükséges átviteli sebességet az Azure Cosmos DB kérelemegység-kalkulátorával számíthatja ki.
Táblák létrehozása a Cassandra API-fiókban: Mielőtt elkezdené az adatok migrálását, előzetesen hozza létre az összes táblát az Azure Portalról vagy a fiókból
cqlsh
. Ha adatbázisszintű átviteli sebességgel rendelkező Azure Cosmos DB-fiókba migrál, a tárolók létrehozásakor mindenképpen adjon meg partíciókulcsot.Átviteli sebesség növelése: Az adatok migrálásának időtartama az Azure Cosmos DB-táblákhoz lefoglalt átviteli sebességtől függ. A migrálás idejére növelje meg az átviteli sebességet. Nagyobb átviteli sebesség beállításakor nincs szükség a sebesség korlátozására, és gyorsabban végezhet a migrálással. A migrálás befejezése után, a költségtakarékosság érdekében csökkentse az átviteli sebességet. Azt is javasoljuk, hogy az Azure Cosmos DB-fiók ugyanabban a régióban legyen, mint a forrásadatbázis.
TLS engedélyezése: Az Azure Cosmos DB szigorú biztonsági követelményekkel és szabványokkal rendelkezik. Mindenképpen engedélyezze a TLS-t a fiókjával való interakció során. Ha A CQL-t SSH-val használja, lehetősége van TLS-információk megadására.
Adatmigrálási lehetőségek
A meglévő Cassandra-számítási feladatok adatai átköltöztethetők az Azure Cosmos DB-be a parancs vagy a cqlsh
COPY
Spark használatával.
Adatok migrálása a cqlsh COPY paranccsal
A CQL COPY paranccsal másolja a helyi adatokat az Azure Cosmos DB Cassandra-fiók API-jába.
Figyelmeztetés
Csak a CQL COPY használatával migrálhatja a kis adathalmazokat. Nagy adathalmazok áthelyezéséhez migrálja az adatokat a Spark használatával.
Annak biztosításához, hogy a csv-fájl a megfelelő fájlstruktúrát tartalmazza, a
COPY TO
parancs használatával exportálja az adatokat közvetlenül a forrás Cassandra táblából egy csv-fájlba (győződjön meg arról, hogy a cqlsh a megfelelő hitelesítő adatokkal csatlakozik a forrástáblához):COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;
Most szerezze be az API-t a Cassandra-fiók kapcsolati sztring adataihoz:
Jelentkezzen be az Azure Portalra, és lépjen az Azure Cosmos DB-fiókjába.
Nyissa meg a Kapcsolati sztring panelt. Itt láthatja az összes információt, amely a Cassandra-fiók
cqlsh
API-hoz való csatlakozáshoz szükséges.
Jelentkezzen be
cqlsh
a portál kapcsolati adataival.Használja a parancsot a
CQL
COPY FROM
másoláshozdata.csv
(továbbra is a felhasználó gyökérkönyvtárában található, aholcqlsh
telepítve van):COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
Feljegyzés
A Cassandra API támogatja a 4-es protokollt, amely a Cassandra 3.11-es verziójával van szállítva. Előfordulhat, hogy problémák merülnek fel a későbbi protokollverziók API-val való használatával kapcsolatban. A COPY FROM a későbbi protokollverzióval egy hurokba léphet, és ismétlődő sorokat ad vissza. Adja hozzá a protokollverziót a cqlsh parancshoz.
cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Átviteli sebességkorlátozó beállítások hozzáadása a CQL Másolás parancshoz
A cqlsh COPY parancsa különböző paramétereket támogat a dokumentumok Azure Cosmos DB-be való betöltésének sebességének szabályozásához.
A COPY parancs alapértelmezett konfigurációja nagyon gyors ütemben próbál adatokat betöltésre, és nem veszi figyelembe a CosmosDB sebességkorlátozó viselkedését. A gyűjteményen konfigurált átviteli sebességtől függően csökkentenie kell a CHUNKSIZE vagy az INGESTRATE függvényt.
Ha a dokumentum vagy a rekord mérete 1 KB, javasoljuk az alábbi konfigurációt (legalább) egy 20 000 kérelemegységet tartalmazó gyűjteményhez.
- CHUNKSIZE = 100
- BETÖLTÉSI SEBESSÉG = 500
- MAXATTEMPTS = 10
Példaparancsok
- Adatok másolása a Cassandra API-ból a helyi CSV-fájlba
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
- Adatok másolása helyi CSV-fájlból a Cassandra API-ba
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;
Fontos
Csak a CQLSH COPY nyílt forráskódú Apache Cassandra verziója támogatott. A CQLSH Datastax Enterprise (DSE) verziói hibákat tapasztalhatnak.
Adatok migrálása a Spark használatával
Az alábbi lépésekkel migrálhatja az adatokat a Cassandra-fiók API-jába a Spark használatával:
Azure Databricks-fürt vagy Azure HDInsight-fürt kiépítése.
Adatok áthelyezése a Cassandra-végpont cél API-ba. Tekintse meg ezt az útmutatót az Azure Databricks-lel való migráláshoz.
Ha azure-beli virtuális gépeken vagy bármely más felhőben meglévő fürtben található adatokkal rendelkezik, ajánlott az adatok Spark-feladatok használatával történő migrálása. Ehhez a Sparkot közvetítőként kell beállítania egyszeri vagy rendszeres betöltéshez. Ezt a migrálást felgyorsíthatja a helyszíni környezet és az Azure közötti Azure ExpressRoute-kapcsolat használatával.
Élő áttelepítés
Ha natív Apache Cassandra-fürtről nulla állásidős migrálásra van szükség, javasoljuk, hogy konfigurálja a kettős írást és egy külön tömeges adatbetöltést az előzményadatok migrálásához. A minta implementálását egyszerűbben valósítottuk meg egy nyílt forráskódú kettős írású proxy biztosításával, amely lehetővé teszi az alkalmazáskód minimális módosításait. A minta implementálásával kapcsolatos további részletekért tekintse meg a kettős írású proxyval és az Apache Sparkkal végzett élő migrálásról szóló útmutatónkat.
Az erőforrások eltávolítása
Ha már nincs rájuk szükség, törölheti az erőforráscsoportot, az Azure Cosmos DB-fiókot és az összes kapcsolódó erőforrást. Ehhez válassza ki a virtuális gép erőforráscsoportját, válassza a Törlés lehetőséget, majd erősítse meg a törölni kívánt erőforráscsoport nevét.
Következő lépések
Ebben az oktatóanyagban megtanulta, hogyan migrálhatja az adatokat egy Azure Cosmos DB-beli Cassandra-api-fiókba. Most már megismerheti az Azure Cosmos DB egyéb fogalmait: