You are on page 1of 7

Big Data e Hadoop o que tudo isso?

Pouca gente na indstria de computao no deve ter se deparado com o termo


Big Data e Hadoop. Essas so algumas das palavras da moda que surgem
com frequncia nos dias de hoje. Apesar de s vezes superestimado, trata-se
de algo muito importante para todas as empresas de anlises e os responsveis
por polticas. Vejamos ento sobre o que esse buzz todo.
Desde o princpio da Internet, quantidades massivas de dados de usurios tm
sido geradas. Particularmente nos ltimos anos, mdias sociais como Facebook,
Twitter e blogs criaram quantidades obscenas de dados de usurios. De acordo
com o Gartner, Big Data so grandes quantidades de dados, em alta
velocidade, gerados por uma multiplicidade de fontes. Por serem criados de
forma quase aleatria, esses dados no possuem estrutura. Essas informaes
podem ser analisadas para ajudar em tomadas de decises mais eficientes e
inteligentes. Por causa dessas caractersticas, a manipulao e o
processamento de Big Data necessitam de ferramentas e tcnicas especiais.
aqui que entra o Hadoop.
O Hadoop uma implementao de cdigo aberto do paradigma de
programao Map-Reduce. Map-Reduce um paradigma de programao
introduzido pelo Google para processar e analisar grandes conjuntos de dados.
Todos esses programas que so desenvolvidos nesse paradigma realizam o
processamento paralelo de conjuntos de dados e podem, portanto, ser
executados em servidores sem muito esforo. A razo para a escalabilidade
desse paradigma a natureza intrinsecamente distribuda do funcionamento da
soluo. Uma grande tarefa dividida em vrias tarefas pequenas que so
ento executadas em paralelo em mquinas diferentes e ento combinadas
para chegar soluo da tarefa maior que deu incio a tudo. Os exemplos de
uso do Hadoop so analisar padres de usurios em sites de e-commerce e
sugerir novos produtos que eles possam comprar.
Isso tradicionalmente chamado de sistema de recomendaes e pode ser
encontrado em todos os principais sites de e-commerce. Ele pode ser utilizado
tambm para processar grandes grafos como o Facebook etc. A razo pela qual
o Hadoop simplificou o processamento paralelo se d pelo fato de o
desenvolvedor no precisar se preocupar com problemas relativos ao
processamento em paralelo. Ele pode escrever apenas as funes de como
quer que os dados sejam processados.

Componentes do Apache Hadoop

O framework do Hadoop formado por dois componentes principais:


armazenamento e processamento. O primeiro o HDFS (Hadoop Distributed
File System), que manipula o armazenamento de dados entre todas as
mquinas na qual o cluster do Hadoop est sendo executado. O segundo, o
Map-Reduce, manipula a parte do processamento do framework. Vamos olhar
as duas individualmente.

HDFS (Hadoop Distributed File System)


O HDFS um sistema de arquivos escalonvel e distribudo, cujo desenho
baseado fortemente no GFS (Google File System), que tambm um sistema
de arquivo distribudo. Sistemas de arquivo distribudos so necessrios, uma
vez que os dados se tornem grandes demais para serem armazenados em
apenas uma mquina. Por conta disso, toda a complexidade e as incertezas
provenientes do ambiente de rede entra em cena, o que faz com que sistemas
de arquivos de rede sejam mais complexos do que sistemas de arquivos
comuns. O HDFS armazena todos os arquivos em blocos. O tamanho do bloco
padro 64Mb. Todos os arquivos no HDFS possuem mltiplas rplicas, o que
auxilia o processamento em paralelo. Os clusters HDFS possuem dois tipos de
ns primeiro um namenode, que um master, e mltiplos datanodes, que so
ns slave. Fora esses dois, tambm possvel ter namenodes secundrios.
Namenode: administra o namespace do sistema de arquivos. Ele gerencia
todos os arquivos e diretrios. Namenodes possuem o mapeamento entre
arquivos e os blocos nos quais estes esto armazenados. Todos os arquivos
so acessados usando esses namenodes e datanodes.

Datanode: armazena os dados em forma de blocos. Datanodes se reportam a


namenodes sobre os arquivos que possuem armazenados para que o
namenode esteja ciente e os dados possam ser processados. Namenode
talvez o principal ponto crucial de falha do sistema, sem o qual os dados no
podem ser acessados.
Namenodes secundrios: esse node responsvel por checar a informao
do namenode. No caso de falha, podemos usar esse n para reiniciar o
sistema.

