Arquiteturas Java pragmáticas para usar big data na nuvem
Processar, analisar, reduzir, escalar, inovar? A vida de um arquiteto de software trabalhando com big data pode ser tanto um sonho quanto um pesadelo. Por um lado, você tem um poder de processamento na nuvem como nunca existiu antes, além de ferramentas que podem transformar suas ideias mais malucas em aplicações totalmente disruptivas. Por outro lado, é muito fácil cair em gargalos arquiteturais ou custos de escala proibitivos. Ferramentas como Hadoop, Hive, Pig, Crunch e HBase transformaram Java na força por trás da revolução do big data. No entanto, é bem fácil ficar totalmente perdido entre as várias opções de ferramentas disponíveis, sem saber como e quando usar cada uma delas. Esta palestra irá apresentar arquiteturas Java bem pé-no-chão para construir aplicações de big data eficientes mantendo os custos de hosting na nuvem o mais baixos possíveis. Vamos mostrar como combinar de forma eficiente ferramentas open source bem conhecidas e também apresentar alguns dos nossos truques secretos para ter uma performance sensacional, sem ficar maluco no processo.
8. Quando
usar
tecnologias
de
Big
Data
tenha
certeza
que
é
Big
mesmo
Nada
tem
mais
impacto
na
performance
da
sua
aplicação
do
que
a
oQmização
do
seu
próprio
código
Na
nuvem
você
tem
recursos
virtualmente
ilimitados.
Mas
o
custo
também
9. Nada
tem
mais
impacto
na
performance
da
sua
aplicação
do
que
a
oQmização
do
seu
próprio
código
34. Na
nuvem
você
tem
recursos
virtualmente
ilimitados.
Mas
o
custo
também.
35. Se
você
quer
fazer
mágica,
quanto
mais
flexível
o
serviço
melhor.
36. Amazon
EC2
RESERVED
$1427
$0.104
/
hora
2,338.04
ON-‐DEMAND
$0
$0.32
/
hora
2,803.20
SPOT
$0
$0.042
/
hora
≅367.92
*
Custo
para
uQlizar
uma
instancia
Large
durante
1
ano
37. Economia
picos
de
60
servidores
ao
longo
do
dia
On-‐demand
On-‐demand
+
Spot
1
ano
(≈8,760
horas)
≈
USD
38.000
≈
USD
24.580
≈
35%
de
economia
em
1
ano
40
servidores
rodando
full
Qme
(18
spot)
38. Escolher
bem
o
Qpo
de
instância
faz
toda
a
diferença
Monitorar
a
variação
de
preços
ao
longo
do
tempo
pode
trazer
informações
úteis
para
as
futuras
compras
39. Como
uQlizar
spot
instances
Dê
preferência
a
arquiteturas
share
nothing
Lembre-‐se:
Você
pode
perder
o
servidor
a
qualquer
momento
Escolha
máquinas
em
zonas
diferentes
UQlize
algumas
instâncias
on-‐demand
43. UQlize
templates
para
seus
servidores
WebFront
Server
Hadoop
TaskTracker
Back-‐end
Server
Auto
scaling
44. Deixe
seu
script
decidir
o
endereçamento
dos
servidores
Scale
Up
10.0.15.104
10.0.15.101
10.0.15.102
10.0.15.103
10.0.15.[N]
*
IPs
aleatórios
só
tornam
a
administração
mais
complexa
45. Comprando
uma
máquina
via
API
Collec1on<InstanceNetworkInterfaceSpecifica1on>
networkInterfaces;
InstanceNetworkInterfaceSpecifica1on
networkInterface;
.
.
networkInterface.setDeviceIndex(0);
networkInterface.setPrivateIpAddress("10.0.1.101");
.
.
networkInterfaces.add(networkInterface);
specs.setNetworkInterfaces(networkInterfaces);
.
.
client.requestSpotInstances(request);
AWS
Java
SDK
46. Auto
Scaling
Hadoop
Pré-‐configure
o
arquivo
‘conf/slaves’
com
os
hosts
dos
servidores
que
pretente
subir
quando
precisar
escalar
UQlize
spot
instances
para
os
JobTrackers
47. Coisas
que
eu
gostaria
de
saber
quando
começamos
Via
API
é
possível
comprar
máquinas
com
IP
pré
determinado
IOPS
provisionado
nos
discos
que
necessitem
mais
performance
de
escrita
Dá
para
fazer
mais
coisas
pela
API
do
que
pela
interface
web
49. COMO
SABER
SE
VOCÊ
TEM
DADOS
GRANDES
MESMO:
Todos
os
seus
dados
não
cabem
em
uma
só
máquina
by
Fernando
Stankuns
50. COMO
SABER
SE
VOCÊ
TEM
DADOS
GRANDES
MESMO:
Você
está
falando
mais
em
Terabytes
do
que
em
Gigabytes
51. COMO
SABER
SE
VOCÊ
TEM
DADOS
GRANDES
MESMO:
A
quanQdade
de
dados
que
você
processa
cresce
constantemente.
E
deve
dobrar
no
ano
que
vem.
by
Saulo
Cruz