#04-[Série] SQL Server Big Data Clusters – Ingestão de Dados no Storage Pool (HDFS)

Falla Guys

Continuando a série de posts sobre SQL Server Big Data Cluster (BDC) agora vamos brincar um pouco com a Ingestão de dados no Storage Pool (HDFS). Para entender com mais detalhes a aquitetura de uma olhada neste artigo e se quiser instalar o BDC é só seguir esse guia.

Storage Pool no BDC

O Storage Pool consiste em pods do Cluster Kubernetes e é um dos grandes responsáveis pela integração entre os mundos SQL e NoSQL. Podem existir dois ou mais pods nessa camada e são compostos pelo HDFS (datanode), Spark e instância SQL. Importante dizer que cada nó do datanode do HDFS que está alocado no Storage Pool faz parte de um cluster HDFS, ou seja, o NameNode que por padrão é criado no pod nmnode-0-0 controla os metastore dos danodes. O Yarn também está presente e faz o gerenciamento dos recursos do cluster com base nas chamadas distribuíndo em filas de execução, isso significa que as execuções oriundas do BDC são orquestradas pelo Yarn e não é algo que é executado por fora, isso garante uma armonia e estabilidade do HDFS.
Para informações mais detalhadas leia esse artigo.

Acessando HDFS via Azure Data Studio (ADS)

Conecte no Azure Data Studio com o IP e Porta. Para pegar essas informações execute via Kubectl (substitua bdccluster pelo nome do seu cluster)

Abra o Azure Data Studio e vá em New Connection e informe os dados de conexão.

Pronto, agora você está “dentro”. Via ADS é possível fazer muita coisa, como acessar o Controller (assunto para outro post), criar banco de dados, execução de querys, Notebooks entre outras coisas… mas vamos focar no HDFS.

Do lado esquerdo, existirá a conexão com o seu ambiente, expanda e será possível observar o item HDFS. Olha que mágico :), de forma visual e simples é possível acessar os diretórios, criar pastas, gerenciar pemissionamento e também fazer upload de arquivos.

Ingestão no HDFS

De forma muito simples, clique com botão direto sob HDFS, criar novo diretório, especifique o nome (RepoTesteGaretti) e pronto.. por baixo dos panos você acabou de executar um hdfs dfs -mkdir RepoTesteGaretti.

Agora vamos incluir alguns arquivos no HDFS, no diretório RepoTesteGaretti, botão direito, Upload Files, escolha os arquivos e faça o upload.

Em Produção precisamos automatizar esse processo certo? afinal, teremos n jobs fazendo ingestão, criando diretórios e fazer isso manualmente é muito ruim.

Para isso, podemos acessar a o HDFS via Command line, da seguinte forma:

 azdata bdc hdfs shell

E via linha de comando podemos exibir os diretórios (ls), acessar os arquivos (cd dir..), e executar uma infinidade de comandos.

Para exemplificar, vamos criar outro diretório e fazer upload de arquivos via command line.

Criando o diretório RepoTesteGaretti02.
No HDFS execute o comando:

mkdir RepoTesteGaretti02

Para listar o novo diretório:

ls
ou
ls /RepoTesteGaretti02

Fazendo upload via curl

Execute o comando Curl substituindo “Senha”, “IP” e “Diretório”:

curl -i -L -k -u root:SENHA -X PUT https://IP:30443/gateway/default/webhdfs/v1/RepoTesteGaretti02/Candidatos_2018.csv?op=create -H 'Content-Type: application/octet-stream -T C:\tmp\Candidatos_2018.csv'

Listando o novo arquivo no diretório /RepoTesteGaretti02/

ls /RepoTeste/Garetti02

Foi fácil né? Com essas informações em mãos já podemos começar a brincar com massas de dados interessantes e que servirá como insumo para os próximos posts.
Tente executar esses comandos, inserindo arquivos de vários formatos (pdf, parquet, csv, etc) e caso tenha alguma dúvida é só comentar no post ou me enviar por e-mail.

A missão do próximo post será “Ler” esses dados no HDFS via T-SQL, utilizando um recurso chamado EXTERNAL TABLE.. vamos executar SELECT e também um Python via Spark (pyspark).

See you next post
Luiz Henrique Garetti

Comente sobre isso: