M8E1

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 19

FRAMEWORK

DE BIG DATA

Mariana Araújo Pereira


Frameworks de
armazenamento não
estruturados
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:

 Detalhar o Hadoop Distributed File System (HDFS).


 Comparar HDFS, Amazon S3, Microsoft Azure Storage, IBM Cloud
Storage e Google Cloud Storage.
 Apresentar operações sobre dados não estruturados.

Introdução
Os dados não estruturados representam mais de 80% dos dados existentes
no mundo. Com tanta informação em potencial, foi necessário desen-
volver novas soluções de armazenamento que não apenas pudessem
guardar esses dados, mas que fossem capazes de assegurar que eles
ficassem íntegros e com fácil acesso. Além disso, como as fontes dos
dados são crescentes, as novas soluções devem ser capazes de escalar o
armazenamento o quanto for necessário, sem perder tempo de execução
enquanto isso é realizado.
Neste capítulo, você vai aprender o que é o Hadoop Distributed File
System (HDFS) e quais são as suas principais vantagens e utilizações. Você
conhecerá também como o armazenamento em nuvem de grandes
empresas — como Amazon, Microsoft, Google e IBM — superou as
limitações que existiam quanto a custo e escalonamento. Por fim, você
compreenderá quais são as principais operações realizadas em dados
não estruturados.
2 Frameworks de armazenamento não estruturados

1 Ecossistema Hadoop e HDFS


É praticamente impossível falar de big data sem citar o Hadoop, um framework
open-source que possibilita o processamento de grandes volumes de dados.
O Hadoop foi originalmente lançado pela empresa Yahoo!, em 2008. Anos
depois, passou a ser gerenciado pela Apache Software Foundation, que o
mantém até hoje.
Graças à sua eficácia, o Hadoop se consolidou como um ecossistema de
tecnologias amplamente útil, sendo utilizado por uma gama de empresas
conhecidas mundialmente, como Adobe, Alibaba, ebay, Facebook, LinkedIn,
Twitter, a própria Yahoo!, dentre outras (ASF INFRABOT, 2019). Embora
tenha sido criado com o objetivo de realizar buscas em milhões de páginas
web, o Hadoop se tornou um conjunto versátil de ferramentas, podendo ser
utilizado de diferentes maneiras, por exemplo: sandbox para análise de dados
e obtenção de insights, armazenamento de dados brutos (componente de um
data lake), armazenamento de informações empresariais (data warehouse) e
armazenamento geral de dados de baixo custo.
O Hadoop é formado por quatro módulos básicos: Hadoop Common, que
constitui as bibliotecas e funções gerais necessárias para o funcionamento dos
outros módulos; YARN (Yet Another Resource Negotiator), uma plataforma
de gerenciamento de recursos computacionais; MapReduce, sistema para
programação paralela de grandes volumes de dados; Ozone, um sistema de
armazenamento de objetos; Submarine, uma plataforma unificada de fer-
ramentas de machine e deep learning; e HDFS, sistema de armazenamento
distribuído de dados (APACHE HADOOP, [201–?]; WHITE, 2012).
O sistema de arquivos distribuídos Hadoop (HDFS, Distributed File
System) é um dos mais conhecidos frameworks para armazenamento de
grandes volumes de dados no universo do big data, que podem ser es-
truturados, semiestruturados ou não estruturados. Sendo um dos quatro
componentes básicos do Hadoop, ele foi projetado para armazenar os dados
em uma estrutura distribuída em hardware comum, para facilitar o seu
escalonamento. Além da escalabilidade para armazenar grandes volumes
de dados, o Hadoop apresenta outras características, como alta disponibi-
lidade, tolerância a falhas, realização de redirecionamento automático de
dados e possibilidade de portabilidade entre hardwares e sistemas similares
(APACHE HADOOP, [201–?]).
Frameworks de armazenamento não estruturados 3

Arquitetura
Nesse sistema, os dados e metadados são armazenados separadamente. Os
metadados são armazenados em um servidor intitulado NameNode e, enquanto
os dados são armazenados em DataNodes, ambos ficam conectados entre
si, com comunicação constante. Dentro dos NameNodes, ficam registrados
diferentes atributos, que incluem tempo de modificação, permissão, acesso do
arquivo e espaço em disco. O conteúdo de cada arquivo é dividido em blocos
de tamanho definido e replicado em diferentes DataNodes para garantir a
integridade e durabilidade dos dados, conforme ilustra a Figura 1.

Figura 1. Exemplo de estrutura do HDFS e replicação de um nó quando seu pulso para


de ser enviado.
Fonte: Adaptada de Hanson (2013).

Todos os blocos que constituem um arquivo, com exceção do último, têm


o mesmo tamanho, que é, por padrão, 128 megabytes, e são replicados em
três DataNodes, também por padrão. Cada cluster do HDFS possui um
único NameNode primário, que gerencia o espaço para a identificação do
sistema de arquivos e regula o acesso aos arquivos pelos clientes. Além disso,
4 Frameworks de armazenamento não estruturados

vários DataNodes gerenciam o armazenamento anexado aos nós em que são


executados. Uma vantagem do HDFS é que são criados servidores web que
possibilitam a verificação do status atual de armazenamento dos NameNodes
e DataNodes (PATIL; SONI, 2013).

Tolerância a falhas
Um sistema é tolerante a falhas quando continua funcionando corretamente
mesmo que um dos seus componentes tenha parado de funcionar adequada-
mente, ou seja, falhado. O objetivo principal do HDFS é armazenar dados de
maneira confiável mesmo na presença de falhas. Os dois métodos principais
que possibilitam a sua alta tolerância a falhas são: replicação de dados e ponto
de verificação e recuperação.
A replicação de dados consiste em copiar um mesmo dado várias vezes
e alocá-lo em nós diferentes. Essa é uma técnica eficaz que possibilita uma
recuperação de falhas imediata e alta disponibilidade, mas tem como des-
vantagem consumir uma grande quantidade de memória de armazenamento
devido à redundância de informações guardadas.
Sempre que é solicitado o acesso aos dados pelo usuário, o NameNode
procura por todos os DataNodes onde esses dados estão contidos e fornece o
primeiro que está em funcionamento. Esse funcionamento é monitorado através
de pulsos enviados a partir dos DataNodes. Quando o NameNode para de
receber a pulsação de um DataNode, assume que ele não está funcionando.
Nesse caso, é realizada a verificação dos dados que estavam ali contidos e,
após, é criada uma réplica deles. No caso da identificação de um DataNode
“morto” durante a solicitação de um usuário, o NameNode busca o próximo nó
em funcionamento para fornecer os dados enquanto a replicação do nó morto
é realizada paralelamente, sem interrupção do acesso aos dados. Portanto, no
caso de falha de um dos nós, os dados continuam altamente disponíveis para
o usuário (SHVACHKO et al., 2010).
Já o ponto de verificação e recuperação possibilita a reversão de modificações
causadas no sistema até um determinado intervalo de tempo após a modificação
ter sido realizada. Isso funciona como um programa básico de texto, por exemplo,
onde são feitas diferentes modificações, mas há a opção de salvar o arquivo sem
salvar e abri-lo novamente com a versão do último salvamento. Esse método é
custoso e aumenta o tempo geral de execução do sistema, pois as operações de
reversão precisam voltar e verificar os últimos estágios consistentes que existem,
aumentando, portanto, o tempo de execução (PATIL; SONI, 2013).
Frameworks de armazenamento não estruturados 5

Para cada NameNode, existem dois arquivos: fsimage, que armazena o


