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 az Azure Cosmos DB Cassandra-fiókjához készült API-ba migrálhatja. Ez az oktatóanyag útmutatást nyújt az Apache Cassandra-adatok Azure Cosmos DB-beli Cassandra-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:

  • Migrálási terv
  • A migrálás előfeltételei
  • Adatok migrálása a cqlshCOPY paranccsal
  • Adatok migrálása a Spark használatával

Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .

A migrálás előfeltételei

  • Az átviteli sebességre vonatkozó igények becslése: Mielőtt adatokat migrál az Azure Cosmos DB Cassandra-fiókjához készült API-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ás terheléséhez 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 megbecsülheti az értéket az adatméret megszorzásával.

    • 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 hozzávetőleges átviteli sebessége. Ez az érték a szükséges kérelemegységek és az állandó állapotú adatméret kiszámításához szükséges.

    • A séma: Csatlakozzon a meglévő Cassandra-fürthöz a használatával 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ókat az összegyűjtött átviteli sebességre vonatkozó követelményeknek megfelelően.

    • Egy művelet ru-díjának meghatározása: A kérelemegységek meghatározásához használja a Cassandra API által támogatott SDK-kat. 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.

  • Hozzon létre táblákat a Cassandra-fiók API-jában: Mielőtt elkezdené az adatok migrálását, hozza létre előre az összes táblát a Azure Portal vagy a forrásbólcqlsh. 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, amikor a fiókjával kommunikál. Ha A CQL-t SSH-val használja, lehetősége van TLS-adatok megadására.

Adatmigrálási lehetőségek

Az adatokat a meglévő Cassandra számítási feladatokból az Azure Cosmos DB-be helyezheti át a paranccsal vagy a cqlshCOPY Spark használatával.

Adatok migrálása a cqlsh COPY paranccsal

A CQL COPY paranccsal helyi adatokat másolhat az Azure Cosmos DB Cassandra-fiókjához készült API-ba.

Figyelmeztetés

Csak a CQL COPY használatával migrálja a kis méretű adathalmazokat. A nagy méretű adathalmazok áthelyezéséhez a Spark használatával migrálhatja az adatokat.

  1. Annak biztosításához, hogy a csv-fájl a megfelelő fájlstruktúrát tartalmazza, a COPY TO paranccsal 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 a Azure Portal, és lépjen az Azure Cosmos DB-fiókjába.

    • Nyissa meg a Kapcsolati sztring panelt. Itt láthatja az összes információt, amelyet a Cassandra API-fiókjához való csatlakozáshoz a következőből kell létrehoznia cqlsh: .

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

  4. Használja a parancsot a CQLCOPY FROM másoláshoz data.csv (továbbra is a felhasználói gyökérkönyvtárban található, ahol cqlsh telepítve van):

    COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
    

Megjegyzés

A Cassandra API támogatja a 4-es protokollverziót, amelyet a Cassandra 3.11-es verziójával szállítottak. 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 Copy 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 beállítást.

Az alábbi konfigurációt javasoljuk (legalább) egy 20 000 kérelemegységes gyűjteményhez, ha a dokumentum vagy a rekord mérete 1 KB.

  • CHUNKSIZE = 100
  • BETÖLTÉSI IDŐ = 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:

  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-jára. Tekintse meg ezt az útmutatót az Azure Databricks használatával végzett migráláshoz.

Ha azure-beli virtuális gépeken vagy bármely más felhőben található meglévő fürtben található adatokkal rendelkezik, az adatok Spark-feladatok használatával történő migrálása ajánlott. Ehhez a Sparkot közvetítőként kell beállítania az egyszeri vagy rendszeres betöltéshez. A migrálás felgyorsításához használja az Azure ExpressRoute-kapcsolatot a helyszíni környezet és az Azure között.

Élő áttelepítés

Ha egy 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ásokat, és külön tömeges adatterhelést az előzményadatok migrálásához. Ezt a mintá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ását. A minta implementálásával kapcsolatos további részletekért tekintse meg a kettős írású proxy és az Apache Spark használatával végzett élő migrálásról szóló útmutató cikkünket.

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 Api for Cassandra-fiókba az Azure Cosmos DB-ben. Most már megismerheti az Azure Cosmos DB egyéb fogalmait: