Configuración de opciones de implementación de recursos y servicios de clústerConfigure deployment settings for cluster resources and services

Se aplica a:Applies to: síSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x)Se aplica a:Applies to: síSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x)

Nota

La versión CU9 y las versiones posteriores de Clústeres de macrodatos admiten la funcionalidad de administración de configuración.Big Data Clusters version CU9+ have support for configuration management functionality. Esta característica habilita las configuraciones posteriores a la implementación y proporciona una mayor visibilidad y una mejor capacidad de configuración del clúster.This feature enables post-deployment configurations and provides increased visibility and configurability of the cluster. La versión CU8 y las versiones anteriores no tienen esta funcionalidad, de modo que las configuraciones solo se pueden realizar en el momento de la implementación.Versions CU8 and lower do not have this functionality and configurations can only be done at deployment time.

Partiendo de un conjunto predefinido de perfiles de configuración integrados en la herramienta de administración CLI de datos de Azure (azdata)Azure Data CLI (azdata), la configuración predeterminada se puede modificar fácilmente para satisfacer de mejor forma los requisitos de carga de trabajo de BDC.Starting from a pre-defined set of configuration profiles that are built into the CLI de datos de Azure (azdata)Azure Data CLI (azdata) management tool, you can easily modify the default settings to better suit your BDC workload requirements. La estructura de los archivos de configuración permite actualizar de forma granular la configuración de cada servicio del recurso.The structure of the configuration files enables you to granularly update settings for each service of the resource.

Vea este vídeo de 13 minutos para información general sobre la configuración de los clústeres de macrodatos:Watch this 13-minute video for an overview of big data cluster configuration:

Sugerencia

Vea los artículos sobre cómo configurar la alta disponibilidad de componentes esenciales como la instancia maestra de SQL Server o el nodo de nombre de HDFS para más información sobre cómo implementar servicios de alta disponibilidad.Please reference the articles on how to configure high availability for mission critical components like SQL Server master or HDFS name node, for details on how to deploy highly available services.

Sugerencia

Consulte el artículo Propiedades de configuración de Clústeres de macrodatos de SQL Server para ver qué opciones se pueden configurar.Reference the SQL Server Big Data Clusters Configuration Properties article to see what settings are configurable. En el caso de CU8 o versiones anteriores, vea Propiedades de configuración de la instancia maestra de SQL Server (versiones anteriores a CU9) para conocer las configuraciones disponibles para la instancia maestra de SQL Server, y Propiedades de configuración de Apache Spark y Apache Hadoop (HDFS) para obtener información sobre las propiedades de Apache Spark y Hadoop.For versions CU8 or lower, reference SQL Server Master Instance Configuration Properties - Pre CU9 Release for configurations available for the SQL Server master instance and Apache Spark & Apache Hadoop (HDFS) configuration properties for Apache Spark and Hadoop properties.

También puede definir configuraciones de nivel de recurso o actualizar las configuraciones de todos los servicios de un recurso.You can also set resource level configurations or update the configurations for all services in a resource. Este es un resumen de la estructura de bdc.json:Here is a summary of the structure for bdc.json:

{
    "apiVersion": "v1",
    "metadata": {
        "kind": "BigDataCluster",
        "name": "mssql-cluster"
    },
    "spec": {
        "resources": {
            "nmnode-0": {...
            },
            "sparkhead": {...
            },
            "zookeeper": {...
            },
            "gateway": {...
            },
            "appproxy": {...
            },
            "master": {...
            },
            "compute-0": {...
            },
            "data-0": {...
            },
            "storage-0": {...
        },
        "services": {
            "sql": {
                "resources": [
                    "master",
                    "compute-0",
                    "data-0",
                    "storage-0"
                ]
            },
            "hdfs": {
                "resources": [
                    "nmnode-0",
                    "zookeeper",
                    "storage-0",
                    "sparkhead"
                ],
                "settings": {...
            },
            "spark": {
                "resources": [
                    "sparkhead",
                    "storage-0"
                ],
                "settings": {...
            }
        }
    }
}

Para actualizar las configuraciones de nivel de recurso (como las instancias de un grupo), hay que actualizar la especificación del recurso. Por ejemplo, para actualizar el número de instancias en el grupo de proceso, habrá que modificar esta sección en el archivo de configuración bdc.json:For updating resource level configurations like instances in a pool, you will update the resource spec. For example, to update the number of instances in the compute pool you will modify this section in bdc.json configuration file:

"resources": {
    ...
    "compute-0": {
        "metadata": {
            "kind": "Pool",
            "name": "default"
        },
        "spec": {
            "type": "Compute",
            "replicas": 4
        }
    }
    ...
}

Y lo mismo para cambiar la configuración de un único servicio dentro de un recurso específico.Similarly for changing the settings of a single service within a specific resource. Por ejemplo, si quiere cambiar la configuración de memoria de Spark solo para el componente Spark del grupo de almacenamiento, habrá que actualizar el recurso storage-0 con una sección settings para el servicio spark en el archivo de configuración bdc.json.For example, if you want to change the Spark memory settings only for the Spark component in the Storage pool, you will update the storage-0 resource with a settings section for spark service in the bdc.json configuration file.

"resources":{
    ...
     "storage-0": {
        "metadata": {
            "kind": "Pool",
            "name": "default"
        },
        "spec": {
            "type": "Storage",
            "replicas": 2,
            "settings": {
                "spark": {
                    "spark-defaults-conf.spark.driver.memory": "2g",
                    "spark-defaults-conf.spark.driver.cores": "1",
                    "spark-defaults-conf.spark.executor.instances": "3",
                    "spark-defaults-conf.spark.executor.memory": "1536m",
                    "spark-defaults-conf.spark.executor.cores": "1",
                    "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
                    "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
                    "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
                    "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
                    "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
                }
            }
        }
    }
    ...
}

Si quiere aplicar la misma configuración a un servicio asociado a varios recursos, deberá actualizar el elemento settings correspondiente en la sección services.If you want to apply same configurations for a service associated with multiple resources, you will update the corresponding settings in the services section. Por ejemplo, si quiere definir la misma configuración para Spark tanto en el grupo de almacenamiento como en los grupos de Spark, habrá que actualizar la sección settings de la sección servicio spark en el archivo de configuración bdc.json.For example, if you would like to set same settings for Spark across both storage pool and Spark pools, you will update the settings section in the spark service section in the bdc.json configuration file.

"services": {
    ...
    "spark": {
        "resources": [
            "sparkhead",
            "storage-0"
        ],
        "settings": {
            "spark-defaults-conf.spark.driver.memory": "2g",
            "spark-defaults-conf.spark.driver.cores": "1",
            "spark-defaults-conf.spark.executor.instances": "3",
            "spark-defaults-conf.spark.executor.memory": "1536m",
            "spark-defaults-conf.spark.executor.cores": "1",
            "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
            "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
            "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
            "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
            "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
        }
    }
    ...
}

Para personalizar los archivos de configuración de implementación de clústeres, puede usar cualquier editor de formato JSON, como VSCode.To customize your cluster deployment configuration files, you can use any JSON format editor, such as VSCode. Para crear scripts de estas ediciones para automatizarlas, use el comando azdata bdc config.For scripting these edits for automation purposes, use the azdata bdc config command. En este artículo se explica cómo configurar las implementaciones de clústeres de macrodatos mediante la modificación de los archivos de configuración de implementación.This article explains how to configure big data cluster deployments by modifying deployment configuration files. Se proporcionan ejemplos sobre cómo cambiar la configuración de distintos escenarios.It provides examples for how to change the configuration for different scenarios. Para obtener más información sobre cómo se usan los archivos de configuración en las implementaciones, vea la guía de implementación.For more information about how configuration files are used in deployments, see the deployment guidance.

PrerrequisitosPrerequisites

  • Instalación de azdata.Install azdata.

  • En cada uno de los ejemplos de esta sección se supone que ha creado una copia de una de las configuraciones estándar.Each of the examples in this section assume that you have created a copy of one of the standard configurations. Para obtener más información, vea Creación de una configuración personalizada.For more information, see Create a custom configuration. Por ejemplo, el siguiente comando crea un directorio denominado custom-bdc que contiene dos archivos de configuración de implementación JSON, bdc.json y control.json, según la configuración predeterminada de aks-dev-test:For example, the following command creates a directory called custom-bdc that contains two JSON deployment configuration files, bdc.json and control.json, based on the default aks-dev-test configuration:

    azdata bdc config init --source aks-dev-test --target custom-bdc
    

Cambio de la etiqueta predeterminada de registro, repositorio e imágenes de DockerChange default Docker registry, repository, and images tag

Los archivos de configuración integrados (en concreto, control.json) incluyen una sección docker donde la etiqueta de registro de contenedor, repositorio e imágenes se rellena previamente.The built-in configuration files, specifically control.json includes a docker section where container registry, repository, and images tag are pre-populated. Las imágenes necesarias para clústeres de macrodatos se encuentran de forma predeterminada en Microsoft Container Registry (mcr.microsoft.com) en el repositorio mssql/bdc:By default, images required for big data clusters are in the Microsoft Container Registry (mcr.microsoft.com), in the mssql/bdc repository:

{
    "apiVersion": "v1",
    "metadata": {
        "kind": "Cluster",
        "name": "mssql-cluster"
    },
    "spec": {
        "docker": {
            "registry": "mcr.microsoft.com",
            "repository": "mssql/bdc",
            "imageTag": "2019-GDR1-ubuntu-16.04",
            "imagePullPolicy": "Always"
        },
        ...
    }
}

Antes de la implementación, puede personalizar la configuración de docker, ya sea editando directamente el archivo de configuración control.json o usando comandos azdata bdc config.Before deployment, you can customize the docker settings by either directly editing the control.json configuration file or using azdata bdc config commands. Por ejemplo, los siguientes comandos actualizan el archivo de configuración control.json de un elemento custom-bdc con unas etiquetas <registry>, <repository> e <image_tag> distintas:For example, following commands are updating a custom-bdc control.json configuration file with a different <registry>, <repository> and <image_tag>:

azdata bdc config replace -c custom-bdc/control.json -j "$.spec.docker.registry=<registry>"
azdata bdc config replace -c custom-bdc/control.json -j "$.spec.docker.repository=<repository>"
azdata bdc config replace -c custom-bdc/control.json -j "$.spec.docker.imageTag=<image_tag>"

Sugerencia

Como procedimiento recomendado, debe usar una etiqueta de imagen específica de la versión y no usar la etiqueta de imagen latest, ya que esto podría provocar problemas de estado del clúster.As a best practice, you must use a version specific image tag and avoid using latest image tag, as this can result in version mismatch that will cause cluster health issues.

Sugerencia

La implementación de clústeres de macrodatos debe tener acceso a un registro de contenedor y a un repositorio desde el que extraer imágenes de contenedor.Big data clusters deployment must have access to the container registry and repository from which to pull container images. Si el entorno carece de acceso a la instancia de Microsoft Container Registry predeterminada, puede llevar a cabo una instalación sin conexión en la que las imágenes necesarias se coloquen en primer lugar en un repositorio de Docker privado.If your environment does not have access to the default Microsoft Container Registry, you can perform an offline installation where the required images are first placed into a private Docker repository. Para más información sobre las instalaciones sin conexión, vea Realización de una implementación sin conexión de un clúster de macrodatos de SQL Server.For more information about offline installations, see Perform an offline deployment of a SQL Server big data cluster. Cabe decir que, antes de emitir la implementación, hay que establecer las variables de entorno DOCKER_USERNAME y DOCKER_PASSWORD ya que así se asegurará de que el flujo de trabajo de implementación tiene acceso al repositorio privado del que extraer las imágenes.Note that you must set the DOCKER_USERNAME and DOCKER_PASSWORD environment variables before issuing the deployment to ensure the deployment workflow has acces to your private repository to pull the images from.

Cambio del nombre del clústerChange cluster name

El nombre del clúster es tanto el nombre del clúster de macrodatos como el espacio de nombres de Kubernetes que se van a crear al implementar.The cluster name is both the name of the big data cluster and the Kubernetes namespace that will be created on deployment. Se especifica en la siguiente parte del archivo de configuración de implementación bdc.json:It is specified in the following portion of the bdc.json deployment configuration file:

"metadata": {
    "kind": "BigDataCluster",
    "name": "mssql-cluster"
},

El siguiente comando envía un par clave-valor al parámetro --json-values para cambiar el nombre del clúster de macrodatos a test-cluster:The following command sends a key-value pair to the --json-values parameter to change the big data cluster name to test-cluster:

azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "metadata.name=test-cluster"

Importante

El nombre del clúster de macrodatos debe estar formado solo por caracteres alfanuméricos en minúsculas sin espacios.The name of your big data cluster must be only lower case alpha-numeric characters, no spaces. Todos los artefactos de Kubernetes (contenedores, pods, conjuntos con estado, servicios) para el clúster se crean en un espacio de nombres con el mismo nombre que el nombre de clúster especificado.All Kubernetes artifacts (containers, pods, statefull sets, services) for the cluster will be created in a namespace with same name as the cluster name specified.

Actualización de los puertos de puntos de conexiónUpdate endpoint ports

Se definen puntos de conexión para el controlador de control.json y para la puerta de enlace y la instancia maestra de SQL Server en las correspondientes secciones de bdc.json.Endpoints are defined for the controller in the control.json and for gateway and SQL Server master instance in the corresponding sections in bdc.json. La siguiente parte del archivo de configuración control.json muestra las definiciones de puntos de conexión del controlador:The following portion of the control.json configuration file shows the endpoint definitions for the controller:

{
  "endpoints": [
    {
      "name": "Controller",
      "serviceType": "LoadBalancer",
      "port": 30080
    },
    {
      "name": "ServiceProxy",
      "serviceType": "LoadBalancer",
      "port": 30777
    }
  ]
}

En el siguiente ejemplo se usa JSON en línea para cambiar el puerto del punto de conexión de controller:The following example uses inline JSON to change the port for the controller endpoint:

azdata bdc config replace --config-file custom-bdc/control.json --json-values "$.spec.endpoints[?(@.name==""Controller"")].port=30000"

Configuración de la escalaConfigure scale

Las configuraciones de cada recurso (como, por ejemplo, el grupo de almacenamiento) se definen en el archivo de configuración bdc.json.The configurations of each resource, such as the storage pool, is defined in the bdc.json configuration file. Por ejemplo, la siguiente parte de bdc.json muestra una definición de recursos de storage-0:For example, the following portion of the bdc.json shows a storage-0 resource definition:

"storage-0": {
    "metadata": {
        "kind": "Pool",
        "name": "default"
    },
    "spec": {
        "type": "Storage",
        "replicas": 2,
        "settings": {
            "spark": {
                "spark-defaults-conf.spark.driver.memory": "2g",
                "spark-defaults-conf.spark.driver.cores": "1",
                "spark-defaults-conf.spark.executor.instances": "3",
                "spark-defaults-conf.spark.executor.memory": "1536m",
                "spark-defaults-conf.spark.executor.cores": "1",
                "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
                "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
                "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
                "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
                "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
            }
        }
    }
}

Para configurar el número de instancias de un grupo de almacenamiento, un grupo de proceso y un grupo de datos, hay que modificar el valor de replicas de cada grupo.You can configure the number of instances in a storage, compute and/or data pool by modifying the replicas value for each pool. En el siguiente ejemplo se usa JSON en línea para cambiar estos valores del grupo de almacenamiento, del grupo de proceso y del grupo de datos por 10, 4 y 4 respectivamente:The following example uses inline JSON to change these values for the storage, compute and data pools to 10, 4 and 4 respectively:

azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.storage-0.spec.replicas=10"
azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.compute-0.spec.replicas=4"
azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.data-0.spec.replicas=4"

Nota

El número máximo de instancias validadas para los grupos de proceso y de datos es de 8 cada una.The maximum number of instances validated for compute and data pools is 8 each. No existe límite que haya que cumplir en el momento de la implementación, pero se desaconseja configurar una escala mayor en las implementaciones de producción.There is no enforcement of this limit at deployment time, but we do not recommend configuring a higher scale in production deployments.

Configuración del almacenamientoConfigure storage

También puede cambiar la clase de almacenamiento y las características que se usan para cada grupo.You can also change the storage class and characteristics that are used for each pool. En el ejemplo siguiente se asigna una clase de almacenamiento personalizada al grupo de almacenamiento y al grupo de datos, y se actualiza el tamaño de la notificación de volumen persistente para almacenar datos de hasta 500 GB para HDFS (grupo de almacenamiento) y de hasta 100 GB para el grupo maestro y de datos.The following example assigns a custom storage class to the storage and data pools and updates the size of the persistent volume claim for storing data to 500 Gb for HDFS (storage pool) and 100 Gb for master and data pool.

Sugerencia

Para obtener más información sobre la configuración de almacenamiento, vea Persistencia de datos con clústeres de macrodatos de SQL Server en Kubernetes.For more information about storage configuration, see Data persistence with SQL Server big data cluster on Kubernetes.

En primer lugar, cree un archivo patch.json como se muestra a continuación para ajustar la configuración de almacenamiento.First create a patch.json file as below that adjust the storage settings

{
        "patch": [
                {
                        "op": "add",
                        "path": "spec.resources.storage-0.spec.storage",
                        "value": {
                                "data": {
                                        "size": "500Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                },
                                "logs": {
                                        "size": "30Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                }
                        }
                },
        {
                        "op": "add",
                        "path": "spec.resources.master.spec.storage",
                        "value": {
                                "data": {
                                        "size": "100Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                },
                                "logs": {
                                        "size": "30Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                }
                        }
                },
                {
                        "op": "add",
                        "path": "spec.resources.data-0.spec.storage",
                        "value": {
                                "data": {
                                        "size": "100Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                },
                                "logs": {
                                        "size": "30Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                }
                        }
                }
        ]
}

Después, puede usar el comando azdata bdc config patch para actualizar el archivo de configuración bdc.json.You can then use the azdata bdc config patch command to update the bdc.json configuration file.

azdata bdc config patch --config-file custom-bdc/bdc.json --patch ./patch.json

Nota

Un archivo de configuración basado en kubeadm-dev-test no tiene una definición de almacenamiento para cada grupo, pero puede usar el proceso anterior para agregarla si fuese necesario.A configuration file based on kubeadm-dev-test does not have a storage definition for each pool, but you can use above process to added if needed.

Configuración del bloque de almacenamiento sin SparkConfigure storage pool without spark

También puede configurar los bloques de almacenamiento para que se ejecuten sin Spark y crear un grupo de Spark independiente.You can also configure the storage pools to run without spark and create a separate spark pool. Esta configuración permite escalar la potencia de proceso de Spark independientemente del almacenamiento.This configuration enables you to scale spark compute power independent of storage. Para saber cómo se configura el grupo de Spark, vea la sección Creación de un grupo de Spark de este artículo.To see how to configure the spark pool, see the Create a spark pool section in this article.

Nota

No se puede implementar un clúster de macrodatos sin Spark,Deploying a big data cluster without Spark is not supported. por lo que hay que establecer includeSpark en true, o bien crear un grupo de Spark aparte con al menos una instancia.So you must either have includeSpark set to true or you must create a separate spark pool with at least one instance. También puede tener Spark en ejecución en el grupo de almacenamiento (includeSpark es true) y tener un grupo de Spark aparte.You can also have Spark running both in storage pool (includeSpark is true) and have a separate Spark pool.

El valor includeSpark del recurso del grupo de almacenamiento está establecido de forma predeterminada en true, por lo que debe editar el campo includeSpark con la configuración de almacenamiento para poder realizar cambios.By default, the includeSpark setting for the storage pool resource is set to true, so you must edit the includeSpark field into the storage configuration in order to make changes. El siguiente comando muestra cómo editar este valor mediante JSON en línea.The following command shows how to edit this value using inline json.

azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.storage-0.spec.settings.spark.includeSpark=false"

Creación de un grupo de SparkCreate a spark pool

Puede crear un grupo de Spark como complemento de o en lugar de las instancias de Spark que se ejecutan en el grupo de almacenamiento.You can create a Spark pool in addition, or instead of Spark instances running in the storage pool. En el siguiente ejemplo se muestra cómo crear un grupo de Spark con dos instancias revisando el archivo de configuración bdc.json.Following example shows how to create a spark pool with two instances by patching the bdc.json configuration file.

En primer lugar, cree un archivo spark-pool-patch.json del siguiente modo:First, create a spark-pool-patch.json file as below:

{
    "patch": [
        {
            "op": "add",
            "path": "spec.resources.spark-0",
            "value": {
                "metadata": {
                    "kind": "Pool",
                    "name": "default"
                },
                "spec": {
                    "type": "Spark",
                    "replicas": 2
                }
            }
        },
        {
            "op": "add",
            "path": "spec.services.spark.resources/-",
            "value": "spark-0"
        },
        {
            "op": "add",
            "path": "spec.services.hdfs.resources/-",
            "value": "spark-0"
        }
    ]
}

Luego, ejecute el comando azdata bdc config patch:Then run the azdata bdc config patch command:

azdata bdc config patch -c custom-bdc/bdc.json -p spark-pool-patch.json

Configuración de la ubicación de pods mediante etiquetas de KubernetesConfigure pod placement using Kubernetes labels

Puede controlar la ubicación de pods en nodos de Kubernetes con recursos específicos para acomodar varios tipos de requisitos de carga de trabajo.You can control pod placement on Kubernetes nodes that have specific resources to accommodate various types of workload requirements. Con las etiquetas de Kubernetes, puede personalizar qué nodos del clúster de Kubernetes se van a usar para implementar los recursos del clúster de macrodatos, pero también restringir los nodos que se usan en recursos concretos.Using Kubernetes labels, you can customize which are the nodes in your Kubernetes cluster will be used for deploying big data cluster resources, but also restrict which nodes are used for specific resources. Por ejemplo, puede que quiera asegurarse de que los pods del recurso de grupo de almacenamiento se colocan en nodos con más almacenamiento, mientras que las instancias maestras de SQL Server se colocan en nodos con más recursos de CPU y memoria.For example, you might want to ensure the storage pool resource pods are placed on nodes with more storage, while SQL Server master instances are placed on nodes that have higher CPU and memory resources. En este caso, primero crea un clúster de Kubernetes heterogéneo con distintos tipos de hardware y luego asigna etiquetas de nodo en consecuencia.In this case, you will first build a heterogeneous Kubernetes cluster with different types of hardware and then assign node labels accordingly. En el momento de implementar el clúster de macrodatos, puede especificar las mismas etiquetas en el nivel de clúster para indicar qué nodos se usan en el clúster de macrodatos, usando para ello el atributo clusterLabel en el archivo control.json.At the time of deploying big data cluster, you can specify same labels at cluster level to indicate which nodes are used for big data cluster using the clusterLabel attribute in the control.json file. Después, se usarán etiquetas diferentes para la colocación del nivel de grupo.Then, different labels will be used for pool level placement. Estas etiquetas se pueden especificar en los archivos de configuración de implementación del clúster de macrodatos con el atributo nodeLabel.These labels can be specified in the big data cluster deployment configuration files using nodeLabel attribute. Kubernetes asigna los pods en los nodos que coincidan con las etiquetas especificadas.Kubernetes assigns the pods on nodes that match the specified labels. Las claves de etiqueta específicas que se deben agregar a los nodos del clúster de Kubernetes son mssql-cluster (para indicar qué nodos se usan con el clúster de macrodatos) y mssql-resource (para indicar los nodos específicos en los que se van a colocar los pods de varios recursos).The specific label keys that needs to be added to the nodes in the kubernetes cluster are mssql-cluster (for indicating which nodes are used for big data cluster) and mssql-resource (to indicate which specific nodes the pods are placed on for various resources). Los valores de estas etiquetas pueden ser cualquier cadena que elija.The values of these labels can be any string that you choose.

Nota

Debido a la naturaleza de los pods, que recopilan métricas de nivel de nodo, se implementan pods metricsdc en todos los nodos con la etiqueta mssql-cluster, y el elemento mssql-resource no se aplicará a estos pods.Due to the nature of the pods that do node level metrics collection, metricsdc pods are deployed on all nodes with the mssql-cluster label, and the mssql-resource will not apply to these pods.

En el siguiente ejemplo se muestra cómo editar un archivo de configuración personalizado para incluir una etiqueta de nodo bdc para todo el clúster de macrodatos, una etiqueta bdc-master para colocar pods de la instancia maestra de SQL Server en un nodo específico, bdc-storage-pool para los recursos de grupo de almacenamiento, bdc-compute-pool para los pods de los grupos de proceso y de datos y bdc-shared para el resto de los recursos.The following example shows how to edit a custom configuration file to include a node label bdc for the entire big data cluster, a label bdc-master for placing SQL Server master instance pods on a specific node, bdc-storage-pool for storage pool resources, bdc-compute-pool for compute pool and data pool pods, and bdc-shared for rest of the resources.

Primero, etiquete los nodos de Kubernetes:First label the Kubernetes nodes:

kubectl label node <kubernetesNodeName1> mssql-cluster=bdc mssql-resource=bdc-shared --overwrite=true
kubectl label node <kubernetesNodeName2> mssql-cluster=bdc mssql-resource=bdc-master --overwrite=true
kubectl label node <kubernetesNodeName3> mssql-cluster=bdc mssql-resource=bdc-compute-pool --overwrite=true
kubectl label node <kubernetesNodeName4> mssql-cluster=bdc mssql-resource=bdc-compute-pool --overwrite=true
kubectl label node <kubernetesNodeName5> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true
kubectl label node <kubernetesNodeName6> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true
kubectl label node <kubernetesNodeName7> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true
kubectl label node <kubernetesNodeName8> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true

Luego, actualice los archivos de configuración de la implementación de clúster para incluir los valores de etiqueta.Then update the cluster deployment configuration files to include the label values. En este ejemplo se da por hecho que está personalizando archivos de configuración en un perfil de custom-bdc.This example assumes that you are customizing configuration files in a custom-bdc profile. En las configuraciones integradas no existen claves nodeLabel y clusterLabel de forma predeterminada, por lo que tendrá que editar manualmente un archivo de configuración personalizado o usar los comandos azdata bdc config add para realizar las modificaciones necesarias.By default, there are no nodeLabel and clusterLabel keys in the built-in configurations so you will need to either edit a custom configuration file manually or use the azdata bdc config add commands to make the necessary edits.

azdata bdc config add -c custom-bdc/control.json -j "$.spec.clusterLabel=bdc"
azdata bdc config add -c custom-bdc/control.json -j "$.spec.nodeLabel=bdc-shared"

azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.master.spec.nodeLabel=bdc-master"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.compute-0.spec.nodeLabel=bdc-compute-pool"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.data-0.spec.nodeLabel=bdc-compute-pool"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.storage-0.spec.nodeLabel=bdc-storage-pool"

# below can be omitted in which case we will take the node label default from the control.json
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.nmnode-0.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.sparkhead.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.zookeeper.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.gateway.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.appproxy.spec.nodeLabel=bdc-shared"

Nota

El procedimiento recomendado es evitar que se conceda al nodo principal de Kubernetes cualquiera de los roles de BDC anteriores.Best practice avoids giving the Kubernetes master any of the above BDC roles. Si tiene previsto asignar estos roles al nodo principal de Kubernetes, tendrá que quitar el valor taint master:NoSchedule.If you plan on assigning these roles to the Kubernetes master node anyway, you'll need to remove its master:NoSchedule taint. Tenga en cuenta que esto podría sobrecargar el nodo principal e inhibir su capacidad de realizar sus tareas de administración de Kubernetes en clústeres más grandes.Be aware that this could overload the master node and inhibit its ability to perform its Kubernetes management duties on larger clusters. Es normal ver algunos pods programados para el principal en cualquier implementación: ya toleran el valor taint master:NoSchedule y se usan principalmente para facilitar la administración del clúster.It's normal to see some pods scheduled to the master on any deployment: they already tolerate the master:NoSchedule taint, and they're mostly used to help manage the cluster.

Otras personalizaciones mediante archivos de revisión JSONOther customizations using JSON patch files

Los archivos de revisión JSON configuran varias opciones a la vez.JSON patch files configure multiple settings at once. Para obtener más información sobre las revisiones de JSON, vea Revisiones de JSON en Python y JSONPath Online Evaluator.For more information about JSON patches, see JSON Patches in Python and the JSONPath Online Evaluator.

Los siguientes archivos patch.json realizan los siguientes cambios:The following patch.json files perform the following changes:

  • Actualización del puerto del punto de conexión único de control.json.Update the port of single endpoint in control.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "$.spec.endpoints[?(@.name=='Controller')].port",
      "value": 30000
    }
  ]
}
  • Actualización de todos los puntos de conexión (port y serviceType) en control.json.Update all endpoints (port and serviceType) in control.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.endpoints",
      "value": [
        {
          "serviceType": "LoadBalancer",
          "port": 30001,
          "name": "Controller"
        },
        {
          "serviceType": "LoadBalancer",
          "port": 30778,
          "name": "ServiceProxy"
        }
      ]
    }
  ]
}
  • Actualización de la configuración de almacenamiento del controlador de control.json.Update the controller storage settings in control.json. Esta configuración se aplica a todos los componentes del clúster, a menos que se invalide en el nivel de grupo.These settings are applicable to all cluster components, unless overridden at pool level.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.storage",
      "value": {
        "data": {
          "className": "managed-premium",
          "accessMode": "ReadWriteOnce",
          "size": "100Gi"
        },
        "logs": {
          "className": "managed-premium",
          "accessMode": "ReadWriteOnce",
          "size": "32Gi"
        }
      }
    }
  ]
}
  • Actualización del nombre de la clase de almacenamiento en control.json.Update the storage class name in control.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.storage.data.className",
      "value": "managed-premium"
    }
  ]
}
  • Actualización de la configuración de almacenamiento de grupo del grupo de almacenamiento en bdc.json.Update pool storage settings for storage pool in bdc.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.resources.storage-0.spec",
      "value": {
        "type": "Storage",
        "replicas": 2,
        "storage": {
          "data": {
            "size": "100Gi",
            "className": "myStorageClass",
            "accessMode": "ReadWriteOnce"
          },
          "logs": {
            "size": "32Gi",
            "className": "myStorageClass",
            "accessMode": "ReadWriteOnce"
          }
        }
      }
    }
  ]
}
  • Actualización de la configuración de Spark del grupo de almacenamiento en bdc.json.Update Spark settings for storage pool in bdc.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.services.spark.settings",
      "value": {
            "spark-defaults-conf.spark.driver.memory": "2g",
            "spark-defaults-conf.spark.driver.cores": "1",
            "spark-defaults-conf.spark.executor.instances": "3",
            "spark-defaults-conf.spark.executor.memory": "1536m",
            "spark-defaults-conf.spark.executor.cores": "1",
            "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
            "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
            "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
            "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
            "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
      }
    }
  ]
}

