arquiteturas java pragmáticas para usar big data na nuvem
DESCRIPTION
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.TRANSCRIPT
![Page 1: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/1.jpg)
Arquiteturas Java Pragmá1cas para usar Big Data na Nuvem
Fabiane Bizinella Nardon (@fabianenardon) Fernando Babadopulos (@babadopulos)
![Page 2: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/2.jpg)
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
MySQLTailTargetMahoutJavaPlayMavenCityWatchNginxJavaDataScienceTerabytesTail
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
MySQLTailTargetMahoutJavaPlayMavenCityWatchNginxJavaDataScienceTerabytesTail
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
MySQLTailTargetMahoutJavaPlayMavenCityWatchNginxJavaDataScienceTerabytesTail
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
MySQLTailTargetMahoutJavaPlayMavenCityWatchNginxJavaDataScienceTerabytesTail
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
MySQLTailTargetMahoutJavaPlayMavenCityWatchNginxJavaDataScienceTerabytesTail
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
MySQLTailTargetMahoutJavaPlayMavenCityWatchNginxJavaDataScienceTerabytesTail
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
MySQLTailTargetMahoutJavaPlayMavenCityWatchNginxJavaDataScienceTerabytesTail
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
MySQLTailTargetMahoutJavaPlayMavenCityWatchNginxJavaDataScienceTerabytesTail
BigDataTailTargetDataScienceMachineLearningHiveHadoopC
runchMongoDBRedisAWS
MySQLTailTargetMahoutJavaPlayMavenCityWatchNginxJavaDataScienceTerabytesTail
Nós e Big Data
![Page 3: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/3.jpg)
GRANDE? o quão grande é
![Page 4: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/4.jpg)
Hadoop HBase
Hive
Crunch
HDFS
Cascading
Pig Mahout Re
dis
MongoDB
MySQL Cassandra
![Page 5: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/5.jpg)
Hadoop HBase
Hive
Crunch
HDFS
Cascading
Pig Mahout Re
dis
MongoDB
MySQL Cassandra
![Page 6: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/6.jpg)
Aplicações Incríveis!
Big Data
Cloud +
![Page 7: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/7.jpg)
![Page 8: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/8.jpg)
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
![Page 9: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/9.jpg)
Nada tem mais impacto na performance da sua aplicação
do que a oQmização do seu próprio código
![Page 10: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/10.jpg)
u=0C010003 -‐ hTp://www.tailtarget.com/home/ -‐ 179.203.156.194 u=12070002 -‐ hTp://cnn.com/news -‐ 189.19.123.161 u=00AD0e12 -‐ hTp://www.tailtarget.com/about/ -‐ 187.74.232.127
tailtarget.com – 2 cnn.com -‐ 1
![Page 11: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/11.jpg)
public sta1c class Map extends Mapper<LongWritable, Text, Text, IntWritable> { private sta1c final IntWritable one = new IntWritable(1); public void map(LongWritable key, Text value, Context context) {
String line = value.toString(); String[] parts = line.split(" "); Text page = new Text(new URL(parts[2]).getHost()); context.write(page, one);
} } public sta1c class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterable<IntWritable> values, Context context){ int count = 0; for (IntWritable value : values) { count = count + value.get(); } context.write(key, new IntWritable(count)); } }
![Page 12: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/12.jpg)
![Page 13: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/13.jpg)
![Page 14: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/14.jpg)
![Page 15: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/15.jpg)
![Page 16: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/16.jpg)
HDFS Chunk 1
Chunk 2
Record Reader
Record Reader
Map
Map
Combine
Combine Local Storage
Map Local
Storage
Copy Sort Reduce
Reduce
![Page 17: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/17.jpg)
public sta1c class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterable<IntWritable> values, Context context) { int count = 0; for (IntWritable value : values) { count = count + value.get(); }
context.write(key, new IntWritable(count)); } }
job.setMapperClass(Mapp.class); job.setCombinerClass(Reduce.class); job.setReducerClass(Reduce.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); job.submit();
![Page 18: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/18.jpg)
Naive ImplementaQon With Combiner Counter Map Reduce Total
FILE_BYTES_WRITTEN 1,913,542,238 956,106,404 2,869,648,642
Map output materialized bytes
956,063,008 0 956,063,008
Map input records 33,809,720 0 33,809,720
Map output records 33,661,880 0 33,661,880
Combine output records
0 0 0
Reduce shuffle bytes 0 956,063,008 956,063,008
Spilled Records 67,323,760 33,661,880 100,985,640
CPU 1me spent (ms) 465,750 78,900 544,650
Reduce input records
0 33,661,880 33,661,880
Reduce output records
0 343 343
Counter Map Reduce Total FILE_BYTES_WRITTEN 3,674,362 721,578 4,395,940
Map output materialized bytes
677,942 0 677,942
Map input records 33,809,720 0 33,809,720
Map output records 33,661,880 0 33,661,880
Combine output records
74,154 0 74,154
Reduce shuffle bytes
0 677,942 677,942
Spilled Records 75,510 22,622 98,132
CPU 1me spent (ms) 426,330 9,930 436,260
Reduce input records
0 22,622 22,622
Reduce output records
0 343 343
![Page 19: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/19.jpg)
public sta1c class Mapp extends Mapper<LongWritable, Text, Text, IntWritable> { private Map<String, Integer> items = new HashMap<String, Integer>();
public void map(LongWritable key, Text value, Context context) { StringTokenizer st = new StringTokenizer(value.toString(), " "); st.nextToken(); st.nextToken(); String page = new URL(st.nextToken()).getHost(); Integer count = items.get(page); if (count == null) { items.put(page, 1); } else { items.put(page, count+1); } }
public void cleanup(Context context) throws IOExcepQon, InterruptedExcepQon { for (Entry<String, Integer> item : items.entrySet()) { context.write(new Text(item.getKey()), new IntWritable(item.getValue())); } } }
![Page 20: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/20.jpg)
![Page 21: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/21.jpg)
![Page 22: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/22.jpg)
With Combiner OpQmized Counter Map Reduce Total
FILE_BYTES_WRITTEN 3,674,362 721,578 4,395,940
Map output materialized bytes
677,942 0 677,942
Map input records 33,809,720 0 33,809,720
Map output records 33,661,880 0 33,661,880
Combine output records
74,154 0 74,154
Reduce shuffle bytes
0 677,942 677,942
Spilled Records 75,510 22,622 98,132
CPU 1me spent (ms) 426,330 9,930 436,260
Reduce input records
0 22,622 22,622
Reduce output records
0 343 343
Counter Map Reduce Total FILE_BYTES_WRITTEN 2,073,462 701,288 2,774,750
Map output materialized bytes
657,920 0 657,920
Map input records 33,809,720 0 33,809,720
Map output records 21,952 0 21,952
Combine output records
0 0 0
Reduce shuffle bytes 0 657,920 657,920
Spilled Records 21,952 21,952 43,904
CPU 1me spent (ms) 270,540 8,770 279,310
Reduce input records 0 21,952 21,952
Reduce output records
0 343 343
![Page 23: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/23.jpg)
Os gargalos geralmente são causados pela quanQdade de dados que é trafegada na rede
![Page 24: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/24.jpg)
![Page 25: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/25.jpg)
Garanta tolerância a falhas na sua arquitetura.
Se o Map e o Reduce recomeçarem toda hora, você nunca vai terminar o trabalho
![Page 26: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/26.jpg)
![Page 27: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/27.jpg)
*É big data, lembra?
Hadoop/HDFS não funcionam bem com arquivos pequenos.
![Page 28: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/28.jpg)
Processing Pipelines
hTp://www.tailtarget.com/home/ hTp://cnn.com/news hTp://www.tailtarget.com/about/
hTp://www.tailtarget.com/home/ -‐ Tecnologia hTp://cnn.com/news -‐ Nowcias hTp://www.tailtarget.com/about/ -‐ Tecnologia
u=0C010003 -‐ Tecnologia u=12070002 -‐ Nowcias u=00AD0e12 -‐ Tecnologia
u=0C010003 -‐ hTp://www.tailtarget.com/home/ -‐ 179.203.156.194 u=12070002 -‐ hTp://cnn.com/news -‐ 189.19.123.161 u=00AD0e12 -‐ hTp://www.tailtarget.com/about/ -‐ 187.74.232.127
u=0C010003 -‐ hTp://www.tailtarget.com/home/ u=12070002 -‐ hTp://cnn.com/news u=00AD0e12 -‐ hTp://www.tailtarget.com/about/
![Page 29: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/29.jpg)
MapReduce Pipelines
Orquestrar
Encadear
OQmizar
![Page 30: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/30.jpg)
Exemplo (com Crunch) Pipeline pipeline = new MRPipeline(SiteAndUserClassifier.class, getConf()); RedisSetSource source = new RedisSetSource(Text.class, redisMasters); PCollecQon<Text> crawledSites = pipeline.read(source); PTable<String, DNA> classifiedItems = crawledSites.parallelDo("classify sites", new SiteClassifier(modelPath, crawledFilesFolder),
Writables.tableOf(Writables.strings(), Writables.writables(DNA.class))); PCollecQon<String> logSavedRedis = classifiedItems.parallelDo("save classified", new SaveSiteToRedis(redisMasters), Writables.strings()); pipeline.writeTextFile(logSavedRedis, "/tmp/redisLog/classifier/redis”); pipeline.done();
![Page 31: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/31.jpg)
MapReduce Pipelines
hTp://www.tailtarget.com/home/ hTp://cnn.com/news hTp://www.tailtarget.com/about/
hTp://www.tailtarget.com/home/ -‐ Tecnologia hTp://cnn.com/news -‐ Nowcias hTp://www.tailtarget.com/about/ -‐ Tecnologia
u=0C010003 -‐ Tecnologia u=12070002 -‐ Nowcias u=00AD0e12 -‐ Tecnologia
u=0C010003 -‐ hTp://www.tailtarget.com/home/ -‐ 179.203.156.194 u=12070002 -‐ hTp://cnn.com/news -‐ 189.19.123.161 u=00AD0e12 -‐ hTp://www.tailtarget.com/about/ -‐ 187.74.232.127
u=0C010003 -‐ hTp://www.tailtarget.com/home/ u=12070002 -‐ hTp://cnn.com/news u=00AD0e12 -‐ hTp://www.tailtarget.com/about/
![Page 32: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/32.jpg)
Merge
MapReduce Pipelines
hTp://www.tailtarget.com/home/ hTp://cnn.com/news
hTp://www.tailtarget.com/home/ -‐ Tecnologia hTp://cnn.com/news -‐ Nowcias
u=0C010003 -‐ Tecnologia u=12070002 -‐ Nowcias u=00AD0e12 -‐ Tecnologia
Redis
4
2 4
3
5 6
u=0C010003 -‐ hTp://www.tailtarget.com/home/ -‐ 179.203.156.194 u=12070002 -‐ hTp://cnn.com/news -‐ 189.19.123.161 u=00AD0e12 -‐ hTp://www.tailtarget.com/about/ -‐ 187.74.232.127
1
u=0C010003 -‐ hTp://www.tailtarget.com/home/ u=12070002 -‐ hTp://cnn.com/news u=00AD0e12 -‐ hTp://www.tailtarget.com/about/
2
![Page 33: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/33.jpg)
MapReduce Pipelines u=0C010003 -‐ hTp://www.tailtarget.com/home/ -‐ 179.203.156.194 u=12070002 -‐ hTp://cnn.com/news -‐ 189.19.123.161 u=00AD0e12 -‐ hTp://www.tailtarget.com/about/ -‐ 187.74.232.127
u=0C010003 -‐ hTp://www.tailtarget.com/home/ u=12070002 -‐ hTp://cnn.com/news u=00AD0e12 -‐ hTp://www.tailtarget.com/about/
hTp://www.tailtarget.com/home/ hTp://cnn.com/news
hTp://www.tailtarget.com/home/ -‐ Tecnologia hTp://cnn.com/news -‐ Nowcias
u=0C010003 -‐ Tecnologia u=12070002 -‐ Nowcias u=00AD0e12 -‐ Tecnologia
Redis
1
2 3
4 6
Pipeline A: Input: 1 Output: 2, 3, 4
Pipeline B: Input: 2 Output: 6
![Page 34: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/34.jpg)
Na nuvem você tem recursos virtualmente ilimitados. Mas o custo também.
![Page 35: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/35.jpg)
Se você quer fazer mágica, quanto mais flexível o serviço melhor.
![Page 36: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/36.jpg)
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
![Page 37: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/37.jpg)
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)
![Page 38: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/38.jpg)
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
![Page 39: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/39.jpg)
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
![Page 40: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/40.jpg)
Auto Scaling
como não ficar maluco com isso?
#SejaPreguiçoso
![Page 41: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/41.jpg)
Execute ações baseadas em dados
![Page 42: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/42.jpg)
Monitore seus indicadores
![Page 43: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/43.jpg)
UQlize templates para seus servidores
WebFront Server
Hadoop TaskTracker
Back-‐end Server
Auto scaling
![Page 44: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/44.jpg)
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
![Page 45: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/45.jpg)
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
![Page 46: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/46.jpg)
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
![Page 47: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/47.jpg)
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
![Page 48: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/48.jpg)
Quando usar tecnologias de Big Data
tenha certeza que é Big mesmo
![Page 49: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/49.jpg)
COMO SABER SE VOCÊ TEM DADOS GRANDES MESMO:
Todos os seus dados não cabem em uma só máquina
by Fernand
o Stankuns
![Page 50: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/50.jpg)
COMO SABER SE VOCÊ TEM DADOS GRANDES MESMO:
Você está falando mais em Terabytes do que em Gigabytes
![Page 51: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/51.jpg)
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
![Page 52: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/52.jpg)
PARA TODO O RESTO: KEEP IT SIMPLE!
![Page 53: Arquiteturas Java Pragmáticas para usar Big Data na Nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052620/55721442d8b42a36668b480c/html5/thumbnails/53.jpg)
Arquiteturas Java Pragmá1cas para usar Big Data na Nuvem
Fabiane Bizinella Nardon (@fabianenardon) Fernando Babadopulos (@babadopulos)