Partilhar via


Configurar o Apache Spark e o Apache Hadoop em clusters de Big Data

Important

Os Clusters de Big Data do Microsoft SQL Server 2019 foram desativados. O suporte para clusters de Big Data do SQL Server 2019 terminou em 28 de fevereiro de 2025. Para obter mais informações, consulte a postagem no blog de anúncios e as opções de Big Data na plataforma microsoft SQL Server.

Para configurar o Apache Spark e o Apache Hadoop em clusters de Big Data, você precisa modificar o perfil do cluster no momento da implantação.

Um Cluster de Big Data tem quatro categorias de configuração:

  • sql
  • hdfs
  • spark
  • gateway

sql, hdfs, spark, sql são serviços. Cada serviço é associado à categoria de configuração com o mesmo nome. Todas as configurações de gateway vão para a categoria gateway.

Por exemplo, todas as configurações no serviço hdfs pertencem à categoria hdfs. Observe que todas as configurações hadoop (site principal), HDFS e Zookeeper pertencem à categoria hdfs; todas as configurações livy, Spark, Yarn, Hive, Metastore pertencem à categoria spark.

As configurações com suporte listam as propriedades do Apache Spark &Hadoop que você pode configurar ao implantar um Cluster de Big Data do SQL Server.

As seguintes seções listam as propriedades que você não pode modificar em um cluster:

Configurações por meio do perfil do cluster

No perfil do cluster, há recursos e serviços. No momento da implantação, podemos especificar configurações de duas maneiras:

  • Primeiro, no nível do recurso:

    Os exemplos a seguir são os arquivos de patch para o perfil:

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

    Or:

    { 
           "op": "add", 
           "path": "spec.resources.gateway.spec.settings", 
           "value": { 
             "gateway": { 
               "gateway-site.gateway.httpclient.socketTimeout": "95s" 
             } 
           } 
    } 
    
  • Em segundo lugar, no nível do serviço. Atribua vários recursos a um serviço e especifique as configurações para o serviço.

Veja a seguir um exemplo do arquivo de patch para o perfil para definir o tamanho do bloco do HDFS:

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

O serviço hdfs é definido como:

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

Note

As configurações de nível de recurso substituem as configurações de nível de serviço. Um recurso pode ser atribuído a vários serviços.

Habilitar o Spark no pool de armazenamento

Além das configurações do Apache com suporte, também oferecemos a capacidade de configurar se os trabalhos do Spark podem ou não ser executados no pool de armazenamento. O valor booleano includeSpark está no arquivo de configuração bdc.json em spec.resources.storage-0.spec.settings.spark.

Uma definição de pool de armazenamento de exemplo em bdc.json pode ter esta aparência:

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

Limitations

As configurações só podem ser especificadas no nível da categoria. Para especificar várias configurações com a mesma subcategoria, não é possível extrair o prefixo comum no perfil do cluster.

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

Next steps