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 cqlshCOPY 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: Csatlakozás a meglévő Cassandra-fürtbecqlsh, é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 cqlshCOPY 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.

  1. 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;   
    
  2. 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 Csatlakozás ion String panelt. Itt láthatja az összes információt, amely a Cassandra-fiók cqlshAPI-hoz való csatlakozáshoz szükséges.

  3. Jelentkezzen be cqlsh a portál kapcsolati adataival.

  4. Használja a parancsot a CQLCOPY FROM másoláshoz data.csv (továbbra is a felhasználó gyökérkönyvtárában található, ahol cqlsh 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 (D Standard kiadás) 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:

  1. Azure Databricks-fürt vagy Azure HDInsight-fürt kiépítése.

  2. 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: