Big Data 2.0 - O que é o Apache Hadoop - Detalhamento HDFS e MAP REduce
0 - Informações Gerais
1- Orígem
Nasce devido ao big data
Lembrando que Big Data é um fenomeno recente (2001/2002)
3 - Características
Gratuito/ Open Source / Livre
2 - Necessidades
prover leitura e escrita paralela devido a baixa velocidade de acesso em discos rígidos para escrita
Provê aumento exponencial para armazenamento (disco e memória) em larga escala (baseado em cluster)
Alta disponibilidade
Tolerante a falhas
Sistema de armazenamento compartilhado,
distribuído e confiável
baseado em clusters de computadores (permitindo uso de computadores de baixo custo)
Provê aumento exponencial para processamento (paralelo) em larga escala (baseado em cluster)
Prover estrutura de baixo custo, flexivel e confiável
segurança baseada no Kerberos
Escalável
possui capacidade de se recuperar automaticamente
Flexivel
possibilita montar diferentes aquiteturas
possibilita crescimento horizontal com base em novos nós (nodes)
Framework que viabiliza o uso de diversos computadores para processamento, armazenamento e análise de grandes volumes/conjuntos de dados
Tem se tornado o padrão para projetos de Big Data
4 - Os Três Principais Módulos
HDFS
Armazenamento distribuído
EXEMPLO DE USO
YAHOO(2004)
cluster de baixo custo
Tamanho do Hadoop Yahoo
100 mil CPUs
40 mil servidores
455 Petabytes
Maior instancia de clusters do yahoo possui
4500 nós (com seguinte configuração)
4 * 1TB de Disco (4TBytes)
16 GBybes de Ram
2*4 CPUs (8 CPUs)
Yarn
Map Reduce
Processamento de dados no ambiente distribuído
7 - SGBDs e HADOOP
Foco nos dados do RDBMS VS HADOOP
Diferente foco na atualização de dados
RDBMS
processamento de pequenas porções de dados
Hadoop
processar grandes porções de dados
Precussor do Spark
gerenciamento do cluster
Teve como base
Google File System (GFS)
5 - Crescimento
Utiliza operações de sort e Merge
Foco na atualização de todo ou maior parte do conteúdo
Foco oposto ao Hadoop (na atualização de pequena parte do conteúdo)
Utiliza BTree
Seek é mais adequado para atualização de pequenas porções de dados
Foco em muita escrita e leitura
transfer é associado a velocidade para encontrar arquivo
seek é associado ao delay para encontrar arquivo
Tranfer está melhorando mais rápido que o seek
Teve como base o projeto DFS
Projeto DFS - Distributed File System: sistema que permite o gerenciamento e armazenamento e compartilhamento de dados em rede
Características
Traz vantagens para o armazenamento de dados não estruturados
Recuperação automática
Portabilidade entre hardwares e sistemas operacionais heterogêneos
Escalabilidade para armazenamento de big data
confiabilidade (por manter várias cópias dos dados)
Otimizado para performance WORM
(Write Once ; Read Many Times)
Eficiente padrão para processamento de dados
Otimizado para armazenamento de grandes arquivos
Otimizado para clusters de baixo custo (hardware commodity)
Possui dois tipos de nós
Name node
Data Node
Master
Gerencia estrutura
gerencia metadados
Slave
Armazena e busca blocos de dados
Reporta lista de blocos para o master (name node)
Possibilita rápida transferência de dados (baseada em clusters)
Gerencia os discos de várias máquinas de forma a se comportarem como um único disco
Foco no Seek Time (tempo de busca): tempo necessário para um controlador de disco rígido localizar uma parte específica dos dados armazenados.
Características
Modelo de programação para grandes massas de dados
Flexibilidade (processando dados estruturados e não estruturados)
confiabilidade (Jobs executando em paralelo, se um falhar os outros não são afetados)
Acessibilidade (suporte para várias linguagens: Java, C++, Python, Apache Pig)
Muito efetivo com dados semi estruturados ou não estruturados)
Interpreta dados durante as sessões de processamento de dados
parâmetros de tratamento definidos pelo analista (não são intrínsecos como nos dados estruturados)
Análise dos dados por força bruta (todo conjunto de dados é processado em cada query)
Modelo de processamento em batch (diferente de contínuo / streaming)
função de mapeamento converte os dados em pares de chave:valor
Foi pensado considerando o tempo de leitura de todo o conjunto de dados - transfer rate ( e não apenas do primeiro registro - seek time)
é bom para atualizar todo (ou maior parte) de um grande conjunto de dados
O segredo da performance do MapReduce, está no balanceamento entre seeking e transfer
permite a execução de queries ad-hoc em todo o conjunto de dados em um tempo escalável
reduzir seeking
usar efetivamente transfer
Tranfer rate tem melhorado significativament
é bem mais veloz que o seek time
Cientista de dados é o responsável por identificar o problema a ser resolvido e aplicar técnicas de mapeamento e redução
6 - Modos de configuração
É um sistema de armazenamento de arquivos (não é um banco de dados)
Não é um banco de dados e sim um sistema de arquivos
Stand Alone
Pseudo Distribuido
Totalmente Distribuído
Todos serviços numa única máquina
Usado para Testes
Cada serviço em uma JVM
Múltiplas JVMs no mesmo servidor
Requer mais memória
Cada serviço em uma JVM distribuídos pelo cluster
Ambiente de produção
Visão Geral de SGBDs(RDBMS)
Vs Hadoop (HDFS)
SGBDs/RDBMS
Modelo de computação
Transação = unidade de trabalho
provê controle de concorrência
Modelo de dados
Modelo voltado para leitura e escrita de dados
Custo
Tolerância a falha
ocorrencia de falhas é rara (mas ocorre)
possui mecanismos de recuperação
comumente necessita de servidores mais robustos
Custo mais elevado e escalonamento comumente vertical
Hadoop / HDFS
Modelo de computação
voltado para o conceito de jobs
Job = Unidade de trabalho
Sem controle de concorrência
voltado para o conceito de transações
Modelo de dados
Qualquer tipo de dados pode ser utilizado
estruturados com controle de Schema
Modelo voltado para WORM (uma escrita e muitas leituras)
Dados em qualquer formato
dados no formato tabular
Tolerância a falha
Utiliza mecanismos simples mas bastante eficientes
Falha já é esperada devido ao hardware de baixo custo
Custo
Servidores commodity podem ser utilizados em paralelo (cluster)
escalabilidade horizontal
8 - Arquitetura baseada
em Cluster
O que é um cluster
Conjunto / agrupamento de várias máquinas/computadores
Foco no Transfer Rate (taxa de tranferencia): A velocidade na qual os dados podem ser transmitidos de um dispositivo para outro
cluster Hadoop
Master
Name Node (HDFS)
Gerenciamento
processamento distribuído
armazenamento distribuído
se comporta como uma grande e única máquina (composta por todos os computadores participantes)
Slave
Data Node (HDFS)
Tarefas
armazenar dados
processar dados
comumente encontrado nos data centers
software gerencia um conjunto de máquinas de forma a se comportarem como uma única grande máquina
Maior capacidade de processamento e armazenamento
Job Tacker (MapReduce)
Task Tracker (MapReduce)
Arquitetura HDFS
Cache Distribuido
permite cache dos vários
arquivos usados pelas aplicações
Ganho de performance quando MAP e
REDUCE precisam acessar dados em comum
"Node" acessa arquivo locais ao invés
de solicitar para outro "node"
Possível fazer cache de Zips e Tar.gz
Uma vez no cache, o arquivo será disponibilizado pelo Hadoop no sistema de arquivos local de cada node onde ocorre a execução (No Sistema Operacional HDFS não em memória ram)
Serviços rodando no cluster
Serviços master
Características
recebe os jobs dos clientes
garante que os dados sejam carregados e segregados em pedaços de blocos segundo a configuração definida
Name Node
somente um computador pode exercer este papel
Secondary NameNode
somente um computador pode exercer este papel
viabiliza aceso confiável e rápido
Serviços Slave
Data Node
vários computadores realizam/exercem este papel
prmite qe os dados sejam armazenados em arquivos (em um ou mais blocos) que serão replicados e distribuídos
Segurança
Kerberos
por PADRAO executa em modo NÃO SEGURO
após configurado executa em modo seguro
cada usuário e serviço precisará ser autenticado
solicitação deverá ser de um serviço válido
autenticação direta
Arquitetura MapReduce
projetada para usar computação paralela e distribuída em Big Data tranformando grandes porções de dados em pedaços menores
Contempla basicamente duas operações
Map
Reduce
Separa informações em Chaves/Valores (key/value)
Dados são
Filtrados
Transformados
Distribuidos
Processados
Agregados em Datasets
dados resultantes são transformados em chave(id)/valor(dado)
Exemplos de aplicação
Classificação Baysiana para data mining
Operações de Search Engine (Indexação de palavras e PageRank)
Sistemas de Recomendação
Processo
0 - Defina o objetivo
1 - Aplicar MapReduce
2 - Dividir o conjunto em listas ordenadas(chaves e valores)
3 - Dividir em listas ordenadas já agrupadas (ainda menores)
4 - Continuar processo até o resultado / ponto desejado de processamento e agrupamento/solução