ponto de verificação mais recente; e log, que é como um diário de alterações
desde o ponto de verificação. Quando o NameNode é inicializado ocorre uma
união das alterações (log) com o ponto de verificação ( fsimage) para criar
um metadado atualizado do sistema de arquivos. Então, esse se torna o novo
fsimage e um diário log é iniciado do zero, partindo desse novo ponto. Esse
novo ponto de verificação é atualizado periodicamente.
A atualização periódica do log e sua cópia para o fsimage é realizada por
um Namenode secundário. Esse segundo NameNode é controlado por dois
parâmetros de configuração: dfs.namenode.checkpoint.period,
que define o tempo máximo entre dois pontos de verificação consecutivos,
que é de 1 hora, por padrão; e dfs.namenode.checkpoint.txns, que
define o número exato de transações não verificadas no NameNode primário,
que forçará uma atualização do ponto de verificação mesmo que o tempo
máximo não tenha sido atingido, isto é, por padrão, 1 milhão (APACHE
HADOOP, [201–?]).
O HDFS suporta uma distribuição hierárquica tradicional de arquivos
que possibilita a criação de diretórios/pastas e o armazenamento de arquivos
dentro deles. Utiliza o sistema de controle de acesso discricionário, onde a
permissão para esses arquivos e diretórios é similar ao modelo de interface
portátil entre sistemas operacionais definido pelo Institute of Eletrical and
Eletronic Engineers. Nesse modelo de permissão, é possível executar
operações de leitura e gravação dos arquivos e cada arquivo/diretório pertence
a um proprietário e um grupo.
Embora as suas funcionalidades, capacidades de distribuição, integridade
de dados e tolerância a falhas sejam excelentes, o HDFS vem dividindo
espaço com ferramentas de armazenamento em nuvem. Isso ocorre porque
o custo para armazenar na nuvem pode ser mais baixo em longo prazo,
possibilitando um aumento de volume de armazenamento muito mais rápido
e econômico.

O HDFS e o Hadoop não são a mesma coisa. O Hadoop é um ecossistema onde estão
contidas diferentes aplicações para o processamento, organização e armazenamento de
grandes volumes de dados. O HDFS faz parte desse ecossistema, sendo um framework
de armazenamento.
6 Frameworks de armazenamento não estruturados

2 Armazenamento em nuvem
O armazenamento em nuvem é um serviço que surgiu em conjunto com a
chamada computação em nuvem, que corresponde a uma gama de recursos
da tecnologia da informação que podem ser utilizados sob demanda, sem a
necessidade de uma estrutura física local robusta. Além do armazenamento,
esses recursos incluem ambientes pré-configurados para a criação de data
lakes, plataformas de análises de dados, aprendizado de máquina, dentre outros
(AWS, 2020). Essa utilização sob demanda pode reduzir os custos físicos e
operacionais das empresas, além de poder apresentar maior segurança em
relação a alguns sistemas de armazenamento físico.
Segundo o estudo realizado pela RightScale, em 2018, com 997 represen-
tantes de empresas de pequeno, médio e grande porte, os principais serviços
de armazenamento em nuvem utilizados naquele ano foram: Amazon Web
Service, Microsoft Azure, Google Cloud Storage e IBM Cloud, conforme
apresenta a Figura 2.

Figura 2. Utilização da nuvem pública por empresas.


Fonte: Adaptada de Right Scale (2018).

Amazon S3
Amazon Web Services (AWS) é a plataforma de nuvem da empresa transna-
cional Amazon. É a mais utilizada e abrangente do mundo, com mais de 175
serviços completos em nuvem disponíveis para o usuário. Além do maior
Frameworks de armazenamento não estruturados 7

número de serviços, a AWS também possui a infraestrutura global mais extensa,


com 69 zonas de disponibilidade, em mais de 20 regiões geográficas, que são
conectadas por redes de baixa latência, alta taxa de transferência e redundância.
Dentre os serviços oferecidos, podem ser encontradas dez soluções de
armazenamento, com diferentes características e aplicações. O serviço que
mais se destaca para utilização em big data é o serviço de armazenamento
simples Amazon S3, que é uma plataforma com alta durabilidade, ajuste
de escala, possibilidade de disponibilização dos dados a partir de qualquer
lugar com acesso à internet e que pode ser utilizada para arquivamento ativo,
computação sem servidor e backup de dados.

Outras plataformas do Amazon Web Service


Além das plataformas de armazenamento, também estão contidas na AWS plataformas
mais complexas para o processamento de big data, como:
 AWS Lake Formation: é um serviço que facilita a configuração de um data lake.
A partir dele, é possível coletar, catalogar, limpar e classificar os dados, além de
proteger o acesso confidencial.
 Amazon EMR: é uma plataforma de big data nativa da nuvem, que oferece suporte a
19 projetos de código aberto, como Apache Spark, Hive, HBase, Flink, dentre outros.
Esses projetos podem ser combinados à escalabilidade dinâmica do Amazon EC2
e ao armazenamento escalável do Amazon S3.
Essas e outras plataformas podem ser conhecidas e exploradas no site oficial de
soluções da Amazon, disponível no link a seguir (AWS, [201–?]).

https://qrgo.page.link/187uX

Segundo a empresa, o S3 é líder em escalabilidade, disponibilidade, segu-


rança e desempenho frente a todas as outras soluções com esse propósito. No
serviço de armazenamento, são disponibilizados recursos de gerenciamento
de dados e configurações de controle de acesso aprimoradas para utilização
comercial e organizacional. Qualquer tipo ou volume de dados pode ser arma-
zenado utilizando o S3, de forma que não é necessário se preocupar em como
o dado é armazenado, podendo focar apenas na sua utilização.
Dentro do S3, existem diferentes classes de armazenamento de acordo
com o padrão de acesso esperado para os dados: S3 Standard, que é o mais
geral, podendo armazenar qualquer dado e ser utilizado com frequência;
8 Frameworks de armazenamento não estruturados

Intelligent-tiering, utilizado para dados com padrão de acesso dinâmico;


Standard Infrequent Access e One Zone Infrequent Access, que são reco-
mendados para dados de longa vida pouco acessados; por fim, o Glacier, que
é recomendado para arquivamento de dados. Essa disponibilidade de opções
ajuda a calcular o custo de utilização da plataforma, sendo o S3 o serviço mais
caro e Glacier o mais barato.
Amazon S3 fornece proteção aos objetos armazenados em um bucket com
controle de versão. Esse controle pode ser usado para restaurar versões mais
antigas de um objeto no caso de corrupção ou exclusão, mesmo que tenha
sido realizada pelo usuário.

Microsoft Azure Storage


O Azure é um serviço de armazenamento em nuvem da Microsoft, que se
caracteriza por ser altamente disponível, seguro, escalonável e redundante. O
armazenamento do Azure inclui blobs (objetos) do Azure, DataLake Gen2,
arquivos, filas e tabelas do Azure. Uma assinatura do Azure pode hospedar
até 100 contas, cada uma com capacidade de armazenamento para 500 TB
(COLLIER; SHAHAN, 2015).
Cada conta de armazenamento pode ser configurada com diferentes
níveis de redundância: localmente redundante, que fornece alta disponibi-
lidade, garantindo que três cópias de todos os dados sejam feitas de forma
síncrona antes que uma gravação seja considerada bem-sucedida, fazendo
com que eles fiquem disponíveis mesmo que um nó de armazenamento
falhe; redundância geográfica, na qual existem três cópias síncronas dos
dados na região principal para alta disponibilidade, criando de forma as-
síncrona também três réplicas em uma região pareada para recuperação de
desastres; geo-redundante, que é um armazenamento de leitura adequado
para recuperação parcial de desastres. Se houver um problema com a região
principal, é possível ter acesso, no modo somente leitura, à região empare-
lhada (PETERSON, 2016).
O Azure pode ter redes virtuais e também pode ser conectado à rede
corporativa. Os requisitos de armazenamento podem ser tratados na categoria
padrão e também na categoria premium. A Microsoft possui 20 regiões dife-
rentes para o Azure em vários locais, como Ásia, Austrália, Europa e Brasil
(MICROSOFT AZURE, [201–?]). Além do serviço de armazenamento em
nuvem, a plataforma também disponibiliza outros serviços para a construção
de aplicações distribuídas, como o SQL Azure Database, Azure AppFabric
Platform e uma API de gerenciamento e monitoração para aplicações colocadas
Frameworks de armazenamento não estruturados 9

na nuvem. Assim como a Amazon, o Azure também oferece um serviço de


data lake na nuvem. O Azure Data Lake é baseado em Hadoop e em outras
ferramentas do ecossistema (MICROSOFT AZURE, [201–?]).

Google Cloud Storage


