Processamento de Big Data com bancos de dados NoSQL para desenvolvedores Java. Fernando Babadopulos (@babadopulos)



Documentos relacionados
Processando Big Data com Java: Receitas para resolver problemas comuns. Fabiane Bizinella Nardon

Arquiteturas Java Pragmá1cas para usar Big Data na Nuvem. Fabiane Bizinella Nardon Fernando Babadopulos

NoSQL como suporte à análise de dados nãonormalizados. volume

JSTL: Uma forma padrão de desenvolver página WEB dinâmica Plácido Antonio de Souza Neto

Introdução aos Bancos de Dados Não-Relacionais. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador)

2. O gerador de código estende DepthFirstAdapter implementando a interpretação que gerará código Jasmin a partir de Smallpascal.

Pollyanna Gonçalves. Seminário da disciplina Banco de Dados II

FERRAMENTA PARA REPLICAÇÃ ÇÃO O DE DADOS NO SGBD POSTGRESQL

MAC NoSQL. Mauricio De Diana

Fazendo Data Science em Tempo Real. Fabiane Bizinella

Tipo de Dados em Linguagem C

(HDFS) Usando o. hadoop_

2 - Processadores. CEFET-RS Curso de Eletrônica. Organização de Computadores. Profs. Roberta Nobre & Sandro Silva

Hadoop - HDFS. Universidade Federal de Goiás Ciência da Computação

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

PERFORMANCE EVALUATION OF A MONGODB AND HADOOP PLATFORM FOR SCIENTIFIC DATA ANALYSIS M.Govindaraju and L. Ramakrishnan

Arquiteturas escaláveis utilizando ferramentas Shared Nothing. Victor Canô

Desenvolvimento Web TCC Turma A-1

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Construa um Data Lake multi-protocolo e otimizado para analytics com ISILON. Fernando Pavan Isilon Specialist

Sistemas Distribuídos

Neo4j Aprendendo conceitos por trás do Neo4j. Sem SQL? Apresentação. Por que grafos, por que agora? Por que grafos, por que agora?

Programação para Android. Aula 08: Persistência de dados SQL

Mapeamento Lógico/Relacional com JPA

Tabela de símbolos: tabelas de espalhamento

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/ / 31

Desenvolvimento Web com Framework Demoiselle versão 1.0

Processamento de Dados

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. Rodrigo Hjort. Robson Ximenes

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

FACULDADE DE TECNOLOGIA SENAC GOIÁS PROJETO INTEGRADOR. 2º PERÍODO Gestão da Tecnologia da Informação GOIÂNIA 2013.

Copyright 2012 EMC Corporation. Todos os direitos reservados.

Meta Programming. Nelson Ferraz

BIG DATA: UTILIZANDO A INTERNET PARA TOMADA DE DECISÕES

Prof. Daniela Barreiro Claro

Uma Breve Introdução. Andréa Bordin

5. Generics, Iterators e Comparable em Java. Tipos de Dados Abstractos Generics em Java

Apache + PHP + MySQL

Manual de Instruções para a Criação de Ficheiros CSR. Apache (OpenSSL)

PHP. Hypertext Pre-Processor

Persistência de Classes em Tabelas de Banco de Dados

Programação para Android. Aula 07: Persistência de dados Shared Preferences, Internal e External Storage

Tipos de Dado Abstrato: Listas, Filas e Pilhas

MANUAL DE PADRONIZAÇÃO DE CODIFICAÇÃO PHP CODING STANDARDS

Sensor de temperatura Parte 5 Cleiton Bueno Preparando o ambiente do Banco de dados Mysql

Sistemas Baseados em Regras. Profa. Patrícia Dockhorn Costa

Relatório de Piloto Tecnológico Plataforma de Cloud Privada baseada em OpenStack Março 2015

Google App Engine. André Gustavo Duarte de Almeida. Computação Ubíqua e Nuvens. Natal, 24 de maio de 2012 andregustavoo@gmail.com

1

Guia rápido de uso de Web Services do NFS-e Easy

Programação para Android. Aula 10: Acesso a câmera, sms e recursos do aparelho

