Usar curl para carregar dados no HDFS no Clusters de Big Data do SQL Server

Aplica-se a: SQL Server 2019 (15.x)

Este artigo explica como usar curl para carregar dados no HDFS no Clusters de Big Data do SQL Server 2019.

Importante

O complemento Clusters de Big Data do Microsoft SQL Server 2019 será desativado. O suporte para Clusters de Big Data do SQL Server 2019 será encerrado em 28 de fevereiro de 2025. Todos os usuários existentes do SQL Server 2019 com Software Assurance terão suporte total na plataforma e o software continuará a ser mantido por meio de atualizações cumulativas do SQL Server até esse momento. Para obter mais informações, confira a postagem no blog de anúncio e as opções de Big Data na plataforma do Microsoft SQL Server.

Pré-requisitos

Obter o IP externo do serviço

WebHDFS é iniciado quando a implantação é concluída e seu acesso passa pelo Knox. O ponto de extremidade do Knox é exposto por meio de um serviço do Kubernetes chamado gateway-svc-external. Para criar a URL de WebHDFS necessária para fazer upload/baixar arquivos, você precisa do endereço IP externo do serviço gateway-svc-external e do nome do cluster de Big Data. Você pode obter o endereço IP externo do serviço gateway-svc-external executando o seguinte comando:

kubectl get service gateway-svc-external -n <big data cluster name> -o json | jq -r .status.loadBalancer.ingress[0].ip

Observação

O <big data cluster name> aqui está o nome do cluster que você especificou no arquivo de configuração de implantação. O nome padrão é mssql-cluster.

Construir a URL para acessar o WebHDFS

Agora, você pode construir a URL para acessar o WebHDFS da seguinte maneira:

https://<gateway-svc-external service external IP address>:30443/gateway/default/webhdfs/v1/

Por exemplo:

https://13.66.190.205:30443/gateway/default/webhdfs/v1/

Autenticação com o Active Directory

Para implantações com o Active Directory, use o parâmetro de autenticação com curl com a autenticação Negociate.

Para usar curl com a autenticação do Active Directory, execute este comando:

kinit <username>

O comando gera um token Kerberos para uso do curl. Os comandos demonstrados nas próximas seções especificam o parâmetro --anyauth para curl. Para as URLs que exigem a autenticação Negociate, o curl detecta e usa automaticamente o token Kerberos gerado em vez do nome de usuário e da senha para autenticação nas URLs.

Listar um arquivo

Para listar o arquivo em hdfs:///product_review_data, use o seguinte comando curl:

curl -i -k --anyauth -u root:<AZDATA_PASSWORD> -X GET 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/?op=liststatus'

A partir do SQL Server 2019 (15.x) CU 5, quando você implanta um novo cluster com a autenticação básica, todos os pontos de extremidade, incluindo o gateway, usam AZDATA_USERNAME e AZDATA_PASSWORD. Os pontos de extremidade em clusters que são atualizados para CU 5 continuam usando root como o nome de usuário para se conectar ao ponto de extremidade do gateway. Essa alteração não se aplica às implantações que usam a autenticação do Active Directory. Confira Credenciais para acessar serviços por meio do ponto de extremidade do gateway nas notas sobre a versão.

Em pontos de extremidade que não usam raiz, use o seguinte comando curl:

curl -i -k --anyauth -u <AZDATA_USERNAME>:<AZDATA_PASSWORD> -X GET 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/?op=liststatus'

Colocar um arquivo local no HDFS

Para colocar um novo arquivo test.csv do diretório local em product_review_data directory, use o seguinte comando curl (o parâmetro Content-Type é necessário):

curl -i -L -k --anyauth -u root:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/test.csv?op=create' -H 'Content-Type: application/octet-stream' -T 'test.csv'

A partir do SQL Server 2019 (15.x) CU 5, quando você implanta um novo cluster com a autenticação básica, todos os pontos de extremidade, incluindo o gateway, usam AZDATA_USERNAME e AZDATA_PASSWORD. Os pontos de extremidade em clusters que são atualizados para CU 5 continuam usando root como o nome de usuário para se conectar ao ponto de extremidade do gateway. Essa alteração não se aplica às implantações que usam a autenticação do Active Directory. Confira Credenciais para acessar serviços por meio do ponto de extremidade do gateway nas notas sobre a versão.

Em pontos de extremidade que não usam raiz, use o seguinte comando curl:

curl -i -L -k --anyauth -u <AZDATA_USERNAME>:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/test.csv?op=create' -H 'Content-Type: application/octet-stream' -T 'test.csv'

Criar um diretório

Para criar um diretório teste em hdfs:///, use o seguinte comando:

curl -i -L -k --anyauth -u root:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/test?op=MKDIRS'

A partir do SQL Server 2019 (15.x) CU 5, quando você implanta um novo cluster com a autenticação básica, todos os pontos de extremidade, incluindo o gateway, usam AZDATA_USERNAME e AZDATA_PASSWORD. Os pontos de extremidade em clusters que são atualizados para CU 5 continuam usando root como o nome de usuário para se conectar ao ponto de extremidade do gateway. Essa alteração não se aplica às implantações que usam a autenticação do Active Directory. Confira Credenciais para acessar serviços por meio do ponto de extremidade do gateway nas notas sobre a versão.

Em pontos de extremidade que não usam raiz, use o seguinte comando curl:

curl -i -L -k --anyauth -u <AZDATA_USERNAME>:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/test?op=MKDIRS'

Próximas etapas

Para saber mais, confira Introdução a Clusters de Big Data do SQL Server.