Sugerencia

Para obtener más información sobre la estructura y las opciones para cambiar un archivo de configuración de implementación, vea Referencia del archivo de configuración de implementación para los clústeres de datos de gran tamaño.For more information about the structure and options for changing a deployment configuration file, see Deployment configuration file reference for big data clusters.

Use comandos azdata bdc config para aplicar los cambios al archivo de revisión JSON.Use azdata bdc config commands to apply the changes in the JSON patch file. En el siguiente ejemplo, el archivo patch.json se aplica a un archivo de configuración de implementación de destino custom-bdc/bdc.json.The following example applies the patch.json file to a target deployment configuration file custom-bdc/bdc.json.

azdata bdc config patch --config-file custom-bdc/bdc.json --patch-file ./patch.json

Desactivación de la ejecución de Elasticsearch en modo privilegiadoDisable ElasticSearch to run in privileged mode

El contenedor de Elasticsearch se ejecuta de forma predeterminada en modo privilegiado en el clúster de macrodatos.By default, ElasticSearch container runs in privilege mode in big data cluster. Esta configuración garantiza que, en el momento de la inicialización del contenedor, este va a tener permisos suficientes para actualizar un valor en el host necesario cuando Elasticsearch procese una mayor cantidad de registros.This setting ensures that at container initialization time, the container has enough permissions to update a setting on the host required when ElasticSearch processes higher amount of logs. Encontrará más información sobre este tema en este artículo.You can find more information about this topic in this article.

Para deshabilitar la ejecución del contenedor de Elasticsearch en modo privilegiado, debe actualizar la sección settings en control.json y especificar un valor en vm.max_map_count de -1.For disabling the container that runs ElasticSearch to run in privileged mode, you must updated the settings section in the control.json and specify the value of vm.max_map_count to -1. Este es un ejemplo de cómo sería esta sección:Here is a sample of how this section would look like:

{
    "apiVersion": "v1",
    "metadata": {...},
    "spec": {
        "docker": {...},
        "storage": {...},
        "endpoints": [...],
        "settings": {
            "ElasticSearch": {
                "vm.max_map_count": "-1"
            }
        }
    }
}

control.json se puede editar manualmente y agregar la sección anterior a spec, o también puede crear un archivo de revisión elasticsearch-patch.json como el que se indica a continuación y usar CLI de datos de Azure (azdata)Azure Data CLI (azdata) para aplicar dicha revisión al archivo control.json:You can manually edit the control.json and add the above section to the spec, or you can create a patch file elasticsearch-patch.json like below and use CLI de datos de Azure (azdata)Azure Data CLI (azdata) to patch the control.json file:

{
  "patch": [
    {
      "op": "add",
      "path": "spec.settings",
      "value": {
            "ElasticSearch": {
                "vm.max_map_count": "-1"
        }
      }
    }
  ]
}

Ejecute este comando para aplicar la revisión al archivo de configuración:Run this command to patch the configuration file:

azdata bdc config patch --config-file custom-bdc/control.json --patch-file elasticsearch-patch.json

Importante

Como procedimiento recomendado, se aconseja actualizar manualmente el valor de max_map_count en cada host del clúster de Kubernetes según se indica en las instrucciones de este artículo.We recommend as a best practice to manually update the max_map_count setting manually on each host in the Kubernetes cluster as per instructions in this article.

Activación y desactivación de la recopilación de métricas de pods y nodosTurn pods and nodes metrics collection on/off

En SQL Server 2019 CU5 se han habilitado dos modificadores de características para controlar la recopilación de métricas de pods y nodos.SQL Server 2019 CU5 enabled two feature switches to control the collection of pods and nodes metrics. Si usa soluciones distintas para la supervisión de la infraestructura de Kubernetes, y quiere desactivar la recopilación de métricas integradas para pods y nodos de host, establezca allowNodeMetricsCollection y allowPodMetricsCollection en false en el archivo de configuración de implementación de control.json.In case you are using different solutions for monitoring your Kubernetes infrastructure, you can turn off the built-in metrics collection for pods and host nodes by setting allowNodeMetricsCollection and allowPodMetricsCollection to false in control.json deployment configuration file. En el caso de entornos OpenShift, esta configuración se establece en false de forma predeterminada en los perfiles de implementación integrados, ya que la recopilación de métricas de pods y nodos requiere capacidades con privilegios.For OpenShift environments, these settings are set to false by default in the built-in deployment profiles, since collecting pod and node metrics requires privileged capabilities. Ejecute este comando para actualizar los valores de esta configuración en el archivo de configuración personalizado mediante la CLI de azdata:Run this command to update the values of these settings in your custom configuration file using azdata CLI:

 azdata bdc config replace -c custom-bdc/control.json -j "$.security.allowNodeMetricsCollection=false"
 azdata bdc config replace -c custom-bdc/control.json -j "$.security.allowPodMetricsCollection=false"

Pasos siguientesNext steps

Para más información sobre cómo usar archivos de configuración en implementaciones de clústeres de macrodatos, vea Cómo implementar Clústeres de macrodatos de SQL ServerSQL Server Big Data Clusters en Kubernetes.For more information about using configuration files in big data cluster deployments, see How to deploy Clústeres de macrodatos de SQL ServerSQL Server Big Data Clusters on Kubernetes.