Escolar Documentos
Profissional Documentos
Cultura Documentos
DE BIG DATA
Introdução
Big data é um termo muito utilizado tanto por profissionais de TI quanto
por empresários: alguns em busca de especialização em áreas mais avan-
çadas da tecnologia; outros procurando obter vantagens competitivas
para as suas empresas com a ajuda de profissionais de TI. Isso ocorre pela
possibilidade de diminuição de custos; pela aquisição de informações e
conhecimentos adequados para uma melhor tomada de decisão; pelo
aumento na lucratividade e pela possibilidade de crescimento do negócio;
ou, em alguns casos, por serem os profissionais capazes de garantir a
sobrevivência da empresa.
Nesse contexto, o termo é utilizado para representar uma quantidade
de dados tão grande a ponto de tornar o seu processamento inviável em
métodos tradicionais de processamento de dados, o que gerou interesse
da comunidade em contribuir com a manutenção e a evolução dos
frameworks de big data. Suas principais aplicações são de código livre e
contam com o apoio de grandes empresas, que acabam por utilizá-las
no dia a dia dos seus negócios.
Neste capítulo, você conhecerá aplicações simples, utilizando fra-
meworks de big data, por meio de conceitos do MapReduce e de um
exemplo de aplicação de contagem de palavras que utiliza o MapReduce
tanto no Apache Hadoop quanto no Apache Spark.
2 Aplicações simples utilizando frameworks de big data
1 Funcionamento do MapReduce
Conforme apresentado no artigo da Google, por Dean e Ghemawat (2004),
o MapReduce é um modelo de programação e implementação associada a
esse modelo, que permite o processamento e a geração de grandes conjuntos
de dados. Nele, os usuários especificam uma função de mapeamento para
processar um par chave-valor, o que gera um conjunto de pares chave-valor
intermediários, além de uma função de redução para mesclar os valores in-
termediários associados à mesma chave intermediária. Além disso, muitas
das tarefas do mundo real são expressáveis nesse modelo.
Segundo a The Apache Software Foundation (2019), o MapReduce é um
framework de software para a fácil escrita de aplicações que processam
uma vasta quantidade de dados em paralelo, com conjuntos que podem
chegar a vários terabytes, em clusters que podem alcançar milhares de nós,
compostos por máquinas comuns, de maneira confiável e com tolerância
a falhas.
Conforme pode ser observado na Figura 1, no processamento paralelo
e distribuído tradicional, antes da existência do MapReduce, o conjunto de
dados era dividido em partes menores ou blocos para que fossem armazena-
dos em máquinas diferentes. Em seguida, era realizada a busca de alguma
característica em cada parte armazenada por meio do comando grep,
que permite realizar a busca de palavras em vários arquivos diferentes,
de forma que cada uma retorna seus próprios resultados nas máquinas
correspondentes, para que todos sejam concatenados por meio do comando
cat, que pode ser utilizado para a criação de arquivo, concatenação e
apresentação de conteúdo na tela, gerando como resultado final o conjunto
dos resultados.
grep
Dados divididos Resultados
grep
Dados divididos Resultados cat Todos os
Big Data grep resultados
Dados divididos Resultados
grep
Dados divididos Resultados
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
wordObject.set(word);
context.write(wordObject, one);
}
}
}
}
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
soma dos valores da chave. A terceira classe, que engloba as duas anteriores
e contém o método main para executar o código delas, pode ser observada
a seguir:
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
Resultado:
Found 3 items
-rw-r--r-- 1 root supergroup 0 2020-10-16 12:40 wordcount/_SUCCESS
-rw-r--r-- 1 root supergroup 139484 2020-10-16 12:40 wordcount/part-r-00000
-rw-r--r-- 1 root supergroup 139028 2020-10-16 12:40 wordcount/part-r-00001
15. Inspecione o conteúdo dos arquivos
$ hadoop fs -tail wordcount/part-r-00000
$ hadoop fs -tail wordcount/part-r-00001
package com.Sagah;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;
import java.util.Arrays;
countData.saveAsTextFile("CountData");
}
if (args.length == 0) {
System.out.println("Sem arquivo para contar.");
System.exit(0);
}
wordCount(args[0]);
}
}
Resultado esperado:
CountData livro.txt pom.xml src target
7. Acesse a pasta e liste o resultado:
$ cd CountData
$ ls
_SUCCESS part-00000
8. Veja o resultado da execução no arquivo part-00000:
$ cat part-00000
14 Aplicações simples utilizando frameworks de big data
Resultado esperado:
....
(memorable,4)
(scratching,1)
(rip,2)
(quired,1)
(vine,7)
(heart-sore,2)
(Able,2)
(Presumptuous,3)
(subsidies,1)
(absolutely,2)
Tutorial Spark com Python usando o Google Colab – Baseado em Kwon (c2020):
1. Faça login em https://colab.research.google.com
2. Clique em upload e faça o upload do arquivo WordCountPySpark.ipynb
3. Execute célula por célula
4. Quando solicitar o upload de um arquivo para processamento, use o arquivo
utilizado anteriormente ("livro.txt")
# Instalar o Spark
!apt-get install openjdk-8-jdk-headless -qq > /dev/null
!wget -q https://downloads.apache.org/spark/spark-3.0.0/
spark-3.0.0-bin-hadoop3.2.tgz
!tar xf spark-3.0.0-bin-hadoop3.2.tgz
!pip install -q findspark
Aplicações simples utilizando frameworks de big data 15
# Testar a instalação
import findspark
findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[*]").
getOrCreate()
for fn in uploaded.keys():
print('Arquivo "{name}" de tamanho {length} bytes foi
adicionado.'.format(
name=fn, length=len(uploaded[fn]))
# Imprime o resultado
for palavra in contapalavras.collect():
print(palavra)
Os links para sites da web fornecidos neste livro foram todos testados, e seu funciona-
mento foi comprovado no momento da publicação do material. No entanto, a rede
é extremamente dinâmica; suas páginas estão constantemente mudando de local
e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade sobre
qualidade, precisão ou integralidade das informações referidas em tais links.