Bases de Dados Relacional/Objeto e NoSQL. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Instalando e Configurando o BDE. Instalando o BDE. Configurando o BDE - 1 -

Tópicos Especiais em Redes de Telecomunicações

Prof. Romulo Fagundes Cantanhede. Node.JS. O poder do JavaScript do lado do Servidor

Principais novidades do Entity Framework 5.0

Minicurso introdutório de desenvolvimento para dispositivos Android. Cristiano Costa

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

PHP e MySQL Autenticação de Usuários

Fundamentos de Banco de Dados

Orientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade

Escalabilidade, as modas e (No)SQL. Fernando Ike

Sistema de Bancos de Dados. Conceitos Gerais Sistema Gerenciador de Bancos de Dados

FTP FILE F TRANSFER PROTOCOL. Tópicos

Think Idea S/A. Documento Visão. Versão 1.0

Design Patterns (Factory Method, Prototype, Singleton)

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Sistema de Armazenamento de Dados Eleitorais - SisElege

IMPLEMENTAÇÃO DE UM AGENTE TAC SCM EM LINGUAGEM AGENTSPEAK(L)

Instalando software MÉDICO Online no servidor

Capítulo 4. Programação em ASP

Migrations for Java EVOLUINDO SEU BANCO DE MANEIRA INCREMENTAL

Apresentação do Artigo

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

O que são Bancos de Dados?

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

FICHA DE ESPECIFICAÇÃO TÉCNICA. x PRODUTO PROCESSO DATA: 04/02/2013. PRODUTO: IcBox SUB-PRODUTO: DESCRIÇÃO: API DLL c++ (C++ builder e Delphi)

NoSQL. Cintia Freitas de Moura. BCC 441 Banco de Dados II / 2014

SERVIÇO DE NOMES. Sistemas Distribuídos. Vinícius Pádua

Diamond Powder - um framework Java ME para coleta de dados

Enplicaw Documentation

INTEGRAÇÃO DE TÉCNICAS DE SISTEMAS DISTRIBUÍDOS APLICADA AO DESENVOLVIMENTO DE UM AMBIENTE PARA O JOGO DE XADREZ

Introdução a Java. Hélder Nunes

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB

Copyright 2012 EMC Corporation. Todos os direitos reservados.

Especialização em Engenharia de Software - CEUT

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Nº Registro na ANS / / / / / / / / /

Manual de Instalação PIMSConnector em Linux

Frameworks - Grails. Aécio Costa

Invocação Remota MC704

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

ANDROID E NDK PARA ALÉM DA PERFORMANCE

BSI UFRPE Prof. Gustavo Callou

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

Persistência de dados com JPA. Hélder Antero Amaral Nunes

Transcrição:

Processamento de Big Data com bancos de dados NoSQL para desenvolvedores Java Fernando Babadopulos (@babadopulos)

Eu tenho um Big Data?

Ok, tenho um Big Data, e agora?

Mas como funciona o hadoop?

fapa dos dados fapa dos fapa dos grande quanpdade de dados dados dados fapa dos dados CLUSTER HADOOP node 1 node 2 node 3 node N resultado do processamento Talvez outro Big Data!?!?

Vou processar distribuído, mas onde eu armazeno os dados?

Como dividir meus dados em vários servidores?

Replicação 02 03 01 i5 j9 f1 i6 j0 f2 i7 j1 f3 i8... j2... f4... database 01 database 02 01 f1 f2 f3 f4... 01 f1 f2 f3 f4... 02 i5 i6 i7 i8... 02 i5 i6 i7 i8... 03 j9 j0 j1 j2... 03 j9 j0 j1 j2...

Sharding 02 03 01 04 08 07 06 05 i5 j9 f1 l9 i6 l0 j0 f2 i7 l1 j1 f3 i8... l2... j2... f4... database 01 database 02 database 03 database 04 01 f1 f2 f3 f4... 02 i5 i6 i7 i8... 03 j9 j0 j1 j2... 04 l9 l0 l1 l2... 05 l9 l0 l1 l2... 06 f1 f2 f3 f4... 07 j9 j0 j1 j2... 08 i5 i6 i7 i8...

