Big Data
Material Teórico
Outros Projetos Importantes do Hadoop,
sua Instalação e Execução
Responsável pelo Conteúdo:
Prof. Dr. Alberto Messias
Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Outros Projetos Importantes do
Hadoop, sua Instalação e Execução
• Projeto Mahout;
• Projeto Spark;
• Processo de Instalação do Hadoop em um Single Node;
• Iniciando com o Hadoop;
• Exemplo de Contagem de Palavras com o Hadoop.
OBJETIVO DE APRENDIZADO
· Conhecer outros dois importantes projetos agregados ao Hadoop;
· Adquirir conhecimento para a instalação e a configuração de uma
instância Hadoop;
· Fazer experimentos iniciais de contagem de palavras em bases de
Dados reais.
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem
aproveitado e haja maior aplicabilidade na sua
formação acadêmica e atuação profissional, siga
algumas recomendações básicas:
Conserve seu
material e local de
estudos sempre
organizados.
Aproveite as
Procure manter indicações
contato com seus de Material
colegas e tutores Complementar.
para trocar ideias!
Determine um Isso amplia a
horário fixo aprendizagem.
para estudar.
Mantenha o foco!
Evite se distrair com
as redes sociais.
Seja original!
Nunca plagie
trabalhos.
Não se esqueça
de se alimentar
Assim: e de se manter
Organize seus estudos de maneira que passem a fazer parte hidratado.
da sua rotina. Por exemplo, você poderá determinar um dia e
horário fixos como seu “momento do estudo”;
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma
alimentação saudável pode proporcionar melhor aproveitamento do estudo;
No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você
também encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão
sua interpretação e auxiliarão no pleno entendimento dos temas abordados;
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e
de aprendizagem.
UNIDADE Outros Projetos Importantes do Hadoop,
sua Instalação e Execução
Projeto Mahout
O Projeto Mahout é um Projeto de Código Livre da Fundação Apache que pos-
sui uma biblioteca de implementação de algoritmos para aprendizagem de máquina.
De acordo com Giacomelli (2013), o objetivo do Projeto Mahout é ser uma
escolha de ferramenta para aprendizado por máquina para Processamento de
conjuntos de Dados extremamente grandes, para execução em clusters de ins-
tâncias de Hadoopou numa única máquina.
O Mahout é uma ferramenta desenvolvida em Linguagem de Programação
Java dentro do projeto de computação distribuída Hadoop.
O Projeto Mahout possui implementações de algoritmos de classificação
e clustering, como o algoritmo K-means, que possui grande relevância para
o curso.
O Projeto Mahout possui implementações de diversos algoritmos em sua exe-
cução direta no Hadoop, com o Mapreduce, algoritmos em Spark, além de poder
usar frameworks H2O e Flink.
Usando o Mapreduce, há os seguintes algoritmos implementados:
• Classificação:
» Naive Bayes;
» Hidden Markov Models;
» Logistic Regression;
» Random Forest.
• Clustering:
» k-Means;
» Canopy;
» Fuzzy k-Means;
» Streaming KMeans;
» Spectral Clustering.
• Processamento pós-clustering:
» Cluster Dumper tool;
» Cluster visualisation.
• Redução de dimensionalidade:
» Singular value decomposition;
» Algoritmo Lanczos;
» Stochastic SVD;
» PCA (via Stochastic SVD);
» QR Decomposition.
8
• Outras implementações de suporte:
» Row Similarity Job;
» Collocations;
» Sparse TF-IDF Vectors em Textos;
» XML Parsing;
» Email Archive Parsing;
» Evolutionary Processes.
Não se preocupe nesse momento com os algoritmos aqui citados, pois são ilus-
trações do que se tem disponível no projeto Mahout. No momento adequado, você
terá contato com alguns desses algoritmos.
Projeto Spark
O Projeto Spark foi desenvolvido inicialmente pelo AMPLab da Universidade de
Berkeley, usando os mesmos conceitos do projeto Mesos, proposto pela mesma Uni-
versidade. Como característica principal, o Spark otimiza os processos executados
por meio do Hadoop MapReduce em memória, o que permite um desempenho em
torno de 100 vezes mais rápido que o MapReduce com Hadoop tradicional.
Em geral, o Spark propõe uma plataforma de processamento ao tradicional
oferecido pelo Hadoop. Ele oferece ou possibilita implementações em lingua-
gens Casa, Java, R e Tom, ainda permite interface com as plataformas tradi-
cionais Hadoop como: HDFS, HBase, Cassandra, MapR-DB, MongoDB e
Amazonas S3.
Segue o diagrama Spark, que ilustra graficamente sua estrutura, com seus prin-
cipais componentes:
Figura 1 – Diagrama Spark
Fonte: Adaptado de Scott, 2015
9
9
UNIDADE Outros Projetos Importantes do Hadoop,
sua Instalação e Execução
Segue a descrição simples de cada um dos componentes principais:
Apache Spark Core
O Spark Core é a plataforma principal de execução; é base para todas as ou-
tras funcionalidades. Ela fornece a execução em memória e faz referência a con-
juntos de dados em Sistemas de Armazenamento externos e distribuídos.
Spark SQL
O Spark SQL é um componente importante do Spark Core, que permite
a abstração de dados chamada Schema RDD, que fornece suporte para dados
estruturados e semi-estruturados.
Spark Streaming
Spark Streaming aproveita a capacidade de processamento rápido da Spark
Core para executar os processamentos. Permite a execução e a transformações
RDD (Solids Distributed Datasets) nesses pedações menores de Dados e lotes
de Processamento.
MLlib (Biblioteca de Machine Learning)
MLlib é uma biblioteca de aprendizagem por máquina distribuída que roda sobre
a arquitetura de Spark baseada em memória distribuída. O SparkMLlib é nove vezes
mais rápido que a versão baseada em HDFS e disco do Hadoop do Apache Mahout
(antes do framework Mahout implementar a interface com Spark). Cabe destacar
que a biblioteca MLib possui uma grande quantidade de funções e algoritmos para
aprendizado por máquina.
GraphX
GraphX é uma estrutura distribuída de processamento de gráficos sob a arqui-
tetura Spark. Ele fornece uma API para computação gráfica que pode modelar
os gráficos definidos pelo usuário usando a API de abstração Pregel. Ele também
fornece um tempo de execução otimizado para essa abstração.
Spark R
Essa funcionalidade permite que usuários da plataforma ou software R utili-
zem funções ou funcionalidades Spark de maneira mais usual.
Resilient Distributed Datasets
O Resilient Distributed Datasets (RDD) é o conceito central da plataforma
Spark. Foi desenvolvido para suportar o armazenamento de dados na memória
e distribuído ou num cluster, que implementa sua tolerância a falhas, devido,
em parte, ao seu rastreamento de dados brutos ou processamentos.
10
Segue um trecho de código de exemplo de Word Count em Scala para
execução em Spark:
[Link]
[Link]._
valtxtFile = “/[Link]”
valtxtData = [Link](txtFile)
[Link]()
[Link]()
valwcData = [Link](l =>[Link](“ “)).map(word => (word, 1)).
reduceByKey(_ + _)
[Link]().foreach(println)
Esse código executa a contagem de palavras do artigo de entrada “[Link]”, pre-
sente na terceira linha.
Caso queira se aprofundar no tema de Spark, segue o link com importantes definições
Explor
em inglêse e o link para introdução à Linguagem Scala, bastante utilizada no Spark.
Disponível em:
• [Link]
• [Link]
Processo de Instalação do Hadoop
em um Single Node
Aqui será descrito o processo de instalação e configuração do Hadoop para um
único nó utilizando o Linux Debian:
• Atualizar o Sistema, trocar o perfil do usuário no Sistema para administrador
(root) e digitar os comandos:
apt-getupdate
apt-get upgrade
• Como administrador, adicionar um grupo hadoop e um usuário hadoop-
-user a esse grupo; há possibilidade de deixar as informações solicitadas por
adduser em branco, com exceção da senha:
add group hadoop
adduser –ingroup hadoop hadoop-user
11
11
UNIDADE Outros Projetos Importantes do Hadoop,
sua Instalação e Execução
• Instalar o Java 8, ainda como administrador do Sistema. Remover o openjdk;
configurar o Java 8:
aptpurgeopenjdk*
echo “deb [Link] trustymain”
| tee/etc/apt/[Link].d/[Link]
echo “deb-src [Link] trusty-
main” | tee -a /etc/apt/[Link].d /webupd8team -[Link]
apt-keyadv --keyserver [Link] --recv-keys EEA14886
• Mais uma vez, atualizar o Sistema e instalar:
apt-getupdate
aptinstall -y oracle-java8-installer
• Aceitar a licença de software e verificar se a versão correta foi instalada:
java -version
Configurar a variável de ambiente $JAVA_HOME, ainda usando o usuário admi-
nistrador do Sistema:
sh -c ‘echo “export JAVA_HOME=/usr/local/JDK...” >> /etc/profile’
source /etc/profile|
O trecho “JDK...” devem ser trocada pelo local onde foi instalado o JDK.
• Comunicações do Hadoop são criptografadas via SSH; portanto, o servidor
foi instalado e configurado:
apt-getinstallopenssh-server
• O hadoop-user foi associado a um par de chaves e, subsequentemente, con-
cedeu o seu acesso à máquina local. Para configurar o SSH, há a necessidade
de mudar para o hadoop-user:
su - hadoop-user
ssh-keygen -t rsa -P “”
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
• O hadoop-user será capaz de acessar via ssh o localhost sem fornecer senha:
sshlocalhost
12
• Voltar ao administrador da máquina, fazer o download do Hadoop, descom-
pactar e mover para “/usr/local”; adicionar o link usando o nome hadoop
alterando do conteúdo para o hadoop-user:
wget[Link]
[Link]
tarxzf [Link]
rm [Link]
mv hadoop-2.7.1 /usr/local
ln -sf /usr/local/hadoop-2.7.1/ /usr/local/hadoop
chown -R hadoop-user:hadoop /usr/localhadoop-2.7.1/
• Mudar para o hadoop-user e adicionar as seguintes linhas no final de ~/.bashrc:
Figura 2
• Para que as novas variáveis de ambiente estejam em vigor, é preciso recar-
regar o arquivo .bashrc:
source .bashrc
• Modificar arquivos de configurações dentro /usr/local/hadoop/etc/hadoop.
Todos eles seguem o formato XML e configuration. As atualizações refe-
rem-se ao nó de nível superior. Especificamente:
13
13
UNIDADE Outros Projetos Importantes do Hadoop,
sua Instalação e Execução
» No arquivo em [Link]:
Figura 3
» No arquivo em [Link]:
Figura 4
• Em [Link] (likey para ser criado através de [Link].
template [Link]):
Figura 5
14
» No arquivo em [Link]:
Figura 6
• Isso requer a criação manual dos dois diretórios especificados nos dois últimos
value nos XML:
mkdir -p /usr/local/hadoop/yarn_data/hdfs/namenode
mkdir -p /usr/local/hadoop/yarn_data/hdfs/datanode
• Insira o “/usr/local/java/JDK...” na variável JAVA_HOME, no arquivo /usr/
local/hadoop/etc/hadoop/[Link].
• Agora você poderá iniciar o serviço do Hadoop. Para isso, use o comando:
/usr/local/hadoop/sbin/[Link]
• Formatar o sistema de arquivos, operação a ser executada como hadoop-user:
hdfsnamenode -format
Note que a instalação aqui descrita foi para um único nó; porém, pode-se
encontrar facilmente na documentação do Hadoop a instalação e a configura-
ção para clusters de hadoop.
Por exemplo, no link:
Explor
Hadoop Cluster Setup. Disponível em: [Link]
15
15
UNIDADE Outros Projetos Importantes do Hadoop,
sua Instalação e Execução
O processo de instalação aqui descrito é importante como referência para um
administrador; porém, há, inúmeras máquinas virtuais que podem ser baixadas
com todas as funcionalidades prontas para o uso, como, por exemplo, da Cloudera
ou Hortonworks. Uma alternativa é usar as máquinas prontas nas plataformas de
computação em nuvem, pois o hadoop está presente em todas as grandes plata-
formas, como Google, IBM, Amazon e Microsoft Azure.
Iniciando com o Hadoop
O Hadoop possui algumas ferramentas administrativas interessantes, que podem
auxiliar no processo de administração diária.
Figura 7
Há uma URL que permitirá ao administrador visualizar todos os arquivos
presentes no HDFS, indo em “Utilities/Browsethe file system”, conforme se
observa na Figura a seguir.
16
Figura 8
Por meio dos links presentes nessa ferramenta, é possível observar, por exem-
plo, o processo de inicialização do hadoop, LOGs, os datanodes e seus respectivos
tamanhos no Sistema de Arquivos, dentre outras informações.
Há, ainda, uma página de administração que exibe uma série de outras infor-
mações a respeito das execuções de processamentos no hadoop.
Figura 9
A interface exibe as aplicações em execução e seu respectivo tempo e porcen-
tagem de conclusão do processamento.
É importante o administrador conhecer alguns comandos para o gerencia-
mento do HDFS, grande parte herdados de comandos Unix/Linux, tais como:
• ls – para listagem de arquivos;
• rm – para remover arquivos;
17
17
UNIDADE Outros Projetos Importantes do Hadoop,
sua Instalação e Execução
• rmdir – para remover diretórios;
• cat – para exibir conteúdos de arquivos;
• cp – para copiar arquivos;
• copyFromLocal – para enviar arquivos para o HDFS;
• find – para buscar arquivos;
• chmod – para editar permissões sobre um arquivo;
• chow – para alterar o dono de um arquivo;
• mv – para mover um arquivo entre diretórios;
• moveFromLocal – para mover um arquivo para o HDFS;
• appendToFile – para inserir conteúdos no final do arquivo.
Esses estão dentre uma lista completa, que se encontra facilmente nos documentos
Explor
presentes no site do fabricante. Disponível em: [Link]
Exemplo de Contagem de
Palavras com o Hadoop
Vamos a um exemplo trivial de contagem de palavras. Assume-se que deve-se
estar autenticado com o usuário hadoop-user em nossa instância de Hadoop.
O primeiro passo será copiar para o HDFS da instância de Hadoop que es-
tamos executando; nesse caso, com o seguinte comando:
hadoopfs -copyFromLocal [Link] /
O comando copia o arquivo [Link] para a raiz do Sistema de Arquivos HDFS.
Pela interface WEB, você consegue se certificar que a cópia do arquivo ocorreu,
conforme se pode observar na Figura a seguir.
Figura 10
O Conteúdo do arquivo é:
18
“Olá mundo hadoop.
Cruzeiro do Sul Virtual Educação a distância.
Professor Alberto.”
Para se certificar que o arquivo foi copiado, você pode acessar a página de na-
vegação em arquivos
Nos diretórios de exemplos do hadoop, há uma implementação de contagem
de palavras no arquivo “[Link]”, que está no
diretório “hadoop/share/hadoop/mapreduce/”.
O comando pode ser executado da seguinte maneira:
hadoopjar [Link] wordcount /[Link] /ola_output
O comando é dividido da seguinte maneira: “hadoopjar” informando que
será executado um arquivo no formato jar. Nesse caso, o “hadoop-mapreduce-
-[Link]”.
Os parâmetros seguintes são, executar a função “wordcount” passando como
parâmetros o arquivo ou diretório de entrada e arquivo de saída.
Para resgatar o arquivo de saída, pode-se copiá-lo por comando no HDFS
ou fazer o download através da interface WEB.
Figura 11
O arquivo de saída o “part-r-00000”. Segue o arquivo de saída do coman-
do executado:
Tabela 1
Alberto. 1
Cruzeiro 1
Educação 1
Olá 1
Professor 1
Sul 1
19
19
UNIDADE Outros Projetos Importantes do Hadoop,
sua Instalação e Execução
a 1
distância 1
do 1
hadoop 1
mundo 1
Virtual 1
Na primeira coluna, o arquivo de saída possui a palavra e na segunda coluna
a frequência com que a palavra ocorreu no texto. Note que o comando não faz
nenhuma limpeza ou pré-processamento na Base de Dados. Nesse caso, ele en-
tendeu como uma única palavra o “hadoop”.
Vamos a um segundo exemplo, com uma base de dados real, o primeiro passo
será baixar a base de dados, a qual iremos utilizar na execução de exemplo.
A base de exemplo se trata de uma base de postagem de 50 autores em Blogs. Ela pode
Explor
ser baixada no link: [Link]
Descompacte o arquivo [Link] baixado do site por meio do comando:
unzip [Link]
hadoopfs -copyFromLocal C50/ /
Verifique, pelo navegador, se os arquivos foram copiados, se agora existem as
duas pastas C50test e C50train, conforme se observa na figura a seguir:
Figura 12
Vamos executar o comando de contagem de palavras para um diretório de
um dos autores e na base de testes.
hadoopjar [Link] wordcount /C50/C50test/
AaronPressman/ C50/output
Ou, caso se queira, executar para a base inteira:
20
hadoopjar [Link] wordcount /C50/C50test/*/*
/C50/output
Figura 13
Essa execução deve demorar, tendo em vista o tamanho da base e que o co-
mando está sendo executado em uma única instância de Hadoop.
O arquivo de saída poderá ser baixado através da interface WEB do Hadoop.
21
21
UNIDADE Outros Projetos Importantes do Hadoop,
sua Instalação e Execução
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Sites
Apache Hadoop
Referência com os diversos comandos existentes para o HDFS.
[Link]
UCI Machine Learning Repository
Download de bases de dados para experimentos BI/Big Data.
[Link]
IBM
Sobre o framework mahout desenvolvido pela IBM.
[Link]
Microsoft
Artigo interessante da MSDN quanto ao uso e o processo de instalação do Spark.
[Link]
DevMedia
Uma breve introdução ao projeto Mahout.
[Link]
22
Referências
GIACOMELLI, P. Apache Mahout Cookbook. [S.l.]: Packt Publishing, 2013.
OWEN, Sean et al. Mahout in Action. Greenwich: Manning Publications
Co., 2011.
QUINTERO, D. et al. IBM Data Engine for Hadoop and Spark. IBM RedBooks.
2016. Disponível em: <[Link]
pdf>. Acesso em: 12 set. 2017.
SCOTT, J. A. Get started with apache spark. MapR Technologies. 2015. Dis-
ponível em: <[Link]
che_Spark.pdf>. Acesso em: 20 ago. 2017.
SHENOY, Aravind. Hadoop Explained. Mumbai: Packt Publishing, 2014. Dis-
ponível em: <[Link]
Acesso em: 12 set. 2017.
TUTORIALS Point Simply easy learning. Disponível em: <[Link]
[Link]/apache_spark/[Link]>. Acesso em: 20 ago 2017.
WHITE, T. Hadoop: The Definitive Guide. 4. ed. [S.l.]: O’Reilly Media, Inc., 2015.
ZECEVICAND, Petar; BONACI, Marko. Spark in Action. Greenwich: Manning
Publications Co., 2016.
23
23