Spark кластерін құру
Мақалада VK Data Platform платформасында Terraform көмегімен Spark кластерін жасау мысалы келтірілген.
Кластерді жасау кезінде мыналар пайдаланылады:
- vkcs_dataplatform_cluster ресурсы;
- vkcs_networking_network ресурсы;
- vkcs_networking_subnet ресурсы;
- vkcs_db_instance ресурсы;
- vkcs_db_database ресурсы;
- vkcs_db_user ресурсы;
- vkcs_dataplatform_product деректер көзі;
- vkcs_networking_network деректер көзі.
Параметрлердің толық сипаттамасы — Terraform провайдерінің құжаттамасында.
-
Квоталарды тексеріңіз. Таңдалған аймақта кластерді жасау үшін ресурстар жеткілікті екеніне көз жеткізіңіз. Әртүрлі аймақтар үшін әртүрлі квоталар бапталуы мүмкін.
Квоталарды ұлғайту үшін техникалық қолдау қызметіне хабарласыңыз.
-
Егер әлі орындалмаса, Terraform-ды орнатып, ортаны баптаңыз.
-
vkcs_provider.tfфайлында провайдердің 0.7.0 немесе одан жоғары нұсқасы көрсетілгеніне көз жеткізіңіз. Егер провайдер нұсқасы төмен болса, провайдерді жаңартыңыз.
Келесі мазмұнмен Terraform конфигурациясының main.tf файлын жасаңыз:
locals {s3_bucket = "my_bucket"}resource "vkcs_dataplatform_cluster" "basic_spark" {name = "tf-basic-spark"description = "Production Spark cluster for data processing"network_id = vkcs_networking_network.db.idsubnet_id = vkcs_networking_subnet.db.idproduct_name = "spark"product_version = "3.5.1"availability_zone = "GZ1"configs = {settings = [{alias = "sparkproxy.spark_version"value = "spark-py-3.5.1:v3.5.1.2"}]maintenance = {start = "0 0 1 * *"}warehouses = [{name = "spark"connections = [{name = "s3_int"plug = "s3-int"settings = [{alias = "s3_bucket"value = local.s3_bucket},{alias = "s3_folder"value = "tfexample-folder"}]},{name = "postgres"plug = "postgresql"settings = [{alias = "db_name"value = vkcs_db_database.postgres_db.name},{alias = "hostname"value = "${vkcs_db_instance.db_instance.ip[0]}:5432"},{alias = "username"value = vkcs_db_user.postgres_user.name},{alias = "password"value = vkcs_db_user.postgres_user.password}]}]}]}pod_groups = [{name = "sparkconnect"count = 1resource = {cpu_request = "10"ram_request = "10"}},{name = "sparkhistory"count = 1resource = {cpu_request = "0.5"ram_request = "1"}volumes = {"data" = {storage_class_name = "ceph-ssd"storage = "5"count = 1}}}]}
Мұнда:
-
network_id— кластер орналастырылатын желінің идентификаторы. Кластер бар желіде де, жаңа желіде де орналастырылуы мүмкін. Идентификаторды манифесте көрсетуге, деректер көзінен немесе ресурстан алуға болады. -
product_name— VK Data Platform платформасындағы Spark сервисінің атауы. -
product_version— VK Data Platform платформасындағы Spark сервисінің нұсқасы. -
availability_zone— кластер жасалатын қолжетімділік аймағы. -
configs— кластер конфигурациясының параметрлері:-
settings— жалпы параметрлер.sparkproxy.spark_versionпараметрі тапсырмаларды орындау үшін Spark нұсқасын анықтайды. -
maintenance— Cron пішіміндегі техникалық қызмет көрсету басталатын уақыт. -
warehouses— деректер көздеріне қосылымдар.
-
-
pod_groups— кластердің есептеу ресурстары топтары:sparkconnect— деректерді интерактивті өңдеуге арналған ресурстар.sparkhistory— Spark тапсырмаларының тарихын сақтауға арналған ресурстар.
VK Data Platform платформасындағы Spark сервисін сипаттау үшін Terraform конфигурациясының product.tf файлын жасаңыз:
data "vkcs_dataplatform_product" "spark" {product_name = "spark"product_version = "3.5.1"}
Бұл деректер көзін пайдалану конфигурацияны икемдірек етуге мүмкіндік береді.
Сіз main.tf файлында data.vkcs_dataplatform_product.spark.product_name және data.vkcs_dataplatform_product.spark.product_version мәндеріне сілтеме жасай аласыз.
Параметрлердің толық сипаттамасы — Terraform провайдерінің құжаттамасында.
Кластерге арналған желілік инфрақұрылым сипаттамасы бар Terraform конфигурациясының network.tf файлын жасаңыз:
Жобада бар желіге арналған деректер көзі сипаттамасының мысалы:
data "vkcs_networking_network" "default" {name = "default"sdn = "neutron"}
Spark қосылатын дерекқорды сипаттау үшін Terraform конфигурациясының db.tf файлын жасаңыз:
resource "vkcs_db_instance" "db_instance" {name = "db-instance"flavor_id = "STD3-2-8"size = 10volume_type = "ceph-ssd"network {uuid = vkcs_networking_network.db.id}datastore {type = "postgresql"version = "13"}}resource "vkcs_db_database" "postgres_db" {name = "mydatabase"dbms_id = vkcs_db_instance.db_instance.id}resource "vkcs_db_user" "postgres_user" {name = "myuser"password = "securepassword123"dbms_id = vkcs_db_instance.db_instance.id}
-
Terraform конфигурациясы файлдарын бір директорияға орналастырыңыз:
vkcs_provider.tf;main.tf;product.tf(егер жасалған болса);network.tf(егер жасалған болса);db.tf(егер жасалған болса).
-
Осы директорияға өтіңіз.
-
Конфигурация файлдарының дұрыс екенін және қажетті өзгерістерді қамтитынын тексеріңіз:
terraform validate && terraform plan -
Өзгерістерді қолданыңыз:
terraform applyРастауды сұрағанда
yesенгізіңіз. -
Операцияның аяқталуын күтіңіз.
Spark кластерінің сәтті жасалғанына көз жеткізіңіз:
- VK Cloud жеке кабинетіне өтіңіз.
- Data Platform → Сервис даналары бөліміне өтіңіз. Spark кластерінің жасалғанына және белсенді екеніне көз жеткізіңіз.
Егер Terraform көмегімен жасалған ресурстар енді қажет болмаса, оларды жойыңыз:
-
Terraform конфигурациясы файлдары бар директорияға өтіңіз.
-
Келесі команданы орындаңыз:
terraform destroyРастауды сұрағанда
yesенгізіңіз. -
Операцияның аяқталуын күтіңіз.