O Google Cloud Storage é uma solução de armazenamento do Google que está
contida na Google Cloud Platform, uma plataforma de ferramentas poderosas
com diferentes propostas e aplicações para big data. Além do armazenamento,
é possível utilizá-la para processamentos, análises e arquivo. Embora existam
outras soluções dentro da plataforma, como Drive, Storage para Firebase, Per-
sistent Disk e FileStore, o Cloud Storage é o mais indicado pela empresa para
armazenamento de um grande volume de dados não estruturados em nuvem.
O armazenamento no Cloud Storage é feito a partir de objetos, de forma que
cada objeto contém um arquivo estruturado ou não, de qualquer formato. Um
grupo de objetos é chamado de intervalo e todos os intervalos ficam contidos
em um projeto. Dentro de cada projeto, é possível conceder permissões dife-
rentes dos objetos para distintos usuários, inclusive podendo deixá-los livres
para acesso de qualquer pessoa na internet. Existem quatro diferentes tipos de
armazenamento de acordo com o tempo de armazenamento e a frequência de
acesso: Standard, adequado para dados que são acessados globalmente, como
veiculação em páginas e streaming; Nearling, ideal para dados que serão lidos
ou modificados, em média, uma vez por mês; Coldline ideal para dados que
serão acessados, no máximo, uma vez por trimestre; por fim, o Archive, em
que o tempo mínimo de armazenamento é de 365 dias, sendo indicado para
backup e recuperação de desastres (GOOGLE CLOUD, [201–?]).

IBM Cloud Storage


O IBM Cloud Storage é um serviço de armazenamento altamente escalável for-
necido pela IBM. Assim como os outros serviços, apresenta diferentes classes de
armazenamento visando atender diferentes necessidades do usuário, com custos
distintos entre elas. Nesse caso, existem cinco tipos: Standard, para cargas de
trabalho ativas; Vault, para aqueles dados acessados em uma frequência menor;
Cold Vault, para os dados muito pouco acessados; Flex, para cargas de trabalho
dinâmicas, e Archive, para retenção de dados por longos períodos, como backups.
O IBM Cloud Object Storage é a solução do mercado com menor custo
para o armazenamento ativo de dados. Devido às tecnologias empregadas na
plataforma, é possível reduzir o custo de armazenamento em até 54% sobre
10 Frameworks de armazenamento não estruturados

os sistemas de gerações anteriores e obter até 150% de melhor desempenho. O


tipo de armazenamento padrão (Standard) é utilizado para as cargas de trabalho
ativas que necessitam de alto desempenho e baixa latência, onde os dados
precisam ser acessados frequentemente. Nesse tipo de armazenamento, ao
invés de ser utilizada a replicação de dados a fim de obter alta disponibilidade,
é utilizada uma tecnologia de codificação de eliminação (COYNE et al., 2018).
A estrutura simples e estável desse storage possibilita o escalonamento de
forma flexível, sendo ideal para dados não estruturados. O armazenamento
distribuído e acessível por API pode ser integrado diretamente aos aplicativos
e essa integração simples torna mais fácil estabelecer um fluxo de aplicativos
nativos em cloud, possibilitando uma forma eficiente e rápida de atualizar
componentes de aplicativos.

É possível estimar os gastos de um armazenamento em nuvem de forma rápida,


fácil e gratuita. Confira a seguir os links de calculadoras de custos de cada uma das
soluções apresentadas.
Calculadora de custos da Amazon (AWS, [2020?])

https://qrgo.page.link/d1dTe

Calculadora de custos da Google (GOOGLE CLOUD, 2020)

https://qrgo.page.link/bnNLX

Calculadora de custos da Azure (MICROSOFT AZURE, [2020?])

https://qrgo.page.link/qK2Um

Calculadora de custos da IBM (IBM CLOUD, 2019)

https://qrgo.page.link/cyf7e
Frameworks de armazenamento não estruturados 11

HDFS on-premise e armazenamento em nuvem


