Kurz: Migrace dat do účtu API pro Cassandra

PLATÍ PRO: Cassandra

Jako vývojář můžete mít existující úlohy Cassandra, které běží místně nebo v cloudu, a můžete je chtít migrovat do Azure. Takové úlohy můžete migrovat do účtu API pro Cassandra ve službě Azure Cosmos DB. Tento kurz obsahuje pokyny k různým možnostem migrace dat Apache Cassandra do účtu API for Cassandra ve službě Azure Cosmos DB.

Tento kurz se zabývá následujícími úkony:

  • Plánování migrace
  • Předpoklady pro migraci
  • Migrace dat pomocí cqlshCOPY příkazu
  • Migrace dat pomocí Sparku

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

Předpoklady pro migraci

  • Odhadněte potřeby propustnosti: Před migrací dat do účtu CASsandra ve službě Azure Cosmos DB byste měli odhadnout potřeby propustnosti vaší úlohy. Obecně platí, že začněte s průměrnou propustností vyžadovanou operacemi CRUD a pak zahrňte další propustnost potřebnou pro operace extrakce načítání transformace nebo spiky. K naplánování migrace budete potřebovat následující podrobnosti:

    • Velikost stávajících dat nebo odhadovanou velikost dat: Definuje minimální požadavky na velikost a propustnost databáze. Pokud odhadujete velikost dat pro novou aplikaci, můžete předpokládat, že se data rovnoměrně distribuují napříč řádky a odhadnou hodnotu vynásobením velikostí dat.

    • Požadovaná propustnost: Přibližná rychlost čtení (dotaz/získání) a zápisu (operace aktualizace, odstranění/vložení) Tato hodnota se vyžaduje k výpočtu požadovaných jednotek žádosti spolu s velikostí dat v stabilním stavu.

    • Schéma: Připojení do existujícího clusteru Cassandra prostřednictvím cqlsha export schématu z Cassandra:

      cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
      

      Po identifikaci požadavků na stávající úlohu vytvořte účet, databázi a kontejnery Azure Cosmos DB podle shromážděných požadavků na propustnost.

    • Určení poplatku za RU operace: Ru můžete určit pomocí libovolné sady SDK podporované rozhraním API pro Cassandra. Tento příklad ukazuje získání poplatků za RU pro verzi .NET.

      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}");
        }
      
  • Přidělení požadované propustnosti: Azure Cosmos DB dokáže automaticky škálovat úložiště a propustnost podle vašich rostoucích požadavků. S odhadem vašich potřeb z hlediska propustnosti vám pomůže kalkulačka jednotek žádostí pro Azure Cosmos DB.

  • Vytvoření tabulek v účtu API pro Cassandra: Před zahájením migrace dat předem vytvořte všechny tabulky z webu Azure Portal nebo z cqlshwebu . Pokud migrujete na účet služby Azure Cosmos DB s propustností na úrovni databáze, nezapomeňte při vytváření kontejnerů zadat klíč oddílu.

  • Zvýšená propustnost: Doba trvání migrace dat závisí na propustnosti, kterou pro tabulky v Azure Cosmos DB zřídíte. Po dobu trvání migrace propustnost zvyšte. Vyšší propustnost vám umožní zabránit omezování rychlosti a zkrátit dobu migrace. Po dokončení migrace propustnost snižte, abyste dosáhli nižších nákladů. Doporučujeme také mít účet služby Azure Cosmos DB ve stejné oblasti jako zdrojová databáze.

  • Povolení protokolu TLS: Azure Cosmos DB má přísné požadavky na zabezpečení a standardy. Při interakci s vaším účtem nezapomeňte povolit protokol TLS. Pokud používáte CQL s protokolem SSH, máte možnost zadat informace o protokolu TLS.

Možnosti migrace dat

Data z existujících úloh Cassandra můžete přesunout do služby Azure Cosmos DB pomocí cqlshCOPY příkazu nebo pomocí Sparku.

Migrace dat pomocí příkazu cqlsh COPY

Pomocí příkazu CQL COPY zkopírujte místní data do účtu API for Cassandra ve službě Azure Cosmos DB.

Upozorňující

