SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
Infraestrutura do Facebook
Gabriella Lima de Carvalho
Análise e Desenvolvimento de Sistemas
Universidade Estácio de Sá
gabriella.lima.carvalho@gmail.com
Abstract – The Facebook's infrastructure goes
far beyond there data centers and social
network, the campus has a laboratory that not
only develops design for there data centers,
Facebook also invests heavily in open source
software and tools, increasing there scalability,
working to develop a range of data-handling
tools in terms of storage and content delivery in
order to make data processing scalable and
analysis easier.
Keywords- infrastructure, Storage, software,
scalability, database, NoSQL, MySQL.
I. Infraestrutura do Facebook
Como todos sabemos, o Facebook é uma
grande empresa voltada para redes sociais, a
maior do mundo atualmente, com isso,
descobrimos informações importantes
relacionado à essa grande empresa.
Primeiramente irei comentar sobre sua
infraestrutura, o Facebook utiliza uma
ferramenta muito interessante, que se chama
Busca Social (Graph Search), que tem como
ideia, aprofundar os resultados das pesquisas
voltadas para pessoas, lugares, fotos e
interesses dos usuários. As pesquisas podem
ser feitas à la Google, porém são limitadas ao
conteúdo presente no Facebook.
Para tudo isso acontecer de forma eficaz,
existe uma solução inteligente capaz de
processar tanta informação; essa solução
chama-se ‘Rack Desagregado’. Porém, há uma
controvérsia sobre essa solução, a qual relata
que a ferramenta Graph Search unida com um
poderoso sistema de pesquisa, tenha encantado
os cibercriminosos e tenha se tornado uma
grande ameaça à segurança de seus usuários.
Um elemento agravante, é o fato de usuários
não estarem cientes do perigo ou simplesmente
não saberem como usar os controles de
segurança e privacidade para navegar no
Facebook. Para resolver esse problema, é
altamente aconselhável marcar a opção de
navegação segura (HTTPS), tomar cuidado
com as “pegadinhas virtuais” e proteger ao
máximo informações como fotos, postagens no
mural, comentários e marcações, tornando tudo
isso o mais privado possível e claro, definir o
público que pode visualizar cada conteúdo
pessoal na rede. Porém, ao navegar na internet,
sabemos que estamos sujeitos a qualquer
perigo, o que devemos fazer é tomar muito
cuidado ao acessar um link ou expor alguma
informação.
Antes de encontrar essa solução chamada de
‘Rack Desagregado’, o Facebook sofria com a
falta de flexibilidade, especialmente com
serviços cujas necessidades mudam com o
tempo, ou seja, os servidores não trabalhavam
bem com mais de uma variável. Com isso, a
Busca Social começou a trabalhar com 20
servidores Compute, 8 módulos flash, 2
módulos RAM e um módulo de
armazenamento, para 3TB de memória RAM e
30TB de memória flash, tendo como ideia,
sempre aumentar o poder computacional ao
longo do tempo. Contando que hoje (2016), de
acordo com um funcionário do Facebook, a
empresa se apóia em aproximadamente 200
servidores memcached para produção
(operação diária do site) e um pouco mais para
propósitos desenvolvimentistas.
OBS: Memcached quer dizer memória cache,
um método de armazenar dados
temporariamente.
Um servidor de memória cache armazena
informação temporariamente na memória do
servidor, reduzindo a necessidade de fazer uma
busca na base de dados pela informação, isso
reduz o tempo levado entre um pedido de
informação e a entrega daquele dado.
II. A super infraestrutura do Facebook para
conectar o mundo
Os Data Centers são uma grande
infraestrutura essencial para quem se conecta à
internet e existe uma parte grande do Facebook
nessa iniciativa, trabalhando em sistemas de
infraestrutura que movem seu site. Com isso, o
Facebook também infrenta problemas de
engenharia em seus data centers, em parte,
devido ao seu tamanho, com mais de 1 bilhão
de usuários ativos mensalmente, criando
petabytes de dados.
Para resolver esse problema, o Facebook
contratou arquitetos para projetar data centers
inspirados em mobília modular, que podem ser
montados de maneira mais rápida, barata e
eficiente do que os convencionais, a empresa
também evita hardware comercial, preferindo
montar suas próprias máquinas, tornando tudo
isso aberto para quem quiser copiá-lo. O
Facebook também tem uma fazenda eólica para
gerar a própria energia.
Armados com um laboratório no campus do
Facebook, o grupo consegue criar protótipos
das suas ideias e mergulhar nos problemas de
design em um data center. Par isso, eles usam
máquinas de dobrar placas de metal,
impressoras 3D e até placas de madeira para
modelagem, tendo então, racks articulados
inspirados em mecanismos de abertura de
garagem.
Algo interesse é que dentro do data center,
todo mundo da equipe passa pela experiência
de fazer reparos de manutenção, estudar a
cadeia de suprimentos e trabalhar próximo dos
desenvolvedores de software, isso para evitar a
situação comum de que os dois lados soft e
hard, existam em um vácuo até que sejam
misturados.
III. Explorando a maior rede social do
mundo
O tamanho do cluster data warehouse do
Facebook têm aumentado consideravelmente
ao longo dos últimos anos. Sendo usados várias
peças de software de fonte aberta no armazém
de dados, incluindo Apache Hadoop , Apache
Hive , HBase , Apache Thrift e Facebook
Scribe. Juntos, eles mantem este motor de
processamento de dados.
Clusters de armazenamento de dados são em
grande parte os sistemas de processamento em
lote, onde a ênfase está na escalabilidade e
rendimento. Com mais de um bilhão de
usuários e requisitos para analisar com mais de
105 terabytes a cada 30 minutos, o apetite do
Facebook por dados atingiu proporções
descomunais.
A Hadoop é a ferramenta chave usada pela
rede social, e não simplesmente para análise,
mas como um motor para muitos recursos
oferecidos por ela, incluindo mensagens. Essa
carga de trabalho monstruosa levou a empresa a
lançar o seu projeto Prisma, que suporta dados
distribuídos geograficamente em diversas
instalações Hadoop.
O Projeto Prisma é a resposta da empresa
para alcançar novos patamares de capacidade
Hadoop. Com o Prisma, uma camada de
abstração lógica é adicionada para que um
cluster Hadoop possa ser executado através de
vários centros de dados, removendo
efetivamente os limites de capacidade.
Apache Hadoop está sendo usado em três
grandes tipos de sistemas:
1 - Como um armazém para análise da web,
como o armazenamento para um banco de
dados distribuído e para backups de banco de
dados MySQL.
Como uso de provimento de aplicação em
tempo real, sendo assim, o Apache Hadoop foi
aumentado para fazer latências pequenas e
tempos de resposta mais rápido. Um dos
aplicativos do Facebook, o Mensseger usa um
banco de dados distribuído chamado Apache
HBase para armazenar dados em clusters
Apache Hadoop.
2 - Outro caso de uso é recolher clique de
registros em tempo quase real de nossos
servidores web e transmitir-lhes diretamente
em nossos clusters Hadoop. Usamos Scribe
para tornar isso mais fácil. Scribe é bem
integrado para armazenar dados diretamente no
Apache Hadoop. A maioria destes grupos em
tempo real são menores em tamanho, algo em
torno de cem nós de cada um.
3 – E o último, é o uso para arquivamento de
médio prazo de bancos de dados MySQL. Esta
solução fornece backup e recuperação rápida de
dados armazenados no Hadoop File System e
reduz nossos custos de manutenção e
implantação de conjuntos de dados de tamanho
de arquivo petabyte.
Como funciona o Hadoop:
1) AvatarNode
Tanto a base de código de armazenamento e a
base de código em tempo real contem o
Hadoop AvatarNode, de alta disponibilidade
para um Hadoop Distributed File System
(HDFS). O AvatarNode é um invólucro em
torno do software Hadoop NameNode.
Há dois AvatarNodes em um único cluster
HDFS:
One atua como o primário e o outro como um
hot standby. O AvatarNode primário e o
AvatarNode de espera são coordenados via
Apache ZooKeeper . O administrador pode
alternar o avatar de cada um desses nós,
permitindo-nos para implantar um novo
software para o cluster sem incorrer em tempo
de inatividade. O tempo de failover é de alguns
segundos para grandes clusters. Este patch foi
contribuído volta ao Apache Hadoop no HDFS-
976.
2) RaidNode
A base de código tem HDFS-RAID que usa
arquivos de paridade para diminuir o uso do
armazenamento.
Hadoop, por padrão, mantém três cópias de
dados. HDFS-RAID cria blocos de paridade de
blocos de dados, permitindo-nos armazenar
menos cópias de dados, mas mantendo a
mesma probabilidade de perda de dados. Com
isso, o Facebook implanta o gerador XOR de
paridade, poupando cerca de 5 petabytes de
armazenamento bruto na implantação de
produção. Também há uma variante, Reed-
Solomon, que gera blocos de paridade, isto
permite armazenar ainda menos cópias de
dados. Recurso atribuído para Apache Hadoop
e pode ser encontrado no sub-projeto Hadoop
MapReduce.
3) Anexa
A base de código em tempo real tem suporte
completo para as operações de arquivo de
anexação HDFS confiável e é um requisito
básico para HBase para ser capaz de armazenar
índices de forma confiável no HDFS. As
versões anteriores do Apache HBase eram
suscetíveis à perda de dados, porque HDFS não
tem uma API para sincronizar dados para
armazenamento estável. Por isso, foi
adicionado uma nova interface para Apache
Hadoop para sincronizar dados de forma
confiável para o armazenamento estável. Esta é
a primeira instância conhecida de Apache
Hadoop em um ambiente de produção que
suporta a perda de dados zero, enquanto usando
Apache HBase.
Hive - Um armazém de dados petabyte Scale
usando Hadoop
Hive é uma fonte aberta de petabytes de
armazenamento escalável baseado em Hadoop,
que foi desenvolvido pela equipe de
Infraestrutura de Dados no Facebook. O que
inspirou a criação do Hive, foi o fato de ser
preciso melhorar a capacidade de consulta do
Hadoop, trazendo os conceitos familiares de
tabelas, colunas, divisórias e um subconjunto
de SQL para o mundo desestruturado do
Hadoop, mantendo a extensibilidade e
flexibilidade do Hadoop. Sendo muito utilizada
para tarefas simples de compactação,
inteligência de negócios e aprendizado de
máquina e muitas outras aplicações.
Nas seções seguintes, é fornecido mais detalhes
sobre a arquitetura e capacidades Hive.
Modelo de dados
Hive organiza dados em tabelas e partições.
Os dados para uma determinada data entram
em uma partição para essa data. Um esquema
de particionamento boa permite o Hive podar
os dados ao processar uma consulta e que tem
um impacto direto sobre o quão rápido um
resultado da consulta pode ser produzido.
Um esquema de particionamento bom
também ajuda no gerenciamento de dados e
abre possibilidades para arquivar dados mais
antigos para o armazenamento mais barato,
mantendo os dados mais recentes sobre o
cluster principal.
O esquema de particionamento pode ter
várias colunas, bem como no caso em que cada
coluna de particionamento mapeia para um
nível dentro do espaço de nome do diretório.
Dentro de cada partição os dados podem ser
bucketed em arquivos individuais. O bucketing
pode ser aleatório ou hash em uma determinada
coluna. Configurando um bom esquema
bucketing ajuda na rápida amostragem de
dados que pode ser usado para análise rápida e
verificação de dados em dados de amostra.
Arquitetura de Sistemas e Componentes
Hive compreende os seguintes componentes
principais:
Metastore: Para armazenar os dados de meta.
Compilador de consulta e mecanismo de
execução: Para converter consultas SQL para
uma sequência de mapa / reduzir postos de
trabalho que são executadas em Hadoop.
SerDe e ObjectInspectors: as interfaces
programáveis e implementações de formatos de
dados comuns.
UDF e UDAF: as interfaces programáveis e
implementações para funções definidas pelo
usuário (escalar e funções de agregação).
Clientes: cliente de linha de comando similar à
linha de comando MySQL e uma interface
web.
O metastore armazena as informações sobre
as mesas, divisórias, as colunas nas tabelas, os
SerDe usados para serializar e desserializar a
partir de partições, os locais dos dados para
essas unidades dentro hdfs, atributos
bucketization etc. Ele também oferece uma loja
de base, o valor de chave que pode ser usada
para armazenar qualquer tipo de meta-dados
com estes objetos.
O compilador de consulta usa as informações
armazenadas no metastore para converter
consultas SQL em uma seqüência de mapa /
reduzir postos de trabalho.
Hive também suporta construções de consulta
mais avançadas como cláusula FROM, sub
consultas e UNION ALL. O compilador
também cria planos inteligentes através de uma
série de otimizações, tais como:
Pushdown de predicado
Combinando mapa múltipla / reduzir postos de
trabalho para único mapa / reduzir empregos
Diminui número de Coluna
Agregações Mapa do lado Mapa-side
Uma vez que o plano é gerado o compilador
passa para o mecanismo de execução que
executa o mapa / reduzir postos de trabalho,
lançando-os ao cluster Hadoop na ordem de
suas dependências. Juntos, todos esses
componentes trabalham para fornecer uma
poderosa estrutura e linguagem para gerenciar e
consultar dados. Além dos componentes de
consulta no âmbito linguagem também fornece
capacidades normais DDL como criar, apagar e
modificar tabelas e partições e descrevendo e
mostrando tabelas também.
Formatos de dados, tipos definidos pelo
usuário e funções definidas pelo usuário
Hive é flexível o suficiente para analisar
diferentes formatos de dados e tipos de dados
através de suas interfaces SerDe e
ObjectInspector Java. Ele fornece alguns tipos
construído em implementações dessas
interfaces para formatos de dados, tais como
arquivos de texto delimitados, arquivos CSV e
alguns formatos binários eficientes. No entanto,
se os dados não estiverem em qualquer um
destes formatos (por exemplo, pode ser dados
XML ou em algum formato proprietário que é
utilizado por outras aplicações), é fácil de
escrever uma classe de implementação em
conformidade da interface SerDe.
Extensibilidade e escrever seu próprio
mapa/ Reduzir
Hive também proporciona uma grande
flexibilidade no apoio a cálculos que podem
não se encaixar totalmente o modelo de
processamento de SQL. Aprendizagem de
máquina de geração do modelo, a construção
de diferentes tipos de índices e muitas outras
aplicações não são facilmente exprimível e em
SQL e Hive é capaz de suportar tais aplicações,
fornecendo construções de linguagem que
permitem que o usuário conecte seus próprios
scripts de transformação em uma instrução
SQL. Isto é feito através do MAP, REDUZIR.
Esta flexibilidade permite tipo de análise não
SQL que tem sido extensivamente utilizada no
Facebook para uma variedade de tarefas.
O Facebook cresce a passos incríveis. Sua
base de usuários aumenta quase que
exponencialmente, até final de 2015 atingiu
1,65 bilhão de usuários e tem mantido uma taxa
de cerca de 100 milhões de novos usuários a
cada 6 meses. Com isso, o Facebook depende
muito de escalabilidade para enfrentar os
desafios diários com o qual tem que lidar, pois
os números são bem grandes. A seguir um
pouco sobre o que estou dizendo:
O Facebook serve mais de 550 bilhões de
visualizações de páginas por mês
Há mais fotos no Facebook do que em todos os
outros sites de fotos juntos
Mais de 3 bilhões de fotos são visualizadas por
dia, mais de 25 bilhões de tipos de conteúdo
(atualizações de status, comentários, etc) são
compartilhados todo mês.
Com mais de 60 mil servidores
Até final de 2015, atingiu 1,65 bilhões de
usuários
Para suportar todos esses números, o
Facebook precisa de escalabilidade, então,
vamos acompanhar o que os engenheiros estão
desenvolvendo!
Utilização de Softwares para escalar
A infraestrutura de software que o Facebook
usa pode ser vista como um site LAMP, mas
com melhorias e extensões de vários serviços.
Por exemplo:
O Facebook usa PHP, mas tem um compilador
que permite que o sistema execute código
nativo nos servidores web, aumentando
significativamente seu desempenho;
O Facebook usa Linux, porém, Linux
otimizado para garantir alta vazão de rede;
Usa MySQL, mas principalmente para
persistencia de chaves-valores(Hashes),
movendo lógicas de consultas e JOINS para a
camada de aplicação dos servidores web em
que otimizações são mais fáceis de
implementar, usando por exemplo caches de
memória;
Por fim, há sistemas customizados como o
Haystack, um objeto de armazenamento
altamente escalável usado para servir a imensa
quantidade de fotos do Facebook, o Scribe, um
sistema de loggins (registro de ações) que
consegue operar na escala do Facebook.
Durante o crescimento do Facebook, a
empresa tem trabalhado para desenvolver uma
série de ferramentas para lidar com esses
dados, tanto em termos de armazenamento
quanto na entrega de conteúdo, a qual muitas
delas se tornaram open-source. Mas o uso do
open source pelo Facebook vai muito além do
LAMP (ou até mesmo, além do LAMP e
também do Memcached). A empresa também
criou e lançou vários projetos de código aberto
e participa ativamente de outros, talvez o mais
notável sendo o Hadoop.
Algumas das ferramentas de código aberto
do Facebook que ajudaram a lidar com a
enorme quantidade de dados:
Cassandra
O projeto da Apache Software Foundation,
Cassandra, é um sistema de armazenamento
distribuído para gerenciamento de dados
estruturados que é projetado para escalar uma
grande quantidade de dados entre muitos
servidores de commodities, sem falhar.
Originalmente desenvolvido para ajudar a
melhorar a busca do Facebook, o Cassandra é
uma das muitas soluções de banco de dados
NoSQL.
Hive
Também um projeto Apache, o Hive é uma
estrutura de armazenamento de dados
construído em cima do Hadoop que fornece
ferramentas para permitir fácil sumarização de
dados, consultas adhoc e análises de grandes
conjuntos de dados. O Hive fornece uma
linguagem de query simples chamada HiveQL
que é baseada no SQL, permitindo aos
familiarizados com o código a desenvolver com
esses dados.
Hip Hop
Para economizar os recursos para seus
servidores, o Facebook desenvolveu o Hip
Hop, que transforma o código fonte PHP em
um C++ altamente otimizado. O Hip Hop se
tornou open source no início deste ano.
Scribe
O Facebook registra milhares de terabytes de
dados diariamente. Não é surpresa que outras
ferramentas não foram capazes de escalar para
esta capacidade, então o Facebook desenvolveu
o Scribe para registrar dados transmitidos em
tempo real para um grande número de
servidores.
Thrift
Atualmente um projeto de encubadora
Apache, o Thrift fornece um framework para
serviços escaláveis de linguagem desenvolvida
em C++, Java, Python, PHP, e Ruby.
Lembrando que, muitas das novas tecnologias
do Facebook começaram como “hacks,” e a
empresa está trabalhando não só para
desenvolver novas ferramentas, mas para
também incentivar seu desenvolvimento e uso
externo. Por enquanto poucas empresas têm as
necessidades massivas de armazenamento e
escala que o Facebook possui, e os esforços no
open source da empresa são para a construção
de um “modelo de colaboração sustentável” de
desenvolvimento.
IV. Outras coisas que ajudam o Facebook a
funcionar bem
Foram mencionados os softwares que
constituem o Facebook e o ajudam a escalar.
Mas operar um sistema tão grande é uma tarefa
complexa, por isso serão listadas outras coisas
que ajudam o Facebook a funcionar sem
problemas:
Lançamento gradual de novas
funcionalidades e execuções no escuro
O Facebook tem um sistema chamado de
“Gatekeeper” (porteiro) que permite que eles
rodem diferentes versões do sistema para
diferentes conjuntos de usuários. Ele permite
que o Facebook lance novas funcionalidades
gradualmente e que testes A/B sejam realizados
com usuários.
O “Gatekeeper” também é responsável por
realizar o que é chamado de “dark launches”
(lançamentos no escuro), que é a ativação de
elementos de uma nova funcionalidade antes de
ela ir pro ar. O torna-se em uma maneira de
realizar testes de carga do sistema antes de uma
funcionalidade ser oficialmente lançada.
Normalmente os “dark launches” são
realizados duas semanas antes do lançamento
oficial da funcionalidade.
Monitoramento do sistema em produção
O Facebook cuidadosamente monitora seu
sistema e o desempenho de cada função PHP
executada em ambiente de produção. Com isso
é possível projetar um perfil do sistema que
está no ar com a ajuda de uma ferramenta
chamada XHProf e identificar gargá-los ou
áreas que estão operando incorretamente.
Desativação gradual de recursos para
aumento de desempenho
Se o Facebook tiver algum problema de
desempenho, existe um grande número de
recursos não-críticos que podem ser
desativados para aumentar o desempenho de
funcionalidades vitais da rede social. Desta
forma, em uma situação de emergência, o
núcleo da rede social poderá continuar
funcionando normalmente.
E além do que foi mencionado, existem
diversos outros softwares envolvidos na
operação do Facebook. Neste artigo foram
destacadas as escolhas mais interessantes que o
Facebook fez.
V. Facebook e projetos open source
Antes de encerrar está parte do trabalho, é
importante mencionar o quanto o Facebook,
assim como outras grandes empresas de
Internet, apoia projetos open source. O
Facebook não apenas usa e contribui com
software open source como Linux,
Memcached, MySQL e Hadoop, como também
desenvolve internamente diversas ferramentas
que são disponibilizadas como projetos open
source.
Além de todas essas soluções e ferramentas
que fazem com que o Facebook fique cada dia
melhor e atraindo mais usuários, agora os
engenheiros e o fundador da empresa estão de
olho no ‘próximo bilhão’ de humanos
conectados, com isso, foi anunciado para o
segundo semestre de 2016, uma plataforma
para implantação de infraestrutura de telefonia
celular de baixo custo, voltada exatamente para
as regiões do planeta ainda sem nenhuma
conectividade.
Chamado de OpenCellular, trata-se de um
sistema de rede sem fio definida por software
que a empresa promete transformar em ‘open
source’, ou seja, de uso livre sem cobrança de
royalties. O OpenCellular é uma plataforma de
acesso sem fio desenhada para reduzir os custos
de implantação de redes de celular em locais
onde têm sido tradicionalmente difícil esse
acesso. Para tanto, o projeto envolve o design
de ferramentas, de hardware e software, de
forma a ser possível implantar uma rede
completa do equipamento físico ao software
que a opera. A decisão de tornar o uso dessa
tecnologia “livre” busca incitar interessados em
materializar a ideia em infraestruturas efetivas.
O Facebook planeja tornar o design de
hardware ‘open source’, juntamente com o
firmware e software de controle, para permitir
que operadoras de telecom, empreendedores,
OEMs e pesquisadores a construir,
implementar, instalar e operar infraestruturas
sem fio baseadas nessa plataforma.
Ainda segundo o Facebook, a plataforma é
capaz de suportar uma ampla variedade de
padrões de rede, de 2G ao LTE, ou até pontos
de acesso WiFi. Fazendo isso, qualquer um
pode customizar a plataforma para atender a
suas necessidades de conectividade e implantar
a rede de sua preferencia, tanto em áreas rurais
como urbanas.
A rede social é acessada por um bilhão de
usuários de todo o mundo todos os dias. Os
dados são referentes ao primeiro trimestre de
2016 e constam do balanço financeiro da
empresa, que também apontam o número de
adeptos de outros aplicativos, como os serviços
de bate-papo WhatsApp e Messenger, além da
rede social de fotos Instagram.
O número de usuários diários do Facebook
aumentou 16%, com a adesão das pessoas aos
aparelhos móveis. No ano passado, a rede
social comemorou ter conectado mais de bilhão
de usuários em um único dia, mas somente
neste trimestre esse nível de acesso foi
constante. Por mês, a média de usuários ativos
chegou a 1,65 bilhão, com aumento anual de
15%.
Instagram, WhatsApp e Messenger
Além das informações de acesso ao
Facebook, a rede social informou também a
quantidade de usuários de seus outros serviços
conectados. O WhatsApp chegou a 1 bilhão de
usuários, conforme antecipado em fevereiro
2016.
Com 900 milhões de usuários, o Messenger
está próximo de se tornar a terceira ferramenta
do Facebook a chegar a um bilhão de membros.
Já o Instagram tem 400 milhões de pessoas
abastecendo o app com fotos.
Vídeo ao vivo
O Facebook pontuou ainda que foi no
primeiro trimestre de 2016 que ampliou as
opções de recursos dos vídeos ao vivo e
começou a vender os óculos de realidade
virtual Oculus Rift.
VI. Apollo
Facebook e suas inovações sempre
atualizadas. Dessa vez a nova invenção foi o
Apollo, um banco de dados NoSQL similar ao
Paxos.
O que é NoSQL?
NoSQL (Not Only SQL - Não Somente SQL) é
um termo genérico para uma classe definida de
banco de dados não-relacionais que rompe uma
longa história de banco de dados relacionais
com propriedades ACID.
Tendências em arquiteturas de computadores,
como a computação na nuvem e a necessidade
crescente de prover serviços escaláveis, estão
pressionando bancos de dados numa direção
onde eles necessitam oferecer escalabilidade
horizontal. Bancos de dados NoSQL
armazenam os dados com técnicas que visam
atender a esse requisito. Há alguns exemplos
proeminentes de softwares de código fechado
que atendem estes requisitos, sendo alguns
deles o BigTable, do Google, IBM Cloudant e
o DynamoDB da Amazon. E alguns exemplos
de software open-source como Apache
Cassandra (originalmente desenvolvido para o
Facebook), Apache HBase, LinkedIn's e vários
outros.
O Apollo é um sistema de storage
hierárquico, onde todos os dados são divididos
em shards, muito semelhantes ao
funcionamento do Hbase, escrito em C++ e
construído sobre o RPC Apache Thrift 2.
O Apollo é um storage de baixa latência
online que utiliza armazenamento flash e
processamento em memória.
O modo que Apollo trabalha é bem diferente
do modelo de banco de dados orientado a
documento ou uma chave valor.
O Apollo primeiramente trabalha com
modificações em estrutura de dados,
permitindo que seja representado mapas, filas,
árvores, entre outras estruturas, usando
pequenas partes do sistemas de dados, algo
entre 1byte e 1 MB, indo a um tamanho total
que vai de 1MB até 10+PB, sendo assim, o
Apollo pode ser instalado em um mínimo de
três servidores até ser composto de uma
infraestrutura de milhares de nós.
Segundo componente deste banco NoSQL, é
a estrutura de Storage. Sendo assim, a gravação
do primeiro storage é baseada no RocksDB,
uma persistencia de Chave / Valor, construído
sobre o Google’s LevelBD. Uma explicação
importante é que o Facebook está usando essa
tecnologia para simular outras estruturas de
dados, já que o Apollo foi projetado para ser
um storage agnóstico e está sendo usado para
adicionar um suporte ao MySQL como
mecanismo de storage alternativo.
O terceiro componente do Apollo, é uma
API de cliente composta dos métodos read() e
write(). Toda operação que o Apollo executa
em Shard é atômica, assim, ele suporta a
criação de pré-condições e se estas estiverem
satisfeitas, ela retorna o resultado da operação.
Quarto componenente de Shard é o Fault
Tolerant State Machines (FTSMs), ele é um
componente utilizado, principalmente, pelo
código interno do sistema, mas também podem
ser utilizados pelo cliente.
Cada FTSM é atrelado a um Shard de modo
que, por exemplo, em um shard de três
máquinas, todas elas irão executar o mesmo
código simultaneamente. Com isso,
observamos que esses shards são capazes de
acessar o storage persistente, porém algo ainda
mais importante , é o fato que, caso um dos nós
falhe, o código continua sendo executado em
uma ordem adequada de execução nos demais
nós.
Com tudo, de modo geral, o Facebook está
diariamente estudando novos métodos e meios
para melhorar seu sistema e ainda o acesso dos
seus usuários, com novidade constantes para
atender à mais de 1 bilhão de usuários, com
isso, ele procura aplicações de storage in-
memory, tanto para aplicações novas, quanto
substituir sistemas legados de forma a realizar
uma comparação de performance em relação
aos sistemas existentes.
A empresa também está procurando utilizar o
Apollo como um sistema confiável de filas,
para envio de mensagens do Facebook para Ios,
Android e operadoras via SMS e também
potencialmente utilizá-lo para análises
estatísticas mais eficientes.
VII. Recente novidade
Agora o Facebook está com mais uma
novidade, sua presença também na área
cognitiva. Baseado em um projeto sem fins
lucrativos, no dia 04/10/2016, foi anunciado a
parceria das maiores empresas de tecnologia do
mundo, as quais possuem a chave para um dos
maiores bancos de dados do planeta,
enraizando seus dados nas suas aplicações para
Inteligência Artificial.
Qualquer empresa que tiver domínio dos seus
dados, efetivamente possui Inteligência
Artificial, o que significa que empresas como
Facebook, Amazon, Google, IBM e Microsoft,
possuem uma tonelada dessas informações.
As cinco empresas se reuniram para anunciar
o lançamento de uma nova parceria. Elas são
encarregadas por desenvolver pesquisas e
promover as melhores práticas de Inteligência
Artificial, por isso, irão se reunir com
frequência para discutir os avanços dessa
tecnologia. Vale lembrar que no dia a dia, as
equipes estão em constante competição para
desenvolver os melhores produtos e serviços
movidos com a inteligência da máquina, então
já podemos imaginar que coisas muito boas e
utilizáveis para nossa melhoria poderá
acontecer. Essa nova parceria parece vir com a
intenção de realmente promover uma mudança,
em vez de ser usada apenas para o mundo da
tecnologia. Eles querem usar uma licença
aberta para publicar pesquisas sobre o tema,
incluindo ética, inclusão e privacidade.
VIII. Conclusão
Com uma visão geral do que foi mostrado, ao
todo concluo que:
A infraestrutura do Facebook, cresceu
enormemente durante os anos e para isso, o
Facebook utiliza uma solução chamada de
‘Rack Desagregado’, que proporciona alta
flexibilidade em serviços que mudam com o
tempo. Por exemplo, a utilização de mais
servidores que trabalham com mais de uma
variável e como seus data centers, que são do
tamanho de um boing, criam petabytes de
dados.
Porém, sua infraestrutura vai muito além de
seus data centers e rede social, tendo em seu
campus um laboratório que além de
desenvolverem design para seus data centers, o
Facebook também investe pesado em software
e ferramentas open source, fazendo com que
sua escalabilidade aumente.
Esses softwares, na maioria das vezes, são
desenvolvidos como um complemento
melhorado de alguns softwares já utilizados,
fazendo com que atenda todas as suas
necessidades.
O Facebook também trabalha para
desenvolver uma série de ferramentas para
lidar com dados, em termos de armazanamento
e relacionado à entrega de conteúdo, a fim de
tornar o processamento de dados escalável e
análises mais fáceis. Dentre essas ferramentas,
o Facebook desenvolveu ferramentas de código
aberto para ajudar a lidar com grande
quantidade de dados e como modelo de
colaboração sustentável. Um dos softwares
mais importantes que o Facebook utiliza é o
Hadoop e o Hive, que foram mostrados durante
o trabalho, entre outros que tem grandes
importâncias em todo o processo.
E para finalizar, também foi citado o Apollo,
um banco de dados NoSQL, que é um sistema
de storage hieráquico de baixa latência online,
que utiliza armazenamento flash e
processamento em memória, fazendo com que
o Apollo seja um modelo de banco de dados
diferente do modelo orientado a documento ou
chave/valor.
O Apollo foi projetado para ser um storage
agnóstico usado para adicionar suporte ao
MySQL, com mecanismos de storage
alternativo, usando aplicações de storage in-
memory, tornando-se então, desenvolvido para
melhorar a performance em relação aos
sistemas existentes, como um sistema em filas
que seja confiável para envio de mensagens e
para análise de estatísticas mais eficiente.
Ainda sobre o Apollo, é importante entender
que o intuito não é eliminar bancos de dados
relacionais, mas oferecer uma alternativa, pois
durante muito tempo o modelo relacional foi
usado como "bala de prata" para todos os
problemas de persistência.
Em termos de capacidade de Hadoop, o
Facebook atingiu um limite extraordinário.
Recentemente, a empresa declarou-se
proprietária daquele que é provavelmente o
maior cluster Hadoop do mundo, com mais de
100 petabytes. E, no entanto, a empresa diz que
não é grande o suficiente
Referências
SANTOS, Fernanda. Facebook, Amazon,
Google, IBM e Microsoft se unem
para criar parceria histórica de Inteligência
Artifical; STARTUPI.
Disponível em:
<http://startupi.com.br/2016/09/facebook-
amazon-google-ibm-e-microsoft-se-unem-
para-criar-parceria-historico-de-inteligencia-
artifical/>.
Último acesso em: 12/12/2016
GUILHERME, Paulo. Stephen Hawking teme
que robôs possam evoluir rápido demais e nos
matar; TECMUNDO.
Disponível em:
<https://www.tecmundo.com.br/inteligencia-
artificial/106649-stephen-hawking-teme-robos-
possam-evoluir-rapido-
matar.htm?utm_source=tecmundo.com.br&ut
m_medium=internas&utm_campaign=saibama
is>.
Último acesso em: 12/12/2016
REDAÇÃO, canaltech. Conheça a
infraestrutura por trás da nova ferramenta de
busca do Facebook; CANALTECH.
Disponível em:
<https://canaltech.com.br/noticia/facebook/Co
nheca-a-infraestrutura-por-tras-da-nova-
ferramenta-de-busca-do-Facebook/>.
Último acesso em: 12/12/2016
LIMA, Gustavo. Guia Sobre a Infraestrutura do
Facebook; CORUJADETI.
Disponível em:
<http://blog.corujadeti.com.br/guia-sobre-a-
infraestrutura-do-facebook/>.
Último acesso em : 12/12/2016
BARBOLO, Rafael. Explorando o software
por trás do Facebook, a maior rede social do
mundo; BITABIT.
Disponível em:
<http://www.bitabit.eng.br/2010/07/28/explora
ndo-o-software-por-tras-do-facebook-a-maior-
rede-social-do-mundo/ >.
Último acesso em: 12/12/2016
HUMBLE, Charles. Facebook anuncia o
Apollo, um novo banco de dados NoSQL para
armazenamento online de baixa latência;
INFOQ.
Disponível em:
<https://www.infoq.com/br/news/2014/08/face
book-apollo >.
Último acesso em: 12/12/2016
EWBANK, Kay. Facebook Apollo NoSQL
Database; I-PROGRAMMER.
Disponível em:
<http://www.i-programmer.info/news/84-
database/7441-facebook-apollo-nosql-
database.html >.
Último acesso em: 12/12/2016
CAMPBELL-DOLLAGHAN, Kelsey. Como o
Facebook está repensando a infraestrutura
online usada por um bilhão de pessoas;
GIZMODO.
Disponível em:
<http://gizmodo.uol.com.br/facebook-
hardware/>.
Último acesso em: 12/12/2016
STRICKLAND, Jonathan. Fatos e números
sobre o Facebook; TECNOLOGIA.
Disponível em:
<http://tecnologia.hsw.uol.com.br/facebook5.ht
m >.
Último acesso em: 12/12/2016
A ENCICLOPÉDIA LIVRE, Wikipédia.
NoSQL; WIKIPEDIA.
Disponível em:
<https://pt.wikipedia.org/wiki/NoSQL>.
Último acesso em: 12/12/2016
BORTHAKUR, Dhruba. Olhando para o
código por trás de nossos três usos do Apache
Hadoop; GOOGLEUSERCONTENT.
Disponível em:
<https://translate.googleusercontent.com/transl
ate_c?depth=1&hl=pt-
BR&prev=search&rurl=translate.google.com.b
r&sl=en&u=https://www.facebook.com/notes/f
acebook-engineering/looking-at-the-code-
behind-our-three-uses-of-apache-
hadoop/468211193919/&usg=ALkJrhjPK6OB
NfK4Fk9zoH7pH2-Wz5iVRg >.
Último acesso em: 12/12/2016
LAMPIT, Andrew. Facebook empurra os
limites do Hadoop; CIO.
Disponível em:
<http://cio.com.br/tecnologia/2012/11/05/faceb
ook-empurra-os-limites-do-hadoop/ >.
Último acesso em: 12/12/2016
Muito obrigada pela atenção e qualquer dúvida
estarei a disposição para esclarecimentos.
Atenciosamente, Gabriella Lima de Carvalho.