Para comparar as soluções de armazenamento apresentadas, é preciso avaliar
o custo total de aquisição e operação de cada uma delas para um mesmo
volume de dados. No exemplo a seguir, será utilizado o volume de 100 TB.
O custo total é a soma de investimentos necessários para que a solução seja
adquirida e mantida, incluindo custo de trabalho humano e estrutura. De acordo
com o relatório da IDC liberado pela Amazon, utilizar o armazenamento do
AWS resulta em uma economia de 64,3% em comparação à implantação dos
mesmos recursos em ambientes locais. Já a alteração do armazenamento ativo
do HDFS para o Google Cloud Storage, geralmente, tem um custo total de
propriedade 57% menor.
O custo de armazenamento de 1 TB correspondia a $ 206 por mês, em
2017, segundo o levantamento realizado por Xin, Rosen e Pistor (2017). Para
o exemplo de 100 TB, esse custo alcança o montante de $ 20.600. Para esse
mesmo volume de armazenamento, a calculadora on-line de custos mensais
da Amazon, para a América do Sul, na região de São Paulo, calculou o valor
mensal de $ 4.070. Já o serviço do Google Cloud Storage custaria $ 3.584
ao mês. O Azure, por sua vez, teria um valor igual a $ 3.279 e o IBM Cloud
Storage, por fim, acabou sendo o mais barato, com um custo de $ 3.000/
TB/mês.
Diante desses valores de custo e levando em consideração que o armazena-
mento em nuvem possui outras vantagens, como alta elasticidade, capacidade
computacional, distribuição global e integração com diferentes ferramentas de
processamento e análise, esse tipo de armazenamento parece apresentar um
maior custo-benefício que o HDFS local, além de possibilitar que as empresas
estejam sempre em armazenamento sem que seja necessário se preocupar
com a estrutura física e rotinas de manutenção. O Quadro 1 apresenta uma
comparação entre os diferentes serviços.
12 Frameworks de armazenamento não estruturados

Quadro 1. Vantagens e desvantagens de soluções de armazenamento

Vantagens Desvantagens

HDFS Alta disponibilidade e tolerância a  Altamente custoso se compa-


falhas no armazenamento local rado aos serviços de armazena-
mento em nuvem

Amazon Maior distribuição global,  Maior custo de armazenamento


S3 com mais de 60 zonas de TB/mês em nuvem
disponibilidade

Microsoft Funciona perfeitamente durante a  Requer gerenciamento e


Azure mudança de ambiente manutenção
 Só suporta aplicações Windows

Google Alto acesso à informação atra-  Menor número de serviços de


Cloud vés das ferramentas web-based processamento associados à
Google plataforma

IBM Menor custo de armazenamento  Menor segurança na nuvem


Cloud de TB/mês em nuvem  Não possui período gratuito
inicial

3 Operações sobre dados não estruturados


Para que todo banco de dados funcione bem, é necessário ter operações bá-
sicas de manipulação de dados, como operações de leitura e gravação. No
HDFS, essas operações são realizadas a partir do NameNode. Para gravar
um dado é preciso interagir com o NameNode, que fornece o endereço dos
DataNodes onde ocorrerá a gravação. Para ler um arquivo, o NameNode
verifica os privilégios necessários e fornece o endereço dos DataNodes em
que o dado está armazenado.
Para gravar um dado, é executado um comando que cria um novo arquivo
sem blocos associados a ele no espaço do NameNode. Então, verificações são
executadas pelo NameNode para garantir que esse dado de fato ainda não existe.
No caso de existir, é necessária uma permissão para substituição. Em seguida,
o NameNode determina um local para gravar os blocos, onde são escritos pelo
cliente. Após a gravação dos dados, o HDFS começa a replicar os blocos em
outros DataNodes, criando várias réplicas. Ao final da gravação existe um
pipeline e pelo menos três cópias de blocos diferentes conforme a lista a seguir.
Frameworks de armazenamento não estruturados 13

1. O cliente inicia a operação de gravação chamando o método create ().


2. O objeto se conecta ao NameNode usando a chamada RPC (Remote
Procedure Call) e inicia a nova criação de arquivo. Se o arquivo já existir
ou o cliente não tiver permissão suficiente para criar um arquivo, será
emitido um alerta de erro para o cliente. Caso contrário, a operação
será bem-sucedida e um novo registro para o arquivo será criado pelo
NameNode.
3. Depois que um novo registro no NameNode é criado, um objeto é re-
tornado ao cliente. O cliente usa para gravar dados no HDFS. Enquanto
o cliente continua gravando dados, pacotes continuam sendo criados.
Esses pacotes são enfileirados.
4. É escolhida através do NameNode a alocação de novos blocos, es-
colhendo, assim, DataNodes desejáveis para serem usados para
replicação.
5. O processo de replicação começa criando um pipeline usando
DataNodes.
6. Todo DataNode em um pipeline armazena o pacote recebido por ele
e encaminha para o segundo DataNode em um pipeline.
7. Outra fila, Ack Queue, é mantida pelo DFSOutputStream para arma-
zenar pacotes que aguardam confirmação do DataNodes.
8. Depois que o reconhecimento de um pacote na fila é recebido de todos
os DataNodes no pipeline, ele é removido da Fila de confir-
mação. No caso de qualquer falha do DataNode, os pacotes dessa
fila são usados para reiniciar a operação.
9. Depois que um cliente finaliza a gravação dos dados, ele chama um
método close ().
10. Ocorre a liberação dos pacotes de dados restantes no pipeline, seguido
pela espera pelo reconhecimento.
11. Depois que uma confirmação final é recebida, o NameNode é contatado
para informar que a operação de gravação de arquivo está concluída.

Ao enviar uma solicitação de leitura ao NameNode, é realizada uma


verificação de permissão de acesso. Se o cliente tiver permissão àquele
dado, o endereço dos DataNodes que contêm aqueles dados é liberado e
pode ser lido pelo cliente. Agora, o cliente começa a ler os blocos usando
uma API e os dados são transmitidos continuamente para o cliente. Após
atingir o final de um bloco, a conexão é fechada. Confira o passo a passo
a seguir.
14 Frameworks de armazenamento não estruturados

1. Um cliente inicia a solicitação de leitura chamando o método open ()


do objeto FileSystem.
2. Este objeto se conecta ao NameNode usando RPC e obtém informações
de metadados, como os locais dos blocos do arquivo. Observe que esses
endereços são os primeiros blocos de um arquivo.
3. Em resposta a essa solicitação de metadados, os endereços dos Data-
Nodes com uma cópia desse bloco são retornados.
4. Depois que os endereços de DataNodes são recebidos, um objeto
é retornado ao cliente. O cliente chama o método read () que faz
com que se estabeleça uma conexão com o primeiro DataNode com
o primeiro bloco de um arquivo.
5. Os dados são lidos na forma de fluxos em que o cliente chama o mé-
todo read () repetidamente. Esse processo de operação read ()
continua até atingir o final do bloco.
6. Quando o final de um bloco é atingido, é fechada a conexão e, em
seguida, ocorre a localização do próximo DataNode para o próximo
bloco.
7. Depois que um cliente conclui a leitura, ele chama um método close ().

Dados não estruturados podem ser perfeitamente armazenados local-


mente ou em nuvem, mas algumas outras características requeridas para
armazenamento devem ser levadas em consideração. Algumas delas são
disponibilidade de infraestrutura, custos, elasticidade e disponibilidade de
acesso. Em um cenário onde a infraestrutura já está estabelecida, custo não
é um problema, não há previsão de aumentar o volume armazenado e não
há necessidade de acesso remoto aos dados de forma simplificada. Portanto,
o HDFS on-premise pode ser uma boa opção. Caso contrário, as soluções
de armazenamento em nuvem possuem ferramentas que solucionam todos
esses pontos.
Com a computação em nuvem, os dados não estruturados podem ser ar-
mazenados de forma eficaz e elástica de modo praticamente infinito. Além
disso, não é necessário se preocupar com infraestrutura ou manutenção local,
sendo também possível ter uma alta disponibilidade e facilitação de acesso dos
dados por um custo até sete vezes mais reduzido do que outras alternativas,
como o HDFS. Escolher o armazenamento de uma empresa é uma decisão
importante que precisa ser tomada com cautela e atenção. De qualquer forma,
é sempre possível fazer modificações e testar novas soluções até encontrar a
mais adequada ao tipo de negócio.
Frameworks de armazenamento não estruturados 15

