Configuración de Apache Spark y Apache Hadoop en clústeres de macrodatos

Importante

El complemento Clústeres de macrodatos de Microsoft SQL Server 2019 se va a retirar. La compatibilidad con Clústeres de macrodatos de SQL Server 2019 finalizará el 28 de febrero de 2025. Todos los usuarios existentes de SQL Server 2019 con Software Assurance serán totalmente compatibles con la plataforma, y el software se seguirá conservando a través de actualizaciones acumulativas de SQL Server hasta ese momento. Para más información, consulte la entrada de blog sobre el anuncio y Opciones de macrodatos en la plataforma Microsoft SQL Server.

Para configurar Apache Spark y Apache Hadoop en clústeres de macrodatos, debe modificar el perfil de clúster en el momento de la implementación.

Un Clúster de macrodatos tiene cuatro categorías de configuración:

  • sql
  • hdfs
  • spark
  • gateway

sql, hdfs, spark y sql son servicios. Cada servicio se asigna a la misma categoría de configuración con nombre. Todas las configuraciones de puerta de enlace se corresponden a la categoría gateway.

Por ejemplo, todas las configuraciones del servicio hdfs pertenecen a la categoría hdfs. Tenga en cuenta que todas las configuraciones de Hadoop (sitio principal), HDFS y Zookeeper pertenecen a la categoría hdfs; todas las configuraciones de Livy, Spark, Yarn, Hive y Metastore de Hive pertenecen a la categoría spark.

Configuraciones admitidas muestra propiedades de Apache Spark y Hadoop que se pueden configurar al implementar un clúster de macrodatos de SQL Server.

En las siguientes secciones se enumeran las propiedades que no puede modificar en un clúster:

Configuraciones mediante el perfil de clúster

En el perfil de clúster hay recursos y servicios. En tiempo de implementación, se pueden especificar configuraciones de una de estas dos maneras:

  • En primer lugar, en el nivel de recurso:

    Los ejemplos siguientes son los archivos de revisión para el perfil:

    { 
           "op": "add", 
           "path": "spec.resources.zookeeper.spec.settings", 
           "value": { 
             "hdfs": { 
               "zoo-cfg.syncLimit": "6" 
             } 
           } 
    }
    

    O:

    { 
           "op": "add", 
           "path": "spec.resources.gateway.spec.settings", 
           "value": { 
             "gateway": { 
               "gateway-site.gateway.httpclient.socketTimeout": "95s" 
             } 
           } 
    } 
    
  • En segundo lugar, en el nivel de servicio. Asigne varios recursos a un servicio y especifique configuraciones para el servicio.

El siguiente es un ejemplo del archivo de revisión para el perfil para establecer el tamaño de bloque de HDFS:

{ 
      "op": "add", 
      "path": "spec.services.hdfs.settings", 
      "value": { 
        "hdfs-site.dfs.block.size": "268435456" 
     } 
} 

El servicio hdfs se define como:

{ 
  "spec": { 
   "services": { 
     "hdfs": { 
        "resources": [ 
          "nmnode-0", 
          "zookeeper", 
          "storage-0", 
          "sparkhead" 
        ], 
        "settings":{ 
          "hdfs-site.dfs.block.size": "268435456" 
        } 
      } 
    } 
  } 
} 

Nota:

Las configuraciones de nivel de recurso invalidan las de nivel de servicio. Un recurso se puede asignar a varios servicios.

Habilitación de Spark en el bloque de almacenamiento

Además de las configuraciones de Apache admitidas, también se ofrece la posibilidad de configurar si los trabajos de Spark se pueden ejecutar o no en el grupo de almacenamiento. Este valor booleano, includeSpark, se encuentra en el archivo de configuración bdc.json, en spec.resources.storage-0.spec.settings.spark.

Una definición de grupo de almacenamiento de ejemplo en bdc.json puede tener el siguiente aspecto:

...
"storage-0": {
                "metadata": {
                    "kind": "Pool",
                    "name": "default"
                },
                "spec": {
                    "type": "Storage",
                    "replicas": 2,
                    "settings": {
                        "spark": {
                            "includeSpark": "true"
                        }
                    }
                }
            }

Limitaciones

Las configuraciones solo se pueden especificar en el nivel de categoría. Para especificar varias configuraciones con la misma subcategoría, no se puede extraer el prefijo común en el perfil de clúster.

{ 
      "op": "add", 
      "path": "spec.services.hdfs.settings.core-site.hadoop", 
      "value": { 
        "proxyuser.xyz.users": "*", 
        "proxyuser.abc.users": "*" 
     } 
} 

Pasos siguientes