Map-Reduce
Map-Reduce um paradigma de programao em que cada tarefa
especificada em termos de funes de mapeamento e reduo. Ambas as
tarefas rodam paralelamente no cluster. O armazenamento necessrio para
essa funcionalidade fornecido pelo HDFS. A seguir esto os principais
componentes do Map-Reduce.
Job Tracker: tarefas de Map-Reduce so submetidas ao Job Tracker. Ele
precisa falar com o Namenode para conseguir os dados. O Job Tracker
submete a tarefa para os ns task trackers. Esses task tracker precisam se
reportar ao Job Tracker em intervalos regulares, especificando que esto
vivos e efetuando suas tarefas. Se o task tracker no se reportar a eles, ento
o n considerado morto e seu trabalho redesignado para outro task
tracker. O Job tracker novamente um ponto crucial de falha. Se o Job Tracker
falhar, no poderemos rastrear as tarefas.
Task Tracker: o Task Tracker aceita as tarefas to Job Tracker. Essas tarefas
so tanto de map, reduce ou ambas (shuffle). O Task Tracker cria um processo
JVM separado para cada tarefa a fim de se certificar de que uma falha no
processo no resulte em uma falha de Task Tracker. Task trackers tambm se
reportam ao Job Tracker continuamente para que este possa manter o registro
de tarefas bem ou mal sucedidas.

***

Texto original da equipe Monitis, liderada por Hovhannes


Avoyan, disponvel em
http://blog.monitis.com/index.php/2013/12/19/big-data-andhadoop-whats-it-all-about/

Very few people in the computer science industry wouldnt have come across the terms Big
Data and Hadoop. These are a few buzz words which we are coming across quite frequently
now a days. Though sometimes over-hyped, it is a big deal for all the analytics companies and
policy makers. So lets see what this buzz is all about.
Ever since the onset of Internet, massive amounts of user data is getting generated. Particularly,
in the last couple of years, social media like Facebook, Twitter and blogging websites have
created humongous amounts of user data. According to Gartner, Big Data is very high volume,
high velocity data which originates from multitude of sources. Being created in a random fashion,
this data lacks the structure. This information can be analysed to help in smarter and efficient
decision making. Big data differs from the traditional data in two significant ways. First, big data is
very huge and cant be stored in single machine. Second, it lacks the structure which traditional
data has. Because of these characteristics handling and processing of big data requires special
tools and techniques. This is where Hadoop kicks in.
Hadoop is an open source implementation of the Map-Reduce programming paradigm. MapReduce is a programming paradigm introduced by Google for processing and analyzing very
large data-sets. All these programs which are developed in this paradigm parallely processes the
data-sets and so they can be run on servers without much effort. The reason for scalability of this
paradigm is the inherent distributive nature in the way solution works. The big task is divided into
many small jobs which then run parallely on different machines and then combine to give the
solution for the original big task we started with. The examples of usage of Hadoop are for
analyzing user patterns on e-commerce websites and suggest users new products to buy.

This is traditionally called a Recommendations Systems and can be found in all of the major ecommerce websites. It can be used for processing large graphs like Facebook etc. The reason
why Hadoop has simplified parallel processing is because the developer doesnt have to care
about the parallel programming worries. A developer only writes functions on how he wants to
process the data.
Apache Hadoop Components
Hadoop framework consists of two major components, Storage and Processing. First,
HDFS (Hadoop Distributed File System) handles the data storage across all the machines on
which Hadoop cluster is running. Second, Map-Reduce handles the processing part of the
framework. Lets have a look at them individually.

HDFS (Hadoop Distributed File System)


HDFS is a distributed, scalable file system which draws its design heavily from GFS (Google File
System) which also is a distributed file system. Distributed File Systems are required as data
becomes too large to store on one single machine. Hence all the complexities and uncertainties
of network come into picture which make Distributed Files Systems more complex than usual file
systems. HDFS stores all the files in the blocks. The default block size is 64MB. All files on HDFS
have multiple replicas which help in parallel processing. HDFS clusters have two types of nodes,
first a namenode which is a master node and multiple datanodes which are slave nodes. Apart
from these two, it can also have secondary namenode.

Namenode: It manages the namespace of the file system. It manages all the files and
directories. Namenode has mapping between file and the blocks on which it is stored. All the
files are accessed using these namenodes and datanodes.

Datanode: It actually stores the data in the form of blocks. Datanode keeps reporting to
namenode about the files it has stored so that namenode is aware and data can be accessed.
Namenode in such a way is the most crucial and single point of failure in the system without
which data cant be accessed.

Secondary Namenode: This node is responsible for check pointing the information
from namenode. In case of failure we can use this node to restart the system.

Map-Reduce
Map-Reduce is a programming paradigm where every task is specified in terms of map function
and a reducefunction. Both these tasks run parallely on the clusters. The storage required for this
functionality is provided by HDFS. Following are the main components of the Map-Reduce

Job Tracker: Map-Reduce jobs are submitted to Job Tracker. It has to talk to
Namenode to fetch the data. Job Tracker submits the task to task trackers nodes. These task
tracker nodes have to report to Job Tracker at regular intervals specifying they are alive and
doing the task. If the task tracker doesnt report then it is assumed to be dead and its work is
reassigned to other task tracker. Job Tracker is again a single point of failure. If Job Tracker
fails we will not be able to track the tasks.

Task Tracker: Task Tracker takes the tasks from Job tracker. These tasks are either
map, reduce or shuffle. Task Tracker creates a separate JVM process for each task to make
sure that process failure doesnt result into Task Tracker failure. Task Tracker also reports to
Job Tracker continuously so that Job Tracker can keep track of successful and failed Task
Trackers.