APACHE HADOOP. The Apache Hadoop project develops open-source software for
reliable, scalable, distributed computing. Apache Hadoop, [s. l.], [201–?]. Disponível em:
http://hadoop.apache.org/. Acesso em: 16 fev. 2020.
ASF INFRABOT. Powered by. Confluence, [s. l.], 9 jul. 2019. Disponível em: https://cwiki.
apache.org/confluence/display/HADOOP2/PoweredBy. Acesso em: 15 fev. 2020.
AWS. Data lakes e análises na AWS. AWS, [s. l.], [201–?]. Disponível em: https://aws.amazon.
com/pt/big-data/datalakes-and-analytics/. Acesso em: 16 fev. 2020.
AWS. Overview of Amazon web services. [S. l.]: AWS, 2020. Disponível em: https://
d1.awsstatic.com/whitepapers/aws-overview.pdf. Acesso em: 16 fev. 2020.
AWS. Simple monthly calculator. AWS, [s. l.], [2020?]. Disponível em: https://calculator.
s3.amazonaws.com/index.html?lng#. Acesso em: 16 fev. 2020.
COLLIER, M.; SHAHAN, R. Fundamentals of Azure: Microsoft Azure essentials. Redmond:
Microsoft Corporation, 2015.
COYNE, L. et al. IBM private, public, and hybrid cloud storage solutions. 5th ed. [S. l.]: Red-
books, 2018. Disponível em: http://www.redbooks.ibm.com/redpapers/pdfs/redp4873.
pdf. Acesso em: 16 fev. 2020.
GOOGLE CLOUD. Cloud Storage. Google Cloud, [s. l.], [201–?]. Disponível em: https://
cloud.google.com/storage. Acesso em: 16 fev. 2020.
GOOGLE CLOUD. Google cloud platform pricing calculator. Google Cloud, [s. l.], 2020.
Disponível em: https://cloud.google.com/products/calculator#id=ae05eb83-7e70-
4f9c-a5b3-671b01ea4e00. Acesso em: 16 fev. 2020.
HANSON, J. Uma introdução ao Hadoop distributed file system. IBM, [s. l.], 30 ago. 2012.
Disponível em: https://www.ibm.com/developerworks/br/library/wa-introhdfs/index.
html. Acesso em: 16 fev. 2020.
IBM CLOUD. Cloud object storage. IBM Cloud, [s. l.], 2019. Disponível em: https://cloud.
ibm.com/catalog/services/cloud-object-storage. Acesso em: 16 fev. 2020.
MICROSOFT AZURE. Calculadora de preço. Microsoft Azure, [s. l.], [2020?]. Disponível em:
https://azure.microsoft.com/pt-br/pricing/calculator/#storage4491fcd3-b2a8-4738-
b456-3c331329107c. Acesso em: 16 fev. 2020.
MICROSOFT AZURE. Introdução ao Azure. Microsoft Azure, [s. l.], [201–?]. Disponível em:
https://docs.microsoft.com/pt-br/azure/. Acesso em: 16 fev. 2020.
PATIL, V. S.; SONI, P. D. Hadoop skeleton & fault tolerance in Hadoop clusters. Interna-
tional Journal of Application or Innovation in Engineering & Management, [s. l.], v. 2, n. 2,
p. 247–250, Feb. 2013. Disponível em: https://pdfs.semanticscholar.org/e31b/59b5f6e
0c13bd3fe5ced614653bf3aea260e.pdf. Acesso em: 16 fev. 2020.
16 Frameworks de armazenamento não estruturados

PETERSON, N. Get started guide for Azure IT operators. [S. l.]: Microsoft, 2016. Disponível
em: https://docsmsftpdfs.blob.core.windows.net/guides/azure/azure-ops-guide.pdf.
Acesso em: 16 fev. 2020.
RIGHT SCALE. RightScale 2018 state of the cloud report: data to navigate your multi-cloud
strategy. [S. l.: s. n.], 2018. Disponível em: https://www.suse.com/media/report/rights-
cale_2018_state_of_the_cloud_report.pdf. Acesso em: 16 fev. 2020.
SHVACHKO, K. et al. The hadoop distributed file system. In: SYMPOSIUM ON MASSIVE
STORAGE SYSTEMS AND TECHNOLOGIES, 26., 2010, Incline Village, NV. Annals [...]. Incline
Village, NV: IEEE, 2010. p. 1-10. Disponível em: https://storageconference.us/2010/Papers/
MSST/Shvachko.pdf. Acesso em: 16 fev. 2020.
WHITE, T. Hadoop: the definitive guide. 3th ed. Sebastopol: O'Reilly Media, Inc., 2012.
XIN, R.; ROSEN, J.; PISTOR, K. Top 5 reasons for choosing S3 over HDFS. Databricks, [s. l.],
31 May 2017. Disponível em: https://databricks.com/blog/2017/05/31/top-5-reasons-
-for-choosing-s3-over-hdfs.html. Acesso em: 16 fev. 2020.

Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a
rede é extremamente dinâmica; suas páginas estão constantemente mudando de
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade
sobre qualidade, precisão ou integralidade das informações referidas em tais links.

Você também pode gostar