Hashing Rápido Consistente Ex.: Murmur RIPEMD- 160

Replicação ou sharding?

E o HDFS, onde entra?

Leitura e gravação geram os mesmos problemas?

Todos os bancos de dados são iguais?

Rápido Armazenado na memória RAM Diversas estruturas de dados Strings, Hashs, Lists, Sets, Sorted Sets

<dependency> <groupid>redis.clients</groupid> <artifactid>jedis</artifactid> <version>2.7.2</version> <type>jar</type> </dependency> Jedis jedis = new Jedis("localhost"); jedis.set("key", "value"); String value = jedis.get("key"); * hips://github.com/xetorthio/jedis

Índice armazenado em RAM Persistência em SSD Cluster napvo

<dependency> <groupid>com.aerospike</groupid> <artifactid>aerospike-client</artifactid> <version>3.0.0</version> <type>jar</type> </dependency> AerospikeClient client = new AerospikeClient("localhost",3000); Key key = new Key("test", "demo", "key"); Bin bin1 = new Bin("bin1", "value1"); Bin bin2 = new Bin("bin2", "value2"); String value = jedis.get("foo"); client.put(null, key, bin1, bin2); Record record = client.get(null, key); * hip://www.aerospike.com/docs/client/java/

Orientado a documentos Registros desestruturados Persistência em disco Auto- sharding Pesquisa em documentos aninhados

<dependency> <groupid>org.mongodb</groupid> <artifactid>mongodb-driver</artifactid> <version>3.0.2</version> <type>jar</type> </dependency> MongoClient mongoclient = new MongoClient("localhost"); MongoDatabase database = mongoclient.getdatabase("mydb"); MongoCollection<Document> collection = database.getcollection("test"); *hip://docs.mongodb.org/ecosystem/drivers/java/

{ } "name": "example", "code": 7, "point": { "x": 100, "y": 200 } Document doc = new Document("name", "example").append("code", 7).append("point", new Document("x", 100).append("y", 200) ); collection.insertone(doc); Document mydoc = collection.find().first(); *hip://docs.mongodb.org/ecosystem/drivers/java/

Morphia <dependency> <groupid>org.mongodb.morphia</groupid> <artifactid>morphia</artifactid> <version>1.0.0</version> <type>jar</type> </dependency> Facilita a manipulação de objetos *hip://mongodb.github.io/morphia/

Orientado a documentos Pesquisa em tempo real Distribuído e escalável O documento todo pode ser indexado

<dependency> <groupid>org.elasticsearch</groupid> <artifactid>elasticsearch</artifactid> <version>1.6.0</version> <type>jar</type> </dependency> IndexResponse response = client.prepareindex("myindex", "docs").setsource(json).execute().actionget(); GetResponse response = client.prepareget("myindex", "docs", "1").execute().actionGet(); * hips://www.elaspc.co/guide/en/elaspcsearch/client/java- api

Sampling

705.166 62ms 1.288.822.081 1,5h

6.931 x 1.190.642.440 651.448 = 12.667.692 Erro 0.088% 12.678.931

Total de registros conhecido amostragem Total de registros amostrados

REDIS 01 REDIS 02 REDIS 03 REDIS 04 REDIS 05 for (Jedis jedis : cluster.getallshards()) {. long dbsize = jedis.dbsize();.. String key = jedis.randomkey(); String value = jedis.get(key);.. }

AD EB CF 0.728 IN OUT Tamanho da amostra final F 0.314 0.728 0.352 0.461 0.816 0.831

Reservoir Sampling private SortedMap<Double, MyObject> reservoir;.. if (reservoir.size() < SAMPLE_SIZE) { reservoir.put(score, myobject); } else if (score > reservoir.firstkey()) { reservoir.remove(reservoir.firstkey()); reservoir.put(score, myobject); }

Reservoir Sampling Apache Crunch import org.apache.crunch.lib.sample; Sample.reservoirSample(Pcollection<T> input, int samplesize);

Perguntas? Fernando Babadopulos (@babadopulos)

Obrigado! Fernando Babadopulos (@babadopulos)