Hadoop é um framework em código aberto
para armazenamento e processamento
distribuídos de grandes conjuntos de
dados em hardware simples
Projeto Nutch - Doug
Cutting e Mike Cafarella.
havia problemas de
escalabilidade.
Escalabilidade Conforme o
aumento do volume de dados, é
necessário que aumente a
escalabilidade. Existem dois
tipos: - Vertical: Aumentar o
poder de processamento e
armazenamento das máquinas -
Horizontal: Aumentar o número
de máquinas
Hadoop foi Criado em
2005 a partir do white
paper google "The
Google File System"
(GFS)
Hadoop
HDFS
escalabilidade horizontal
--> em VARIAS maquinas
Arquivo é quebrado em
vários pedaços de 64MB.
padrão de mercado.
Horton Claudera já
utilizam tamanho maior.
É feito três cópias e
distribuído pelo cluster
Algoritmo de distribuição é
pensado para segurança do dado
e aproveitamento do recurso.
Nodes
Namenode NN
NameNode is the centerpiece of HDFS.
NameNode is also known as the Master
NameNode only stores the metadata of
HDFS – the directory tree of all files in
the file system, and tracks the files
across the cluster. NameNode does not
store the actual data or the dataset. The
data itself is actually stored in the
DataNodes. NameNode knows the list of
the blocks and its location for any given
file in HDFS. With this information
NameNode knows how to construct the
file from blocks. NameNode is so critical
to HDFS and when the NameNode is
down, HDFS/Hadoop cluster is
inaccessible and considered down.
NameNode is a single point of failure in
Hadoop cluster. NameNode is usually
configured with a lot of memory (RAM).
Because the block locations are help in
main memory.
fsimage - Its the snapshot of
the filesystem when
namenode started
Edit logs - Its the sequence of
changes made to the
filesystem after namenode
started
Only in the restart of namenode , edit
logs are applied to fsimage to get the
latest snapshot of the file system. But
namenode restart are rare in
production clusters which means edit
logs can grow very large for the
clusters where namenode runs for a
long period of time. The following
issues we will encounter in this
situation. Editlog become very large ,
which will be challenging to manage
it Namenode restart takes long time
because lot of changes has to be
merged In the case of crash, we will
lost huge amount of metadata since
fsimage is very old
Secondary namenode SNN - Secondary Namenode helps
to overcome the above issues by taking over
responsibility of merging editlogs with fsimage from the
namenode.
It gets the edit logs from the namenode in regular
intervals and applies to fsimage Once it has new fsimage,
it copies back to namenode Namenode will use this
fsimage for the next restart,which will reduce the startup
time Secondary Namenode whole purpose is to have a
checkpoint in HDFS. Its just a helper node for
namenode.That’s why it also known as checkpoint node
inside the community. So we now understood all
Secondary Namenode does puts a checkpoint in
filesystem which will help Namenode to function better.
Its not the replacement or backup for the Namenode. So
from now on make a habit of calling it as a checkpoint
node.
DataNode
DataNode is responsible for storing the actual data
in HDFS. DataNode is also known as the Slave
NameNode and DataNode are in constant
communication. When a DataNode starts up it
announce itself to the NameNode along with the
list of blocks it is responsible for. When a
DataNode is down, it does not affect the
availability of data or the cluster. NameNode will
arrange for replication for the blocks managed by
the DataNode that is not available. DataNode is
usually configured with a lot of hard disk space.
Because the actual data is stored in the DataNode.
usa disco
usa memória
MapReduce
Caracteristicas
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.
Tolerância a falhas ;Balanceamento
de carga; Comunicação entre
máquinas; Escalonamento de
tarefas; Alocação de máquinas;
Escalabilidade
Processo computacional que utiliza chave e
valores. Usa força bruta - todo o conjunto de
dados é processado em cada query. Modelo
de processamento batch Flexibilidade - Pode
processar vários tipos de arquivo, dados
estruturados ou não estruturado.
Confiabilidade - Processa vários jobs em
paralelo sem que a falha de um afete o
outros. Acessibilidade - suporta várias
linguagens(Java, C++, Python, Apache Pig).
JobTracker (JT) •
Nó mestre •
Gerenciador de
tarefas
MapReduce
Um programa
completo Uma
aplicação
Classes Mapper
Classes Reducer
Classes Driver
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
TaskTracker (TT)
• Executam as
tarefas
MapReduce
Execução de um Mapper ou
Reducer sobre uma fatia dos
dados
1 - Tarefas Map
Recebe
dados
Split dos dados
Apuração
chave/valor
por nó
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
3 - Tarefas Reduce
Recebe os dados no
formato chave/valor
Sumariza de acordo
com a necessidade
Entrega a
apuração final
2 - Shuffle and sort
Agrupa em uma estrutura de coleção
todos os valores escritos no Map para um
mesmo valor de chave, e depois os envia
para tarefas da fase Reduce
Modos de execução BIG DATA • 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
Em 2004 o Google lança
o white paper
"MapReduce: Simplified
Data Processing on
Large Clusters"