Mais conteúdo relacionado

Destaque

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Artigo científico infraestrutura do facebook - gabriella lima de carvalho - 14.12.2016

  • 1. Infraestrutura do Facebook Gabriella Lima de Carvalho Análise e Desenvolvimento de Sistemas Universidade Estácio de Sá gabriella.lima.carvalho@gmail.com Abstract – The Facebook's infrastructure goes far beyond there data centers and social network, the campus has a laboratory that not only develops design for there data centers, Facebook also invests heavily in open source software and tools, increasing there scalability, working to develop a range of data-handling tools in terms of storage and content delivery in order to make data processing scalable and analysis easier. Keywords- infrastructure, Storage, software, scalability, database, NoSQL, MySQL. I. Infraestrutura do Facebook Como todos sabemos, o Facebook é uma grande empresa voltada para redes sociais, a maior do mundo atualmente, com isso, descobrimos informações importantes relacionado à essa grande empresa. Primeiramente irei comentar sobre sua infraestrutura, o Facebook utiliza uma ferramenta muito interessante, que se chama Busca Social (Graph Search), que tem como ideia, aprofundar os resultados das pesquisas voltadas para pessoas, lugares, fotos e interesses dos usuários. As pesquisas podem ser feitas à la Google, porém são limitadas ao conteúdo presente no Facebook. Para tudo isso acontecer de forma eficaz, existe uma solução inteligente capaz de processar tanta informação; essa solução chama-se ‘Rack Desagregado’. Porém, há uma controvérsia sobre essa solução, a qual relata que a ferramenta Graph Search unida com um poderoso sistema de pesquisa, tenha encantado os cibercriminosos e tenha se tornado uma grande ameaça à segurança de seus usuários. Um elemento agravante, é o fato de usuários não estarem cientes do perigo ou simplesmente não saberem como usar os controles de segurança e privacidade para navegar no Facebook. Para resolver esse problema, é altamente aconselhável marcar a opção de navegação segura (HTTPS), tomar cuidado com as “pegadinhas virtuais” e proteger ao máximo informações como fotos, postagens no mural, comentários e marcações, tornando tudo isso o mais privado possível e claro, definir o público que pode visualizar cada conteúdo pessoal na rede. Porém, ao navegar na internet, sabemos que estamos sujeitos a qualquer perigo, o que devemos fazer é tomar muito cuidado ao acessar um link ou expor alguma informação. Antes de encontrar essa solução chamada de ‘Rack Desagregado’, o Facebook sofria com a falta de flexibilidade, especialmente com serviços cujas necessidades mudam com o tempo, ou seja, os servidores não trabalhavam bem com mais de uma variável. Com isso, a Busca Social começou a trabalhar com 20 servidores Compute, 8 módulos flash, 2 módulos RAM e um módulo de armazenamento, para 3TB de memória RAM e 30TB de memória flash, tendo como ideia, sempre aumentar o poder computacional ao longo do tempo. Contando que hoje (2016), de acordo com um funcionário do Facebook, a empresa se apóia em aproximadamente 200 servidores memcached para produção (operação diária do site) e um pouco mais para propósitos desenvolvimentistas. OBS: Memcached quer dizer memória cache, um método de armazenar dados temporariamente. Um servidor de memória cache armazena informação temporariamente na memória do servidor, reduzindo a necessidade de fazer uma busca na base de dados pela informação, isso reduz o tempo levado entre um pedido de informação e a entrega daquele dado.
  • 2. II. A super infraestrutura do Facebook para conectar o mundo Os Data Centers são uma grande infraestrutura essencial para quem se conecta à internet e existe uma parte grande do Facebook nessa iniciativa, trabalhando em sistemas de infraestrutura que movem seu site. Com isso, o Facebook também infrenta problemas de engenharia em seus data centers, em parte, devido ao seu tamanho, com mais de 1 bilhão de usuários ativos mensalmente, criando petabytes de dados. Para resolver esse problema, o Facebook contratou arquitetos para projetar data centers inspirados em mobília modular, que podem ser montados de maneira mais rápida, barata e eficiente do que os convencionais, a empresa também evita hardware comercial, preferindo montar suas próprias máquinas, tornando tudo isso aberto para quem quiser copiá-lo. O Facebook também tem uma fazenda eólica para gerar a própria energia. Armados com um laboratório no campus do Facebook, o grupo consegue criar protótipos das suas ideias e mergulhar nos problemas de design em um data center. Par isso, eles usam máquinas de dobrar placas de metal, impressoras 3D e até placas de madeira para modelagem, tendo então, racks articulados inspirados em mecanismos de abertura de garagem. Algo interesse é que dentro do data center, todo mundo da equipe passa pela experiência de fazer reparos de manutenção, estudar a cadeia de suprimentos e trabalhar próximo dos desenvolvedores de software, isso para evitar a situação comum de que os dois lados soft e hard, existam em um vácuo até que sejam misturados. III. Explorando a maior rede social do mundo O tamanho do cluster data warehouse do Facebook têm aumentado consideravelmente ao longo dos últimos anos. Sendo usados várias peças de software de fonte aberta no armazém de dados, incluindo Apache Hadoop , Apache Hive , HBase , Apache Thrift e Facebook Scribe. Juntos, eles mantem este motor de processamento de dados. Clusters de armazenamento de dados são em grande parte os sistemas de processamento em lote, onde a ênfase está na escalabilidade e rendimento. Com mais de um bilhão de usuários e requisitos para analisar com mais de 105 terabytes a cada 30 minutos, o apetite do Facebook por dados atingiu proporções descomunais. A Hadoop é a ferramenta chave usada pela rede social, e não simplesmente para análise, mas como um motor para muitos recursos oferecidos por ela, incluindo mensagens. Essa carga de trabalho monstruosa levou a empresa a lançar o seu projeto Prisma, que suporta dados distribuídos geograficamente em diversas instalações Hadoop. O Projeto Prisma é a resposta da empresa para alcançar novos patamares de capacidade Hadoop. Com o Prisma, uma camada de abstração lógica é adicionada para que um cluster Hadoop possa ser executado através de vários centros de dados, removendo efetivamente os limites de capacidade. Apache Hadoop está sendo usado em três grandes tipos de sistemas: 1 - Como um armazém para análise da web, como o armazenamento para um banco de dados distribuído e para backups de banco de dados MySQL. Como uso de provimento de aplicação em tempo real, sendo assim, o Apache Hadoop foi aumentado para fazer latências pequenas e tempos de resposta mais rápido. Um dos aplicativos do Facebook, o Mensseger usa um banco de dados distribuído chamado Apache HBase para armazenar dados em clusters Apache Hadoop. 2 - Outro caso de uso é recolher clique de registros em tempo quase real de nossos servidores web e transmitir-lhes diretamente em nossos clusters Hadoop. Usamos Scribe para tornar isso mais fácil. Scribe é bem integrado para armazenar dados diretamente no
  • 3. Apache Hadoop. A maioria destes grupos em tempo real são menores em tamanho, algo em torno de cem nós de cada um. 3 – E o último, é o uso para arquivamento de médio prazo de bancos de dados MySQL. Esta solução fornece backup e recuperação rápida de dados armazenados no Hadoop File System e reduz nossos custos de manutenção e implantação de conjuntos de dados de tamanho de arquivo petabyte. Como funciona o Hadoop: 1) AvatarNode Tanto a base de código de armazenamento e a base de código em tempo real contem o Hadoop AvatarNode, de alta disponibilidade para um Hadoop Distributed File System (HDFS). O AvatarNode é um invólucro em torno do software Hadoop NameNode. Há dois AvatarNodes em um único cluster HDFS: One atua como o primário e o outro como um hot standby. O AvatarNode primário e o AvatarNode de espera são coordenados via Apache ZooKeeper . O administrador pode alternar o avatar de cada um desses nós, permitindo-nos para implantar um novo software para o cluster sem incorrer em tempo de inatividade. O tempo de failover é de alguns segundos para grandes clusters. Este patch foi contribuído volta ao Apache Hadoop no HDFS- 976. 2) RaidNode A base de código tem HDFS-RAID que usa arquivos de paridade para diminuir o uso do armazenamento. Hadoop, por padrão, mantém três cópias de dados. HDFS-RAID cria blocos de paridade de blocos de dados, permitindo-nos armazenar menos cópias de dados, mas mantendo a mesma probabilidade de perda de dados. Com isso, o Facebook implanta o gerador XOR de paridade, poupando cerca de 5 petabytes de armazenamento bruto na implantação de produção. Também há uma variante, Reed- Solomon, que gera blocos de paridade, isto permite armazenar ainda menos cópias de dados. Recurso atribuído para Apache Hadoop e pode ser encontrado no sub-projeto Hadoop MapReduce. 3) Anexa A base de código em tempo real tem suporte completo para as operações de arquivo de anexação HDFS confiável e é um requisito básico para HBase para ser capaz de armazenar índices de forma confiável no HDFS. As versões anteriores do Apache HBase eram suscetíveis à perda de dados, porque HDFS não tem uma API para sincronizar dados para armazenamento estável. Por isso, foi adicionado uma nova interface para Apache Hadoop para sincronizar dados de forma confiável para o armazenamento estável. Esta é a primeira instância conhecida de Apache Hadoop em um ambiente de produção que suporta a perda de dados zero, enquanto usando Apache HBase. Hive - Um armazém de dados petabyte Scale usando Hadoop Hive é uma fonte aberta de petabytes de armazenamento escalável baseado em Hadoop, que foi desenvolvido pela equipe de Infraestrutura de Dados no Facebook. O que inspirou a criação do Hive, foi o fato de ser preciso melhorar a capacidade de consulta do Hadoop, trazendo os conceitos familiares de tabelas, colunas, divisórias e um subconjunto de SQL para o mundo desestruturado do Hadoop, mantendo a extensibilidade e flexibilidade do Hadoop. Sendo muito utilizada para tarefas simples de compactação, inteligência de negócios e aprendizado de máquina e muitas outras aplicações. Nas seções seguintes, é fornecido mais detalhes sobre a arquitetura e capacidades Hive. Modelo de dados Hive organiza dados em tabelas e partições. Os dados para uma determinada data entram em uma partição para essa data. Um esquema de particionamento boa permite o Hive podar
  • 4. os dados ao processar uma consulta e que tem um impacto direto sobre o quão rápido um resultado da consulta pode ser produzido. Um esquema de particionamento bom também ajuda no gerenciamento de dados e abre possibilidades para arquivar dados mais antigos para o armazenamento mais barato, mantendo os dados mais recentes sobre o cluster principal. O esquema de particionamento pode ter várias colunas, bem como no caso em que cada coluna de particionamento mapeia para um nível dentro do espaço de nome do diretório. Dentro de cada partição os dados podem ser bucketed em arquivos individuais. O bucketing pode ser aleatório ou hash em uma determinada coluna. Configurando um bom esquema bucketing ajuda na rápida amostragem de dados que pode ser usado para análise rápida e verificação de dados em dados de amostra. Arquitetura de Sistemas e Componentes Hive compreende os seguintes componentes principais: Metastore: Para armazenar os dados de meta. Compilador de consulta e mecanismo de execução: Para converter consultas SQL para uma sequência de mapa / reduzir postos de trabalho que são executadas em Hadoop. SerDe e ObjectInspectors: as interfaces programáveis e implementações de formatos de dados comuns. UDF e UDAF: as interfaces programáveis e implementações para funções definidas pelo usuário (escalar e funções de agregação). Clientes: cliente de linha de comando similar à linha de comando MySQL e uma interface web. O metastore armazena as informações sobre as mesas, divisórias, as colunas nas tabelas, os SerDe usados para serializar e desserializar a partir de partições, os locais dos dados para essas unidades dentro hdfs, atributos bucketization etc. Ele também oferece uma loja de base, o valor de chave que pode ser usada para armazenar qualquer tipo de meta-dados com estes objetos. O compilador de consulta usa as informações armazenadas no metastore para converter consultas SQL em uma seqüência de mapa / reduzir postos de trabalho. Hive também suporta construções de consulta mais avançadas como cláusula FROM, sub consultas e UNION ALL. O compilador também cria planos inteligentes através de uma série de otimizações, tais como: Pushdown de predicado Combinando mapa múltipla / reduzir postos de trabalho para único mapa / reduzir empregos Diminui número de Coluna Agregações Mapa do lado Mapa-side Uma vez que o plano é gerado o compilador passa para o mecanismo de execução que executa o mapa / reduzir postos de trabalho, lançando-os ao cluster Hadoop na ordem de suas dependências. Juntos, todos esses componentes trabalham para fornecer uma poderosa estrutura e linguagem para gerenciar e consultar dados. Além dos componentes de consulta no âmbito linguagem também fornece capacidades normais DDL como criar, apagar e modificar tabelas e partições e descrevendo e mostrando tabelas também. Formatos de dados, tipos definidos pelo usuário e funções definidas pelo usuário Hive é flexível o suficiente para analisar diferentes formatos de dados e tipos de dados através de suas interfaces SerDe e ObjectInspector Java. Ele fornece alguns tipos construído em implementações dessas interfaces para formatos de dados, tais como arquivos de texto delimitados, arquivos CSV e alguns formatos binários eficientes. No entanto, se os dados não estiverem em qualquer um destes formatos (por exemplo, pode ser dados XML ou em algum formato proprietário que é utilizado por outras aplicações), é fácil de escrever uma classe de implementação em conformidade da interface SerDe.
  • 5. Extensibilidade e escrever seu próprio mapa/ Reduzir Hive também proporciona uma grande flexibilidade no apoio a cálculos que podem não se encaixar totalmente o modelo de processamento de SQL. Aprendizagem de máquina de geração do modelo, a construção de diferentes tipos de índices e muitas outras aplicações não são facilmente exprimível e em SQL e Hive é capaz de suportar tais aplicações, fornecendo construções de linguagem que permitem que o usuário conecte seus próprios scripts de transformação em uma instrução SQL. Isto é feito através do MAP, REDUZIR. Esta flexibilidade permite tipo de análise não SQL que tem sido extensivamente utilizada no Facebook para uma variedade de tarefas. O Facebook cresce a passos incríveis. Sua base de usuários aumenta quase que exponencialmente, até final de 2015 atingiu 1,65 bilhão de usuários e tem mantido uma taxa de cerca de 100 milhões de novos usuários a cada 6 meses. Com isso, o Facebook depende muito de escalabilidade para enfrentar os desafios diários com o qual tem que lidar, pois os números são bem grandes. A seguir um pouco sobre o que estou dizendo: O Facebook serve mais de 550 bilhões de visualizações de páginas por mês Há mais fotos no Facebook do que em todos os outros sites de fotos juntos Mais de 3 bilhões de fotos são visualizadas por dia, mais de 25 bilhões de tipos de conteúdo (atualizações de status, comentários, etc) são compartilhados todo mês. Com mais de 60 mil servidores Até final de 2015, atingiu 1,65 bilhões de usuários Para suportar todos esses números, o Facebook precisa de escalabilidade, então, vamos acompanhar o que os engenheiros estão desenvolvendo! Utilização de Softwares para escalar A infraestrutura de software que o Facebook usa pode ser vista como um site LAMP, mas com melhorias e extensões de vários serviços. Por exemplo: O Facebook usa PHP, mas tem um compilador que permite que o sistema execute código nativo nos servidores web, aumentando significativamente seu desempenho; O Facebook usa Linux, porém, Linux otimizado para garantir alta vazão de rede; Usa MySQL, mas principalmente para persistencia de chaves-valores(Hashes), movendo lógicas de consultas e JOINS para a camada de aplicação dos servidores web em que otimizações são mais fáceis de implementar, usando por exemplo caches de memória; Por fim, há sistemas customizados como o Haystack, um objeto de armazenamento altamente escalável usado para servir a imensa quantidade de fotos do Facebook, o Scribe, um sistema de loggins (registro de ações) que consegue operar na escala do Facebook. Durante o crescimento do Facebook, a empresa tem trabalhado para desenvolver uma série de ferramentas para lidar com esses dados, tanto em termos de armazenamento quanto na entrega de conteúdo, a qual muitas delas se tornaram open-source. Mas o uso do open source pelo Facebook vai muito além do LAMP (ou até mesmo, além do LAMP e também do Memcached). A empresa também criou e lançou vários projetos de código aberto e participa ativamente de outros, talvez o mais notável sendo o Hadoop. Algumas das ferramentas de código aberto do Facebook que ajudaram a lidar com a enorme quantidade de dados: Cassandra O projeto da Apache Software Foundation, Cassandra, é um sistema de armazenamento distribuído para gerenciamento de dados estruturados que é projetado para escalar uma grande quantidade de dados entre muitos servidores de commodities, sem falhar. Originalmente desenvolvido para ajudar a melhorar a busca do Facebook, o Cassandra é uma das muitas soluções de banco de dados NoSQL.
  • 6. Hive Também um projeto Apache, o Hive é uma estrutura de armazenamento de dados construído em cima do Hadoop que fornece ferramentas para permitir fácil sumarização de dados, consultas adhoc e análises de grandes conjuntos de dados. O Hive fornece uma linguagem de query simples chamada HiveQL que é baseada no SQL, permitindo aos familiarizados com o código a desenvolver com esses dados. Hip Hop Para economizar os recursos para seus servidores, o Facebook desenvolveu o Hip Hop, que transforma o código fonte PHP em um C++ altamente otimizado. O Hip Hop se tornou open source no início deste ano. Scribe O Facebook registra milhares de terabytes de dados diariamente. Não é surpresa que outras ferramentas não foram capazes de escalar para esta capacidade, então o Facebook desenvolveu o Scribe para registrar dados transmitidos em tempo real para um grande número de servidores. Thrift Atualmente um projeto de encubadora Apache, o Thrift fornece um framework para serviços escaláveis de linguagem desenvolvida em C++, Java, Python, PHP, e Ruby. Lembrando que, muitas das novas tecnologias do Facebook começaram como “hacks,” e a empresa está trabalhando não só para desenvolver novas ferramentas, mas para também incentivar seu desenvolvimento e uso externo. Por enquanto poucas empresas têm as necessidades massivas de armazenamento e escala que o Facebook possui, e os esforços no open source da empresa são para a construção de um “modelo de colaboração sustentável” de desenvolvimento. IV. Outras coisas que ajudam o Facebook a funcionar bem Foram mencionados os softwares que constituem o Facebook e o ajudam a escalar. Mas operar um sistema tão grande é uma tarefa complexa, por isso serão listadas outras coisas que ajudam o Facebook a funcionar sem problemas: Lançamento gradual de novas funcionalidades e execuções no escuro O Facebook tem um sistema chamado de “Gatekeeper” (porteiro) que permite que eles rodem diferentes versões do sistema para diferentes conjuntos de usuários. Ele permite que o Facebook lance novas funcionalidades gradualmente e que testes A/B sejam realizados com usuários. O “Gatekeeper” também é responsável por realizar o que é chamado de “dark launches” (lançamentos no escuro), que é a ativação de elementos de uma nova funcionalidade antes de ela ir pro ar. O torna-se em uma maneira de realizar testes de carga do sistema antes de uma funcionalidade ser oficialmente lançada. Normalmente os “dark launches” são realizados duas semanas antes do lançamento oficial da funcionalidade. Monitoramento do sistema em produção O Facebook cuidadosamente monitora seu sistema e o desempenho de cada função PHP executada em ambiente de produção. Com isso é possível projetar um perfil do sistema que está no ar com a ajuda de uma ferramenta chamada XHProf e identificar gargá-los ou áreas que estão operando incorretamente. Desativação gradual de recursos para aumento de desempenho Se o Facebook tiver algum problema de desempenho, existe um grande número de recursos não-críticos que podem ser desativados para aumentar o desempenho de funcionalidades vitais da rede social. Desta forma, em uma situação de emergência, o núcleo da rede social poderá continuar funcionando normalmente.
  • 7. E além do que foi mencionado, existem diversos outros softwares envolvidos na operação do Facebook. Neste artigo foram destacadas as escolhas mais interessantes que o Facebook fez. V. Facebook e projetos open source Antes de encerrar está parte do trabalho, é importante mencionar o quanto o Facebook, assim como outras grandes empresas de Internet, apoia projetos open source. O Facebook não apenas usa e contribui com software open source como Linux, Memcached, MySQL e Hadoop, como também desenvolve internamente diversas ferramentas que são disponibilizadas como projetos open source. Além de todas essas soluções e ferramentas que fazem com que o Facebook fique cada dia melhor e atraindo mais usuários, agora os engenheiros e o fundador da empresa estão de olho no ‘próximo bilhão’ de humanos conectados, com isso, foi anunciado para o segundo semestre de 2016, uma plataforma para implantação de infraestrutura de telefonia celular de baixo custo, voltada exatamente para as regiões do planeta ainda sem nenhuma conectividade. Chamado de OpenCellular, trata-se de um sistema de rede sem fio definida por software que a empresa promete transformar em ‘open source’, ou seja, de uso livre sem cobrança de royalties. O OpenCellular é uma plataforma de acesso sem fio desenhada para reduzir os custos de implantação de redes de celular em locais onde têm sido tradicionalmente difícil esse acesso. Para tanto, o projeto envolve o design de ferramentas, de hardware e software, de forma a ser possível implantar uma rede completa do equipamento físico ao software que a opera. A decisão de tornar o uso dessa tecnologia “livre” busca incitar interessados em materializar a ideia em infraestruturas efetivas. O Facebook planeja tornar o design de hardware ‘open source’, juntamente com o firmware e software de controle, para permitir que operadoras de telecom, empreendedores, OEMs e pesquisadores a construir, implementar, instalar e operar infraestruturas sem fio baseadas nessa plataforma. Ainda segundo o Facebook, a plataforma é capaz de suportar uma ampla variedade de padrões de rede, de 2G ao LTE, ou até pontos de acesso WiFi. Fazendo isso, qualquer um pode customizar a plataforma para atender a suas necessidades de conectividade e implantar a rede de sua preferencia, tanto em áreas rurais como urbanas. A rede social é acessada por um bilhão de usuários de todo o mundo todos os dias. Os dados são referentes ao primeiro trimestre de 2016 e constam do balanço financeiro da empresa, que também apontam o número de adeptos de outros aplicativos, como os serviços de bate-papo WhatsApp e Messenger, além da rede social de fotos Instagram. O número de usuários diários do Facebook aumentou 16%, com a adesão das pessoas aos aparelhos móveis. No ano passado, a rede social comemorou ter conectado mais de bilhão de usuários em um único dia, mas somente neste trimestre esse nível de acesso foi constante. Por mês, a média de usuários ativos chegou a 1,65 bilhão, com aumento anual de 15%. Instagram, WhatsApp e Messenger Além das informações de acesso ao Facebook, a rede social informou também a quantidade de usuários de seus outros serviços conectados. O WhatsApp chegou a 1 bilhão de usuários, conforme antecipado em fevereiro 2016. Com 900 milhões de usuários, o Messenger está próximo de se tornar a terceira ferramenta do Facebook a chegar a um bilhão de membros. Já o Instagram tem 400 milhões de pessoas abastecendo o app com fotos. Vídeo ao vivo O Facebook pontuou ainda que foi no primeiro trimestre de 2016 que ampliou as opções de recursos dos vídeos ao vivo e começou a vender os óculos de realidade virtual Oculus Rift.
  • 8. VI. Apollo Facebook e suas inovações sempre atualizadas. Dessa vez a nova invenção foi o Apollo, um banco de dados NoSQL similar ao Paxos. O que é NoSQL? NoSQL (Not Only SQL - Não Somente SQL) é um termo genérico para uma classe definida de banco de dados não-relacionais que rompe uma longa história de banco de dados relacionais com propriedades ACID. Tendências em arquiteturas de computadores, como a computação na nuvem e a necessidade crescente de prover serviços escaláveis, estão pressionando bancos de dados numa direção onde eles necessitam oferecer escalabilidade horizontal. Bancos de dados NoSQL armazenam os dados com técnicas que visam atender a esse requisito. Há alguns exemplos proeminentes de softwares de código fechado que atendem estes requisitos, sendo alguns deles o BigTable, do Google, IBM Cloudant e o DynamoDB da Amazon. E alguns exemplos de software open-source como Apache Cassandra (originalmente desenvolvido para o Facebook), Apache HBase, LinkedIn's e vários outros. O Apollo é um sistema de storage hierárquico, onde todos os dados são divididos em shards, muito semelhantes ao funcionamento do Hbase, escrito em C++ e construído sobre o RPC Apache Thrift 2. O Apollo é um storage de baixa latência online que utiliza armazenamento flash e processamento em memória. O modo que Apollo trabalha é bem diferente do modelo de banco de dados orientado a documento ou uma chave valor. O Apollo primeiramente trabalha com modificações em estrutura de dados, permitindo que seja representado mapas, filas, árvores, entre outras estruturas, usando pequenas partes do sistemas de dados, algo entre 1byte e 1 MB, indo a um tamanho total que vai de 1MB até 10+PB, sendo assim, o Apollo pode ser instalado em um mínimo de três servidores até ser composto de uma infraestrutura de milhares de nós. Segundo componente deste banco NoSQL, é a estrutura de Storage. Sendo assim, a gravação do primeiro storage é baseada no RocksDB, uma persistencia de Chave / Valor, construído sobre o Google’s LevelBD. Uma explicação importante é que o Facebook está usando essa tecnologia para simular outras estruturas de dados, já que o Apollo foi projetado para ser um storage agnóstico e está sendo usado para adicionar um suporte ao MySQL como mecanismo de storage alternativo. O terceiro componente do Apollo, é uma API de cliente composta dos métodos read() e write(). Toda operação que o Apollo executa em Shard é atômica, assim, ele suporta a criação de pré-condições e se estas estiverem satisfeitas, ela retorna o resultado da operação. Quarto componenente de Shard é o Fault Tolerant State Machines (FTSMs), ele é um componente utilizado, principalmente, pelo código interno do sistema, mas também podem ser utilizados pelo cliente. Cada FTSM é atrelado a um Shard de modo que, por exemplo, em um shard de três máquinas, todas elas irão executar o mesmo código simultaneamente. Com isso, observamos que esses shards são capazes de acessar o storage persistente, porém algo ainda mais importante , é o fato que, caso um dos nós falhe, o código continua sendo executado em uma ordem adequada de execução nos demais nós. Com tudo, de modo geral, o Facebook está diariamente estudando novos métodos e meios para melhorar seu sistema e ainda o acesso dos seus usuários, com novidade constantes para atender à mais de 1 bilhão de usuários, com isso, ele procura aplicações de storage in- memory, tanto para aplicações novas, quanto substituir sistemas legados de forma a realizar uma comparação de performance em relação aos sistemas existentes. A empresa também está procurando utilizar o Apollo como um sistema confiável de filas,
  • 9. para envio de mensagens do Facebook para Ios, Android e operadoras via SMS e também potencialmente utilizá-lo para análises estatísticas mais eficientes. VII. Recente novidade Agora o Facebook está com mais uma novidade, sua presença também na área cognitiva. Baseado em um projeto sem fins lucrativos, no dia 04/10/2016, foi anunciado a parceria das maiores empresas de tecnologia do mundo, as quais possuem a chave para um dos maiores bancos de dados do planeta, enraizando seus dados nas suas aplicações para Inteligência Artificial. Qualquer empresa que tiver domínio dos seus dados, efetivamente possui Inteligência Artificial, o que significa que empresas como Facebook, Amazon, Google, IBM e Microsoft, possuem uma tonelada dessas informações. As cinco empresas se reuniram para anunciar o lançamento de uma nova parceria. Elas são encarregadas por desenvolver pesquisas e promover as melhores práticas de Inteligência Artificial, por isso, irão se reunir com frequência para discutir os avanços dessa tecnologia. Vale lembrar que no dia a dia, as equipes estão em constante competição para desenvolver os melhores produtos e serviços movidos com a inteligência da máquina, então já podemos imaginar que coisas muito boas e utilizáveis para nossa melhoria poderá acontecer. Essa nova parceria parece vir com a intenção de realmente promover uma mudança, em vez de ser usada apenas para o mundo da tecnologia. Eles querem usar uma licença aberta para publicar pesquisas sobre o tema, incluindo ética, inclusão e privacidade. VIII. Conclusão Com uma visão geral do que foi mostrado, ao todo concluo que: A infraestrutura do Facebook, cresceu enormemente durante os anos e para isso, o Facebook utiliza uma solução chamada de ‘Rack Desagregado’, que proporciona alta flexibilidade em serviços que mudam com o tempo. Por exemplo, a utilização de mais servidores que trabalham com mais de uma variável e como seus data centers, que são do tamanho de um boing, criam petabytes de dados. Porém, sua infraestrutura vai muito além de seus data centers e rede social, tendo em seu campus um laboratório que além de desenvolverem design para seus data centers, o Facebook também investe pesado em software e ferramentas open source, fazendo com que sua escalabilidade aumente. Esses softwares, na maioria das vezes, são desenvolvidos como um complemento melhorado de alguns softwares já utilizados, fazendo com que atenda todas as suas necessidades. O Facebook também trabalha para desenvolver uma série de ferramentas para lidar com dados, em termos de armazanamento e relacionado à entrega de conteúdo, a fim de tornar o processamento de dados escalável e análises mais fáceis. Dentre essas ferramentas, o Facebook desenvolveu ferramentas de código aberto para ajudar a lidar com grande quantidade de dados e como modelo de colaboração sustentável. Um dos softwares mais importantes que o Facebook utiliza é o Hadoop e o Hive, que foram mostrados durante o trabalho, entre outros que tem grandes importâncias em todo o processo. E para finalizar, também foi citado o Apollo, um banco de dados NoSQL, que é um sistema de storage hieráquico de baixa latência online, que utiliza armazenamento flash e processamento em memória, fazendo com que o Apollo seja um modelo de banco de dados diferente do modelo orientado a documento ou chave/valor. O Apollo foi projetado para ser um storage agnóstico usado para adicionar suporte ao MySQL, com mecanismos de storage alternativo, usando aplicações de storage in- memory, tornando-se então, desenvolvido para melhorar a performance em relação aos sistemas existentes, como um sistema em filas
  • 10. que seja confiável para envio de mensagens e para análise de estatísticas mais eficiente. Ainda sobre o Apollo, é importante entender que o intuito não é eliminar bancos de dados relacionais, mas oferecer uma alternativa, pois durante muito tempo o modelo relacional foi usado como "bala de prata" para todos os problemas de persistência. Em termos de capacidade de Hadoop, o Facebook atingiu um limite extraordinário. Recentemente, a empresa declarou-se proprietária daquele que é provavelmente o maior cluster Hadoop do mundo, com mais de 100 petabytes. E, no entanto, a empresa diz que não é grande o suficiente Referências SANTOS, Fernanda. Facebook, Amazon, Google, IBM e Microsoft se unem para criar parceria histórica de Inteligência Artifical; STARTUPI. Disponível em: <http://startupi.com.br/2016/09/facebook- amazon-google-ibm-e-microsoft-se-unem- para-criar-parceria-historico-de-inteligencia- artifical/>. Último acesso em: 12/12/2016 GUILHERME, Paulo. Stephen Hawking teme que robôs possam evoluir rápido demais e nos matar; TECMUNDO. Disponível em: <https://www.tecmundo.com.br/inteligencia- artificial/106649-stephen-hawking-teme-robos- possam-evoluir-rapido- matar.htm?utm_source=tecmundo.com.br&ut m_medium=internas&utm_campaign=saibama is>. Último acesso em: 12/12/2016 REDAÇÃO, canaltech. Conheça a infraestrutura por trás da nova ferramenta de busca do Facebook; CANALTECH. Disponível em: <https://canaltech.com.br/noticia/facebook/Co nheca-a-infraestrutura-por-tras-da-nova- ferramenta-de-busca-do-Facebook/>. Último acesso em: 12/12/2016 LIMA, Gustavo. Guia Sobre a Infraestrutura do Facebook; CORUJADETI. Disponível em: <http://blog.corujadeti.com.br/guia-sobre-a- infraestrutura-do-facebook/>. Último acesso em : 12/12/2016 BARBOLO, Rafael. Explorando o software por trás do Facebook, a maior rede social do mundo; BITABIT. Disponível em: <http://www.bitabit.eng.br/2010/07/28/explora ndo-o-software-por-tras-do-facebook-a-maior- rede-social-do-mundo/ >. Último acesso em: 12/12/2016 HUMBLE, Charles. Facebook anuncia o Apollo, um novo banco de dados NoSQL para armazenamento online de baixa latência; INFOQ. Disponível em: <https://www.infoq.com/br/news/2014/08/face book-apollo >. Último acesso em: 12/12/2016 EWBANK, Kay. Facebook Apollo NoSQL Database; I-PROGRAMMER. Disponível em: <http://www.i-programmer.info/news/84- database/7441-facebook-apollo-nosql- database.html >. Último acesso em: 12/12/2016 CAMPBELL-DOLLAGHAN, Kelsey. Como o Facebook está repensando a infraestrutura online usada por um bilhão de pessoas; GIZMODO. Disponível em: <http://gizmodo.uol.com.br/facebook- hardware/>. Último acesso em: 12/12/2016 STRICKLAND, Jonathan. Fatos e números sobre o Facebook; TECNOLOGIA. Disponível em: <http://tecnologia.hsw.uol.com.br/facebook5.ht m >. Último acesso em: 12/12/2016
  • 11. A ENCICLOPÉDIA LIVRE, Wikipédia. NoSQL; WIKIPEDIA. Disponível em: <https://pt.wikipedia.org/wiki/NoSQL>. Último acesso em: 12/12/2016 BORTHAKUR, Dhruba. Olhando para o código por trás de nossos três usos do Apache Hadoop; GOOGLEUSERCONTENT. Disponível em: <https://translate.googleusercontent.com/transl ate_c?depth=1&hl=pt- BR&prev=search&rurl=translate.google.com.b r&sl=en&u=https://www.facebook.com/notes/f acebook-engineering/looking-at-the-code- behind-our-three-uses-of-apache- hadoop/468211193919/&usg=ALkJrhjPK6OB NfK4Fk9zoH7pH2-Wz5iVRg >. Último acesso em: 12/12/2016 LAMPIT, Andrew. Facebook empurra os limites do Hadoop; CIO. Disponível em: <http://cio.com.br/tecnologia/2012/11/05/faceb ook-empurra-os-limites-do-hadoop/ >. Último acesso em: 12/12/2016 Muito obrigada pela atenção e qualquer dúvida estarei a disposição para esclarecimentos. Atenciosamente, Gabriella Lima de Carvalho.