Zusammenfassung der Ressource
Aula 04 - Funcionalidades
HDFS e MapReduce
- HDFS
- HADOOP DISTRIBUTED FILE BIG DATA SYSTEM -
HDFS – Sistema de arquivos distribuído –
Executado em um sistema de arquivos nativo
– Otimizado para processamento de grande
volume de dados (alta taxa de transferência) –
Abstrai questões de armazenamento
distribuído dos dados – Escalável e tolerante a
falhas
- O Hadoop… … é um framework open source
desenvolvido em Java … é projetado para
manipular grande volume de dados … é
projetado para ser escalável em milhares de
máquinas … é projetado para ser executado
em hardware de baixo custo … oferece
resiliência por meio da replicação de dados …
oferece recuperação automática do processo
em caso de falha … faz distribuição
automática dos dados no cluster … projetado
para levar o processamento para o dado
- Dicas para adoção do Hadoop • Faça uma
expansão do cluster na medida em que novas
aplicações de interesse forem identificadas •
Construa uma plataforma centralizada dos dados
• Propague o conhecimento de Hadoop e NoSQL
com outros grupos • Dê ao seu time tempo para
fazer experimentos • Planeje a existência de
aplicações novas, tradicionais e legadas
- Cluster Hadoop
- Agrupa vários Racks
- Rack Hadoop
- Comporta vários nós
- Nó Hadoop
- Comporta Processos
Hadoop, JVM, LInux, CPU,
Memória, Disco
- Rack 01
- NameNode - NN
- Rack 02
- SecondaryNameNode - SNN
- Rack 03
- DataNode
- Arquivos são divididos em blocos
de 64 MB (tamanho default)
- Otimizado para ler/armazenar
grandes arquivos em um cluster
- Blocos são replicados para tolerância
a falhas (default - 3 réplicas)
- Opções para
carregamento de dados
para o HDFS
- LInha de comando
- Java Api
- Ecosistema Hadoop , Sqoop, Flume, Hue
- Modos de execução
- • Local (standalone) – Executado como um
único processo java – Recomendado para
depuração de código
- Pseudo-distribuído – Todos os componentes Hadoop são
executados em uma única máquina – Cada componente é
executado em um processo java separado
- Completamente distribuído – Cluster Hadoop utilizando
múltiplas máquinas
- Comandos FS shell
- Verificar servicos [training@localhost ~]$ sudo jps
- Verificar versão do Hadoop BIG DATA training@localhost ~]$ hadoop version
- Criar diretorio para receber arquivo [training@localhost ~]$ hadoop fs -mkdir input MBA
- Enviar base de dados para o HDFS BIG DATA [training@localhost ~]$ hadoop fs -put ~/bases/compras.txt input MBA
- Listar arquivos armazenados no HDFS BIG DATA [training@localhost ~]$ hadoop fs -ls
- Visualizar conteúdo de arquivo no HDFS BIG DATA [training@localhost ~]$ hadoop fs -cat
input/compras.txt
- Copiar arquivo do HDFS para arquivo
local BIG DATA [training@localhost ~]$
hadoop fs -get
input/compras.txt/home/training/bases/compras_cp.txt
- Copiar um arquivo para outro diretório
(ou outro cluster) BIG DATA
[training@localhost ~]$ hadoop distcp
/user/training/input/user/training/input2
- Removendo um arquivo BIG DATA
[training@localhost ~]$ hadoop fs
-rm input2/compras.txt
- Removendo um diretório
BIG DATA
[training@localhost ~]$
hadoop fs -rm -r input2
- Acessar a interface WEB do HDFS BIG DATA
- http://localhost:50070/dfshealth.html#tab-overview
- MapReduce
- Características
- O que é necessário
implementar em uma
aplicação distribuída?
- Implementado pelo
desenvolvedor
- Lógica do Problema
- Implementado
pelo
MapReduce
- Alocação de máquinas
- Escalonamento de tarefas
- Balanceamento de carga
- Comunicação entre máquinas
- Tolerância a falhas
- Escalabilidade
- Arcabouço de software
para facilitar a execução
de aplicações que
processam um grande
volume de dados em um
cluster de milhares de
nós de hardware
convencional de maneira
tolerante a falhas.
- 1. Paradigma de programação
distribuída 2. Engine de
execução de aplicações
distribuídas 3. Implementado
em Java 4. Executa programas
implementados em Java,
Python, Ruby e C++
- Arquitetura
- JobTracker JT
- • Nó mestre •
Gerenciador de
tarefas
MapReduce
- TaskTracker TT
- • Executam as
tarefas MapReduce
- JOB Um programa completo Uma
aplicação
- TAREFA Execução de um Mapper ou
Reducer sobre uma fatia dos dados
- Mova as tarefas, não os dados 1. Uma
aplicação cliente submete um job ao
JobTracker 2. JobTracker se comunica com o
NameNode para determinar a localização
dos dados 3. JobTracker localiza os nós
TaskTrackers próximos aos dados 4.
JobTracker submete as tarefas aos nós
TaskTrackers
- Tolerância a falhas 1. Em um
grande cluster, as máquinas
ficam lentas ou falham com
frequência 2. MapReduce
oferece recuperação
automática de tarefas que
falharam 3. MapReduce
redireciona tarefas falhas para
outros nós do cluster
- Escalabilidade linear “Escalabilidade é a
capacidade do sistema de manter o desempenho
com o aumento de carga, pela adição de mais
recursos
- Modelo de Programação
- Exemplo tradicional do MapReduce:
WordCount Dados de entrada: um ou
mais arquivos de texto Objetivo: contar
o número de ocorrências de cada
palavra encontrada no texto Resultado:
arquivo texto contendo uma lista em
que cada linha apresenta uma palavra e
seu respectivo número de ocorrências
Exemplo de aplicabilidade: trending
topics do Twitter
- DAdos de entrada
- Split dos dados
- Tarefas Map
- Ordenação
- Tarefas Reduce
- Dados saída
- Exemplos de análises utilizando
o modelo de programação
MapReduce
- Mineração de Texto
- Filtragem colaborativa
- Modelos preditivos
- Reconhecimentos de Padroes
- Análise de
sentimento
- Análise de
risco
- Responsabilidade do desenvolvedor
- MapReduce Job
- Chaves e Valores
Classe reducer
Classe mapper
Classe driver
- Exemplos de chaves e valores Um número
de telefone (chave) com os registros das
chamadas (valores) Um usuário do
facebook (chave) e suas informações do
perfil (valores) O número de um cartão de
crédito (chave) e suas transações (valores)
- Funcoes Map e Reduce
- Classe Mapper
- Classe Reducer
- Chamada de um
MapReduce job -
Exemplo
- bin/hadoop jar
/home/fia/meuwordcount.jar
WordCount
dados_entrada
dados_saida
- Classe Driver
- Como utilizar as classes implementadas?
1. Gerar um arquivo JAR com as classes
implementadas 2. Submeter o JAR por
meio da função “hadoop jar” JAR (Java
ARchive) é um arquivo compactado
usado para distribuir um conjunto de
classes Java. É usado para armazenar
classes compiladas e metadados
associados que podem constituir um
programa.
- Mas como gerar uma
aplicação MapReduce
utilizando outras
linguagens de
programação?
- Hadoop Streaming API – Permite a execução de tarefas map e
reduce com diversas linguagens (desde que a linguagem possa ler o
input e output padrão) – A entrada dos dados são recebidas do stdin
– A saída dos dados são gravadas no stdout – A execução é oferecida
por meio do componente hadoop-streaming.jar
- Hadoop Streaming API – Exemplo
bin/hadoop jar
/usr/local/hadoop/hadoop-streaming.jar \
-input "/user/dados_entrada.txt" \ -output
"/user/out" \ -mapper "meuMapper.py" \
-reducer "meuReducer.py"
- quais outras
aplicações poderiam
ser feitas a partir
dessa base de dados?
- • Análise de sentimento •
Identificação de pandemias •
Comparação entre marcas •
Identificação de usuários
influentes