K migraci malých datových sad použijte pouze kopii CQL. Pokud chcete přesunout velké datové sady, migrujte data pomocí Sparku.

  1. Abyste měli jistotu, že soubor CSV obsahuje správnou strukturu souborů, použijte COPY TO příkaz k exportu dat přímo ze zdrojové tabulky Cassandra do souboru CSV (ujistěte se, že je cqlsh připojený ke zdrojové tabulce pomocí příslušných přihlašovacích údajů):

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. Teď získejte informace o připojovací řetězec vašeho rozhraní API pro účet Cassandra:

    • Přihlaste se k webu Azure Portal a přejděte ke svému účtu služby Azure Cosmos DB.

    • Otevřete podokno řetězce Připojení ionu. Tady uvidíte všechny informace, které potřebujete pro připojení k vašemu účtu API for Cassandra z cqlsh.

  3. Přihlaste se cqlsh pomocí informací o připojení z portálu.

  4. CQLCOPY FROM Pomocí příkazu zkopírujte data.csv (stále se nachází v kořenovém adresáři uživatele, kde cqlsh je nainstalován):

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

Poznámka:

Rozhraní API pro Cassandra podporuje protokol verze 4, který se dodává s Cassandra 3.11. K problémům s používáním novějších verzí protokolu s naším rozhraním API může docházet k problémům. FUNKCE COPY FROM s novější verzí protokolu může přejít do smyčky a vrátit duplicitní řádky. Přidejte do příkazu cqlsh verzi protokolu.

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Přidání možností omezení propustnosti do příkazu CQL Copy

Příkaz COPY v cqlsh podporuje různé parametry pro řízení rychlosti příjmu dokumentů do služby Azure Cosmos DB.

Výchozí konfigurace příkazu COPY se snaží ingestovat data velmi rychlým tempem a nebere v úvahu chování služby Cosmos DB při omezování rychlosti. V závislosti na propustnosti nakonfigurované v kolekci byste měli snížit hodnotu CHUNKSIZE nebo INGESTRATE.

Pokud je velikost dokumentu nebo záznamu 1 kB, doporučujeme následující konfiguraci (minimálně) pro kolekci na 20 000 RU.

  • CHUNKSIZE = 100
  • INGESTRATE = 500
  • MAXATTEMPTS = 10
Příklady příkazů
  • Kopírování dat z rozhraní API pro Cassandra do místního souboru CSV
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
  • Kopírování dat z místního souboru CSV do rozhraní API pro Cassandra
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;

Důležité

Podporuje se pouze opensourcová verze Apache Cassandra CQLSH COPY. U verzí CQLSH (Datastax Enterprise) může dojít k chybám.

Migrace dat pomocí Sparku

K migraci dat do účtu Cassandra pomocí Sparku použijte následující postup:

  1. Zřízení clusteru Azure Databricks nebo clusteru Azure HDInsight

  2. Přesuňte data do cílového rozhraní API pro koncový bod Cassandra. Projděte si tento návod k migraci pomocí Azure Databricks.

Migrace dat pomocí úloh Sparku se doporučuje, pokud máte data umístěná v existujícím clusteru ve virtuálních počítačích Azure nebo jiném cloudu. Abyste to mohli udělat, musíte Spark nastavit jako zprostředkující pro jednorázový nebo pravidelný příjem dat. Tuto migraci můžete urychlit pomocí připojení Azure ExpressRoute mezi místním prostředím a Azure.

Migrace za provozu

Pokud se vyžaduje migrace bez výpadků z nativního clusteru Apache Cassandra, doporučujeme nakonfigurovat duální zápisy a samostatné hromadné načítání dat pro migraci historických dat. Tuto implementaci tohoto vzoru jsme provedli jednodušeji tím, že poskytujeme opensourcový proxy duální zápis, který umožňuje minimální změny kódu aplikace. Podívejte se na náš článek s postupy migrace za provozu s využitím proxy serveru se dvěma zápisy a Apache Sparku , kde najdete podrobnější informace o implementaci tohoto modelu.

Vyčištění prostředků

Pokud už je nepotřebujete, můžete odstranit skupinu prostředků, účet služby Azure Cosmos DB a všechny související prostředky. Uděláte to tak, že vyberete skupinu prostředků pro virtuální počítač, vyberete Odstranit a pak potvrdíte název skupiny prostředků, která se má odstranit.

Další kroky

V tomto kurzu jste se naučili migrovat data do účtu API for Cassandra ve službě Azure Cosmos DB. Teď se můžete seznámit s dalšími koncepty ve službě Azure Cosmos DB: