Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Кассандра
Разработчик может иметь существующие рабочие нагрузки Cassandra, работающие в локальной среде или в облаке. Может потребоваться перенести их в Azure. Такие нагрузки можно перенести в API учетной записи Cassandra в Azure Cosmos DB. В этом руководстве приведены инструкции по различным параметрам, которые доступны для переноса данных Apache Cassandra в API для учетной записи Cassandra в Azure Cosmos DB.
В рамках этого руководства рассматриваются следующие задачи:
- Планирование миграции.
- Соответствие предварительным требованиям для миграции.
- Перенос данных с помощью
cqlsh
COPY
команды. - Перенос данных с помощью Spark.
Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Необходимые условия миграции
Оцените потребности пропускной способности: Перед переносом данных в API для учетной записи Cassandra в Azure Cosmos DB оцените потребности в пропускной способности рабочей нагрузки. Как правило, начните со средней пропускной способности, необходимой для операций создания, чтения, обновления и удаления (CRUD). Затем включите дополнительную пропускную способность, необходимую для операций извлечения, преобразования и загрузки (ETL) или скачкообразных операций. Для планирования миграции необходимо знать следующее.
Текущий или предполагаемый размер данных. Определяет минимальные требования к размеру базы данных и пропускной способности. При оценке размера данных для нового приложения можно предположить, что данные равномерно распределяются по строкам. Вы можете оценить значение, умножив размер данных.
Требуемая пропускная способность. Приблизительная пропускная способность для операций чтения (запрос, получение) и записи (изменение, удаление, вставка). Это значение необходимо для вычисления требуемого количества единиц, а также размера данных в устойчивом состоянии.
Схема. Подключитесь к существующему кластеру Cassandra с помощью
cqlsh
и экспортируйте схему из Cassandra.cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
После определения требований существующей рабочей нагрузки создайте учетную запись Azure Cosmos DB, базу данных и контейнеры в соответствии с собранными требованиями к пропускной способности.
Определите плату за единицу запроса (ЕЗ) для операции: Вы можете определить ЕЗ с помощью любого из пакетов SDK, поддерживаемых API для Cassandra. В этом примере мы используем для оценки затрат версию .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}"); }
Выделите требуемую пропускную способность. Azure Cosmos DB поддерживает автоматическое масштабирование хранилища и пропускной способности по мере роста требований. Вы можете оценить ваши потребности в пропускной способности с помощью калькулятора RU Azure Cosmos DB.
Создайте таблицы в учетной записи API Cassandra: Перед началом миграции данных предварительно создайте все таблицы на портале Azure или из
cqlsh
. Если вы переносите учетную запись Azure Cosmos DB с пропускной способностью на уровне базы данных, укажите ключ секции при создании контейнеров.Увеличьте пропускную способность. Продолжительность миграции данных зависит от пропускной способности, которую вы предоставите для таблиц в Azure Cosmos DB. Увеличьте пропускную способность во время миграции. С более высокой пропускной способностью можно избежать ограничения скорости и миграции за меньшее время. После завершения миграции уменьшите пропускную способность для экономии затрат. Также рекомендуется использовать учетную запись Azure Cosmos DB, находящуюся в том же регионе, что и база данных-источник.
Включение безопасности транспортного уровня (TLS): Azure Cosmos DB имеет строгие требования к безопасности и стандарты. Включите TLS при взаимодействии с учетной записью. При использовании языка запросов Cassandra (CQL) с Secure Shell можно предоставить сведения TLS.
Варианты миграции данных
Вы можете переместить данные из существующих рабочих нагрузок Cassandra в Azure Cosmos DB с помощью cqlsh
COPY
команды или с помощью Spark.
Перенос данных с помощью команды cqlsh COPY
Предупреждение
Используйте только команду CQL COPY
для переноса небольших наборов данных. Если нужно перенести большие наборы данных, перенесите данные с помощью Spark.
Чтобы убедиться, что файл .csv содержит правильную структуру файлов, используйте
COPY TO
команду для экспорта данных непосредственно из исходной таблицы Cassandra в файл .csv. Убедитесь, чтоcqlsh
подключен к исходной таблице с помощью соответствующих учетных данных.COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;
Теперь получите сведения о строке подключения учетной записи Cassandra для API:
- Войдите на портал Azure и перейдите в учетную запись Azure Cosmos DB.
- Откройте панель Строка подключения. Здесь вы увидите все сведения, необходимые для подключения к вашей учетной записи
cqlsh
Cassandra в API.
Войдите в
cqlsh
, используя данные о подключении из портала Azure.Используйте команду CQL
COPY FROM
для копированияdata.csv
. Этот файл по-прежнему находится в корневом каталоге пользователя, гдеcqlsh
устанавливается.COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
Примечание.
API для Cassandra поддерживает протокол 4, который поставляется с Cassandra 3.11. При использовании более поздних версий протокола с нашим API могут возникнуть проблемы. С более поздней версией COPY FROM
протокола команда может перейти в цикл и вернуть повторяющиеся строки.
Добавьте protocol-version
в cqlsh
команду:
cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
Добавление параметров ограничения пропускной способности в команду CQL COPY
Команда COPY
в cqlsh
поддерживает различные параметры для управления скоростью импорта документов в Azure Cosmos DB.
Конфигурация по умолчанию для команды COPY
пытается быстро поглощать данные. Он не учитывает поведение ограничения скорости в Azure Cosmos DB. Уменьшите CHUNKSIZE
или INGESTRATE
в зависимости от пропускной способности, настроенной в коллекции.
Рекомендуется использовать следующую конфигурацию (как минимум) для коллекции в 20 000 RUs, если размер документа или записи составляет 1 КБ:
-
CHUNKSIZE
= 100 -
INGESTRATE
= 500 -
MAXATTEMPTS
= 10
Примеры команд
Скопируйте данные из API для Cassandra в локальный файл .csv:
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
Скопируйте данные из локального .csv-файла в API для Cassandra:
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;
Внимание
Поддерживается только версия CQLSH COPY
Apache Cassandra с открытым кодом. Версии CQLSH
Datastax Enterprise (DSE) могут столкнуться с ошибками.
Перенос данных с помощью Spark
Чтобы перенести данные в учетную запись Cassandra для API в Spark, выполните следующие действия.
Подготовьте кластер Azure Databricks или кластер Azure HDInsight.
Перемещение данных в целевой API для конечной точки Cassandra. Дополнительные сведения см. в статье "Миграция данных из Cassandra в учетную запись Azure Cosmos DB для Apache Cassandra".
Если у вас есть данные, находящиеся в существующем кластере на виртуальных машинах Azure или любом другом облаке, рекомендуется использовать задания Spark для переноса данных. Настройте Spark в качестве посредника для однократного или регулярного приема. Можно ускорить миграцию с помощью подключений Azure ExpressRoute между локальной средой и Azure.
Динамическая миграция
Если вам нужна миграция без простоя из собственного кластера Apache Cassandra, рекомендуется настроить двойные записи и отдельную массовую нагрузку данных для переноса исторических данных. Реализация этого шаблона является более простой при использовании прокси-сервера двойной записи с открытым исходным кодом, чтобы обеспечить минимальные изменения кода приложения. Дополнительные сведения см. в статье о динамической миграции данных из Apache Cassandra в Azure Cosmos DB для Apache Cassandra.
Очистка ресурсов
Если ресурсы больше не нужны, можно удалить группу ресурсов, учетную запись Azure Cosmos DB и все связанные ресурсы. Для этого выберите группу ресурсов для виртуальной машины, выберите Удалить и подтвердите имя удаляемой группы ресурсов.
Следующий шаг
В этом руководстве вы узнали, как перенести данные в API для учетной записи Cassandra в Azure Cosmos DB. Теперь вы можете познакомиться с другими концепциями Azure Cosmos DB: