Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução ........................................................................................................................................... 4
Introdução ......................................................................................................................................... 12
Módulo 3 – Pentaho................................................................................................................... 19
O que é Pentaho?.............................................................................................................................. 19
JAVA_HOME................................................................................................................................... 34
C:\hadoop-2.10.0\ ............................................................................................................................. 52
Livros ............................................................................................................................................ 67
Artigos acadêmicos ....................................................................................................................... 68
Sites ............................................................................................................................................... 69
REFERÊNCIAS ............................................................................................................................. 70
Alex Junior Nunes da Silva
Objetivos de aprendizagem
Introdução
Por fim iremos aprender o fluxo de dados que ocorre em um processo de ETL.
BUSINESS INTELLIGENCE
A tecnologia vem avançando a cada vez mais, e com isso tem sido cada dia mais comum o
uso de ferramentas e sistemas de informações em diversas áreas. Partindo dessa contextualização e
indo um pouco mais profundo no passado, em 1958 a empresa IBM Research Fellow por meio do
pesquisador Hans Peter Luhn publicou um artigo no Jornal Sistemas IBM com o título “Uma chamada
de Business Intelligence System”, definindo assim o termo inteligência como: a habilidade de
adquirir conhecimento sobre o inter-relacionamento dos fatos expressos com o objetivo de auxiliar
na tomada de decisão para a realização de um determinado propósito (LUHN, 1958).
Em 1970 surgiram os primeiros sistemas baseados em Business Intelligence mas embora
tenha sido publicado pela IBM em 1958, o termo como conhecemos hoje foi reintroduzido nos ano
de 1993 por Howard Dresner analista da empresa Gartner Group que é especialista em sistemas de
tomada de decisões. Business Intelligence também conhecido como BI, são um conjunto de
conceitos, métodos, técnicas, ferramentas e sistemas de informação voltados a análise de dados e
esse conjunto fornece a seus usuários uma visão sólida, confiável e facilitada dos fatos de uma
empresa, para tal, ele transforma dados brutos em informações úteis e melhor visualizáveis, sendo
que munidos dessas informações, os usuários podem tomar decisões de maneira mais assertiva,
portanto esses sistemas são conhecidos como sistema de suporte à tomada de decisões,
observando que essa tomada de decisões pode ser tanto operacional como estratégica (ANTONELLI,
2009).
Um ponto interessante é que o BI não pode ser classificado como um sistema, nem como um
produto e nem as suas ferramentas, mas pode ser rotulado como o uso de arquiteturas, aplicativos e
banco de dados (ZAMAN, 2005). De acordo com o pesquisador Carlos Barbieri (2001, p.34), BI pode
ser definido como “a utilização de variadas fontes de informação para se definir estratégias de
competitividade nos negócios da empresa”. Sistemas de BI utilizam várias fontes de informações,
pois como o acesso à tecnologia se tornou mais viável à população, mais informações de diferentes
fontes, como mídias sociais, telefone e e-mail, são geradas. Informações essas que em sua maioria
não podem ser analisadas, pois não foram “higienizadas”, ou estão em várias tabelas, onde se torna
inviável a relação com outras tabelas, para gerar o que de fato é importante.
É habitual que pessoas responsáveis pela gerência, gestão ou direção de empresas e setores
de diferentes tipos ou tamanhos, tomem decisões que impactam diretamente nos resultados,
produções ou faturamentos. Porém essas decisões muitas vezes são tomadas levando em
consideração a experiência de um responsável ou de um grupo de indivíduos responsáveis, com isso,
nessas decisões podem haver falhas e essas falhas muitas vezes podem ser prejudiciais as
companhias de maneira elevada. Dessa forma, como dito anteriormente os sistemas de Business
Intelligence são definidos como sistemas de suporte à tomada de decisões, portanto, os resultados
que esses sistemas oferecem são conhecidos por essas pessoas responsáveis que utilizam essas
informações para sustentar as decisões que serão tomadas. Dessa maneira os dados são os centros
das tomadas de decisões, sendo essa abordagem conhecida como “data-driven”.
A cultura data-driven ou cultura orientada por dados, vem sido abordada em muitas
empresas, sendo que nessas empresas os dados são os protagonistas e as decisões são tomadas
levando-os sempre em consideração, dessa forma para uma empresa implementar essa cultura ela
deve tornar sua estrutura adequada para que todas ações tenham um fundamento em dados. A
tomada de decisões utilizando data-driven tem grande eficiência porque observa experiências
passadas e com elas futuras experiências são otimizadas. Para implementar essa cultura em uma
empresa alguns fatores devem ser observados, tais como: investimento em tecnologia (hardwares e
softwares), definição dos objetivos e dos projetos, transformação da cultura empresarial, dentre
outros.
Comumente ao entrar no assunto de BI, são citados os sistemas de ERP e CRM, mas o que o
que se refere cada uma dessas siglas? Abaixo serão explicados de maneira sucinta cada um desses
termos.
ERP é a sigla para o termo inglês Enterprise Resource Planning ou em uma tradução direta
Sistema Integrado de Gestão Empresarial, esses sistemas são responsáveis por realizar a interligação
de todos os processos e os dados de uma empresa, portanto, para muitas das empresas esse é o seu
principal sistema de informação. Os sistemas ERP comumente são subdivididos em módulos e cada
módulo é responsável por um grupo de processos, esses módulos são frequentemente atrelados a
setores, como por exemplo um ERP pode ter um módulo de vendas onde as vendas são cadastradas
e gerenciadas, após esse processo os dados são encaminhados para o módulo financeiro que realiza
os trâmites de faturamento e cobrança dessa venda, os dados de faturamento são então
encaminhados ao módulo contábil onde o setor de contabilidade realiza os cálculos de tributos e
impostos sobre o faturamento.
Com o exemplo acima é possível verificar que todo o processo fora realizado dentro de um
único sistema ERP que é subdivido em vários módulos que atende os vários setores da empresa, o
que reforça a importância desse sistema e é possível observar que o mesmo possui dados de todas
as transações realizadas na empresa. Como exemplo dos principais sistemas ERP utilizados no meio
comercial temos: SAP, TOTVS, Linx, Senior Sistemas, Oracle, Conta Azul, SAGE X3, Nasajon, CIGAM,
Alterdata, AOKI Sistemas, ERPflex, Gatec, dentre outros.
CRM é a sigla para o termo inglês Customer Relationship Management que pode-se traduzir
como Gestão de Relacionamento com o Cliente, nessa classe de sistemas estão aqueles que
possuem o objetivo de informatizar as funções de contato com os clientes, esses sistemas fornecem
ferramentas que auxiliam as empresas a realizar uma mudança de atitude corporativa que resulta na
realização de campanhas que criam e mantém um bom relacionamento com os clientes efetivos e
clientes em potenciais. Os sistemas CRM armazenam o inter-relacionamento com os clientes e
guarda de maneira inteligente dados sobre suas interações com a empresa e suas atividades
realizadas. Como exemplos de sistemas CRM podemos citar: ZohoCRM, RD Station CRM, HubSpot
CRM, Agendor, Pipedrive, Nectar, Salesforce, Freshsales, Moskit, Sugar CRM, Bitrix24, Agile CRM,
Ploomes, dentre outros.
Uma abordagem que tem sido utilizada em soluções de BI é a análise preditiva, para tal,
modelos de inteligência artificial podem ser aplicados sobre os dados históricos das empresas e
esses modelos entregam aos usuários projeções de comportamento. Alguns autores diferenciam as
soluções de Business Intelligence (BI) como soluções que analisam e apresentam apenas dados
históricos e presente, já as soluções de Business Analytics (BA) são aquelas que além de
apresentarem as análises históricas e presentes, ainda usam essas para gerar predição (previsão)
para futuros comportamentos.
Existem diversos players de Business Intelligence no mercado, o que diferem entre eles são
as tecnologias que cada um utiliza como por exemplo, qual linguagem de programação eles aceitam,
quais sistemas de gerenciamento de banco de dados (SGBD) eles implementam. Dentre as várias
ferramentas de BI podemos citar como exemplo: o PowerBI da Microsoft, BI da IBM, o Qlickview, o
Tableau e o que vamos abordar mais detalhadamente adiante, o Pentaho da Hitachi.
Dentre os diversos players de BI, há muitos anos os que lideram o mercado são o PowerBI da
Microsoft, o Tableau e o QlickView, conforme relatório da Gartner expresso no quadrante mágico
abaixo que exibe os resultados de uma pesquisa da presença de mercado de players de BI, é uma
forma de compreender as variações dos produtos e também na possibilidade de escolher uma
determinada ferramenta, na imagem abaixo são exibidos os resultados da última avaliação realizada
pela Gartner, é possível observar também que as principais empresas de SGBD também possuem
suas soluções de BI como é o caso da Oracle e da IBM.
Sistemas de BI podem operar sobre diferentes quantidades de dados, trabalhando desde de
pequenas quantidades de registros como em uma planilha eletrônica por exemplo, a uma grande
quantidade de dados de diferentes fontes de origem, o que comumente denomina-se Big Data.
Embora seja possível a utilização de poucos registros, para realizar as devidas análises é mais
recomendado ter uma quantidade maior de dados, pois a confiabilidade é maior se mais dados
afirmam algo.
Uma área de grande importância dentro do BI é a de visualização das informações, para isso,
diferentes mecanismos podem ser aplicados, abaixo serão apresentados os que são comumente
utilizados:
Dashboards
Os dashboards ou painéis de instrumentos são interfaces gráficas que fornecem uma visão
de várias informações ao mesmo tempo e muitas vezes de maneira dinâmica, isto é, ao clicar
em um elemento do dashboard, filtros são aplicados sobre os dados fazendo com que outros
elementos sejam alterados. Esse nome “dashboard” faz uma referência a um painel de
instrumentos de um carro, onde diferentes mostradores, exibe diferentes informações
importantes (velocidade, quantidade de giros do motor, pressão do óleo, temperatura do
motor e etc.) ao mesmo tempo e de maneira simples para que um usuário a um simples
olhar consiga interpretar as informações. Na figura abaixo é exemplificado um dashboard,
onde é possível verificar que na mesma tela várias informações são dispostas em diferentes
componentes gráficos.
Cubos OLAP
A sigla ETL provém do termo em inglês Extraction, Transformation and Load, que em sua
tradução é o processo de Extração, Transformação e Carga de dados. Dessa forma, as ferramentas
de ETL, são responsáveis por extrair os dados de diferentes tipos de fontes, como por exemplo:
sistemas de gestão empresariais (ERP), sistemas de relacionamento com clientes (CRM), planilhas
eletrônicas, sistemas legados, sites de internet, redes sociais, dados de sensores, arquivos de
formatos diversos (XML, TXT, etc), dentre outros.
Após a extração os dados ficarão em uma área de transição (staging area), sendo que após
esse processo de extração os dados são então transformados e limpos, isto é, são processados para
que os mesmos possam atender a regra de negócios onde eles serão utilizados, nessa etapa também
são tratados os dados faltantes por exemplo, bem como os tipos de dados são transformados e
preparados para a seguinte etapa.
A terceira etapa é a de carga, sendo que nela os dados das etapas anteriores são então
armazenados, geralmente de maneira estruturada em um Sistema de Gerenciamento de Banco de
Dados (SGBD). Nessa etapa de carga os dados são armazenados de maneira mais padronizada, por
exemplo: pode-se extrair dados de diferentes redes sociais com campos de data em formatos
diferentes como 13-02-2019 e 02/13/19, na etapa de transformação essas duas datas diferentes
serão padronizadas e na etapa de Carga somente um formato de data será armazenado.
Objetivos de aprendizagem
Introdução
Por fim iremos aprender o fluxo de dados que ocorre em um processo de ETL.
OLTP E OLAP
OLTP
Nos sistemas OLTP comumente são registradas todas as operações que são realizadas dentro
de uma empresa ou uma organização, com isso, os sistemas OLTP possuem grande importância e
relevância nesses cenários. Uma característica bastante comum é que essa classe de sistemas
operam com transações repetitivas e as transações trabalham de maneira concorrente, pois vários
usuários precisam acessar os bancos de dados ao mesmo tempo, então nesses casos um spool de
conexões isto é, um mecanismo de filas, trata as conexões para que todas as operações possam ser
realizadas.
Nos sistemas OLTP são registradas todas as operações realizadas em uma empresa ou
organização, isso reforça a importância e relevância deles, sendo que nessa classe de sistemas além
de haver uma grande manipulação de dados, as transações são realizadas de maneira repetitivas.
Atomicidade é a característica que define que em uma transação envolvendo duas ou mais
partes de informações discretas, ou a transação será executada totalmente ou não será
executada, garantindo assim que as transações sejam atômicas;
Consistência: A transação cria um novo estado válido dos dados ou em caso de falha retorna
todos os dados ao seu estado antes que a transação foi iniciada;
Isolamento: Uma transação em andamento mas ainda não validada deve permanecer
isolada de qualquer outra operação, ou seja, garantimos que a transação não será
interferida por nenhuma outra transação concorrente.
Durabilidade: Dados validados são registados pelo sistema de tal forma que mesmo no caso
de uma falha e/ou reinício do sistema, os dados estão disponíveis em seu estado correto.
Pode-se resumir sistemas OLTP como sistemas que trabalham com dados transacionais, e a
maior parte dos sistemas de informações que interagimos são OLTP. Um exemplo de sistemas OLTP
é um ERP de um supermercado, imagina que um funcionário verifica o estoque para saber quais os
produtos estão em baixa ou em falta; os compradores então compram e abastecem o estoque
atualizando as quantidades no sistema; um cliente realiza uma compra com alguns produtos, sendo
assim é emitido para ele um cupom fiscal e os dados são diminuídos do estoque; os dados sobre
esse faturamento são enviados ao setor contábil do mercado que irá realizar o pagamentos dos
impostos e encargos. Todo esse processo foi realizado utilizando-se dados transacionais conforme
tabela abaixo:
No processo acima é descrita uma única venda a um único cliente, agora imagina esse
cenário acontecendo simultaneamente em um supermercado com 30 caixas e com uma média de
2.000 clientes/dia, imagine ainda que os diretores passam o dia todo emitindo relatórios gerenciais
sobre o andamento desse mercado. Esses banco de dados provavelmente não conseguiriam
entregar essas informações em tempo real, visto que são muitas requisições para que ele consiga
processar.
OLAP
Os sistemas OLTP diferem dos sistemas OLAP em alguns pontos, a abordagem que eles
utilizam são diferentes, na tabela abaixo são demonstrado nas linhas alguns pontos de observação e
nas colunas, como cada tipo de sistema se comporta:
OLTP OLAP
Dados Transacionais Analíticos
É de grande importância que o Data warehouse não influencie nas demais base de dados
OLTP, pois embora os dados que irão popular esses Data warehouses serão originados dessas bases,
sejam elas de sistemas ERP, sistemas CRM ou outros sistemas empresariais, ainda sim o Data
warehouse será o banco de dados com o foco analítico, portanto suas rotinas de uso não devem
impactar nos demais banco de dados e sistemas. Para a população de um Data warehouse utiliza-se
um processo de ETL.
Um Data warehouse pode ter diferentes padrões implementados em si, mas um padrão
largamente utilizado é a modelagem dimensional, que fora criada pelo pesquisador PhD Ralph
Kimball, que é um dos precursores do Data warehouse e desenvolveu importantes pesquisas para
esse tema. Na modelagem dimensional 2 itens são definidos e o armazenamento de dados estará
sempre de acordo com esses itens, sendo eles:
A tabelas de Fatos, como sugere o nome, são os fatos realizados nas empresas como por
exemplo quando uma venda é realizada, popula-se então a tabela Fato de Vendas, sendo que os
produtos vendidos, em qual empresa foi vendido e em qual data, apenas terão chaves que
apontarão para as respectivas tabelas de dimensões. Sendo assim, quando for necessário visualizar
quais foram as vendas realizadas na empresa A entre os meses de janeiro a junho do ano de 2019,
com essa estrutura fica mais fácil.
Um subconjunto de grande utilização em Data Warehouses são os Data Marts que são
bancos de dados com as mesmas características dos DWs porém sua estrutura abrange uma
determinada área de assunto como por exemplo em uma empresa existe um Data Mart específico
para Vendas, outro para o Estoque, outro para a Contabilidade e etc. Ao invés de serem agrupados
por assunto, os Data Marts também podem ser periódicos como por exemplo, um Data Mart com
informações das Vendas de 1 ano, outro Data Mart das Vendas de 5 anos, outro Data Mart das
vendas dos últimos 15 anos, dentre outros.
Existem 2 abordagens do fluxo de dados para um Data Mart sendo que na primeira, as
informações presentes nos Data Marts vêm dos Data Warehouses, sendo que nessa abordagem o
Data Warehouse compõe os Data Marts; na segunda abordagem o processo é inverso, sendo que
nela o processo de ETL é realizado para popular os Data Marts e os Data Marts irão compor os Data
Warehouses, essa visão pode ser de grande utilidade quando se cria um grande projeto porém esse
projeto será modularizado e o desenvolvimento de cada etapa poderá concluir a criação de um Data
Mart.
Uma característica relevante para um Data Warehouse é o modelo em que as tabelas serão
dispostas, conectadas e como elas irão interagir entre sim, bem como a forma como os dados serão
estruturados e organizados. Os modelos de DW variam das necessidades de cada caso, os dois mais
comuns atualmente são o Modelo Estrela (Star Schema) e o Modelo Floco de Neve (Snow Flake),
cada um com sua característica e limitação referente ao outro.
Modelo Estrela
Proposto pelo pesquisador PhD Ralph Kimball, para ser um modelo altamente
redundante, onde todas as descrições seriam repetidas em cada dimensão. Sua
estrutura é composta por uma tabela central de Fatos e um conjunto de tabelas
ligadas a ela, que são chamadas de dimensões. As dimensões são compostas por
eventos ou características do mesmo, enquanto a tabela fato, como o próprio nome
diz, armazena os fatos ocorridos. Segundo Singh (2001) uma característica
importante desse modelo é fato de suas dimensões serem desnormalizadas, isto
gera várias duplicidades no banco, mas também garante confiabilidade nas
consultas. Barbieri, 2001, cita como desvantagem do modelo estrela o fato de ele
não ter uma perfeita coesão entre os Data Marts e um esforço redobrado na
extração de dados, já que várias informações são duplicadas. Na figura 2 pode se
verificar a estrutura do modelo estrela.
Modelo floco de neve também possui uma tabela Fatos ligada as entidades de
dimensões, porém, ao contrário do que ocorre com o modelo estrela, há entidades
relacionando entre si, isto diminui drasticamente o tamanho do DW, porém as
consultas podem se tornar um pouco complicadas. Segundo Machado (2004), O
modelo floco de neve é o resultado da decomposição de uma ou mais dimensões
que possuem hierarquias entre seus membros. O que difere também do modelo
estrela é o fato das dimensões serem normalizadas, não ocorrendo as duplicidades
que ocorre no modelo estrela, SINGH (2001) completa dizendo que normalizando os
dados das tabelas dimensionais de um modelo estrela transforma o mesmo em um
modelo floco de neve. Na figura 3 observa-se a estrutura do modelo Floco de neve.
Processos de Mineração de Dados (Data Mining) são comumente realizados sobre os dados
do Data Warehouse, com esses processos é possível descobrir conhecimentos relevantes sobre os
dados, aplicando assim modelos que encontram padrões e correlações nos dados armazenados.
Módulo 3 – Pentaho
Objetivos de aprendizagem
Introdução
Vamos aprender também sobre o Pentaho Schema Workbench e sobre a ferramenta Saiku Analitycs.
O que é Pentaho?
A suíte Pentaho conta com 2 versões: uma gratuita e open-source (versão Comunnity Edition
ou CE) e outra versão paga (versão Enterprise Edition ou EE), na versão EE são disponibilizadas
algumas ferramentas exclusivas de visualização de cubos e o principal diferencial é que nessa versão
existe o suporte técnico e treinamentos diretamente da Hitachi Group Company que é a empresa
proprietária do Pentaho; já na versão CE não existe o suporte direto de uma empresa, sendo assim,
caso seus desenvolvedores necessitem de um apoio terá que contar com a comunidade.
Desenvolvida desde 2004 e com a linguagem de programação Java, o Pentaho é uma das
ferramentas mais usadas e com maior reputação dentre as soluções de BI existentes (MARINHEIRO;
BERNARDINO, 2013). O Fundador Richard Daley gostaria de desenvolver um sistema de informação
em java, poderoso o suficiente para suprir toda a demanda de BI de uma organização, com isso
evitaria a instalação de diversos outros sistemas para atingir um objetivo final, acreditando que
deveria existir uma melhor maneira para a implementação de BI.
O Pentaho pode ser considerado uma ferramenta de grande confiabilidade pois no Brasil, ele
é usado em diferentes setores de industrias, comercios e órgãos governamentais como por exemplo,
a Caixa Econômica Federal, Banco do Brasil, Itaipu Binacional, Senado Federal, Correios, Serpro, Sesi
e Federação das Industrias, Exército Brasileiro, GVT, Renault, Globo.com, CAPES, UFPR, dentre
outras. No exterior o Pentaho é usado por grandes empresas como Caterpillar, Nasdaq, Randstad,
Veikkaus, Opower, Marketo, Edo, Bank of America, Telefonica, Lufthansa, Mozilla, OLX, Mobly,
SalesForce Marketing Cloud, United States Postal Service, Bosch Group, Fiat Chrysler Automobiles
NV, Foxconn, dentre outras.
A suíte é composta por diversos componentes que juntos formam um ecossistema que
permite realizar desde o processo de ETL, até a visualização das informações. Os principais
componentes do Pentaho são:
Pentaho Data Integration, é o módulo responsável por fazer todo o processo de ETL
sobre os dados;
Pentaho Mondrian OLAP server, ferramenta criada para lidar com bancos de dados
OLAP e é utilizada para configurar o ambiente onde serão gerados os cubos;
Saiku Analitycs, ferramenta para a criação de cubos OLAP por usuários comuns;
Também conhecido como Kettle, é o módulo de ETL (Extraction, Transformation and Load)
da suíte Pentaho, portanto ele é o responsável por toda a manipulação e estruturação dos dados
que as outras aplicações do Pentaho irão utilizar. Embora o PDI seja parte da suíte Pentaho, ele pode
trabalhar sem a necessidade das outras aplicações (stand-alone), dessa maneira, ele pode ser
utilizado para realizar os processos de ETL de maneira descomplicada (MARINHEIRO; BERNARDINO,
2013). Por possuir uma integração com soluções Hadoop, o resultado do PDI pode alimentar
diretamente soluções de análise de Big Data.
O PDI trabalha com dois tipos de atividades, as transformações (transformations), que são
uma série linear de operações aplicadas sobre os dados; e os trabalhos (Jobs), que são os
gerenciamentos das transformações. Os trabalhos controlam o fluxo de dados entre as
transformações e os possíveis erros que possam acontecer nessas transformações, conforme
demonstrado na Figura 4. Tanto nas transformações quanto nos trabalhos, através do spoon o PDI
utiliza componentes visuais (interface gráfica) para separar e identificar cada estágio de uma
atividade, dessa forma, cada componente tem sua característica e é responsável por uma etapa.
Em uma transformação cada passo (step) pode conter uma atividade essas por sua vez
podem ser:
Fusão de dados provenientes de tabelas, arquivos (XML, TXT ou CSV), dentre outras
fontes;
Concatenação de valores;
O PDI pode conectar-se com diversos sistemas gerenciadores de banco de dados, para tal,
ele utiliza o JDBC (Java Database Connectivity) que é uma espécie de tradutor onde, por meio de um
conjunto de classes Java as instruções em linguagem SQL são enviadas para os banco de dados,
dessa forma uma mesma instrução pode ser aplicada a um banco de dados MySQL, um banco de
dados Oracle ou ainda um banco de dados PostgreSQL, bastando alterar o driver JDBC de cada uma
dessas conexões.
Uma boa prática é usar sempre que possível o padrão ANSI SQL para criar as instruções SQL,
assim, caso haja a necessidade de migração de um sistema de gerenciamento de banco de dados
(SGBD), basta alterar os dados de conexão e o driver JDBC, não sendo necessário a reescrita das
instruções por possuírem especificidades de um determinado SGBD, todavia, mesmo sendo uma
prática recomendada, existem situações onde a melhor opção será realizar uma instrução específica
de um banco para resolver um problema, nesses casos, caso haja a migração de SGBD esse ponto
deverá ser reescrito.
Na Figura abaixo é demonstrada a tela principal do spoon onde é possível ver uma
transformação e cada um dos steps bem como o fluxo dos dados entre eles. No painel à esquerda
(área vermelha) são disponibilizados cada componente que poderá ser usado para compor os steps;
já os steps e o fluxo dos dados por sua vez são demonstrados no painel maior (área azul); na parte
inferior (área amarela) são disponibilizados alguns resumos com relação aos logs de execução das
transformações ou JOBs.
Os Jobs por sua vez são estruturas compostas por sequências de operações que lidam com
as transformações, comumente separa-se operações diferentes em transformações diferentes, por
exemplo, se em uma empresa é necessária a extração dos dados de um SGBD de um ERP, extração
de dados do SGBD de um CRM e extração de dados de algumas planilhas eletrônicas, nesse caso o
ideal é criar 3 transformações diferentes, cada uma com uma especificidade. Para executar as 3
transformações usa-se então um Job, que irá executar cada uma dessas transformações de maneira
linear ou até mesmo em paralelo automatizando assim o processo de ETL.
Como dito anteriormente o spoon é a interface gráfica utilizada para criar e realizar
manutenções em transformações e Jobs, porém, para a execução das transformações o programa
usado é o Pan, que por sua vez executa as transformações sejam elas em arquivos texto (ktr) em um
sistema de arquivos comum ou ainda em um banco de dados. A execução dos Jobs também não é
realizada pelo spoon, sendo que para eles o Kitchen é o programa que será utilizado. Os três
programas spoon, pan e kitchen compõem o Pentaho Data Integration que fornece todas as
operações necessárias para os processos de ETL.
Schema Workbench (Mondrian) e Saiku Analytics
O Pentaho Schema Workbench (PSW) é a interface gráfica utilizada para criar e testar os
cubos OLAP, esses cubos são utilizados para realizar a análise dos dados por perspectivas diferentes,
os cubos segmentam uma informação por eixos de análise tornando a interpretação desses dados
intuitiva. O PSW é utilizado para realizar a tradução para o Mondrian que é uma linguagem própria
de programação que mistura Haskell e Java, o mecanismo do Mondrian processa as solicitações na
linguagem MDX com os esquemas ROLAP (Relational OLAP), os esquemas são modelos lógicos para
mapear o modelo de dados multidimensional físico. Os esquemas são arquivos XML com uma
estrutura na qual o Mondrian reconhece e consegue realizar os mapeamentos, em resumo um
esquema consistem em uma única tabela de fatos e em algumas dimensões, cada uma com uma
determinada hierarquia que consistem em vários níveis.
É importante observar que um desenvolvedor deve conhecer bem seu modelo de dados
físico (Data Warehouse) para gerar bons resultados no PSW uma vez que o papel do PSW é gerar
mapeamentos entre as tabelas do Data Warehouse, sendo necessário o conhecimento de como as
tabelas relacionam-se entre si. Observa-se também que o foco do PSW não é o de criar os cubos
para os usuários finais e sim de configurar quais dados os usuários terão acesso para posteriormente
cruzá-los e criar os cubos com outras ferramentas como o JPivot ou o Saiku Analitycs.
Os cubos são estruturas que agrupam as medidas (measures) pelos níveis e hierarquias de
cada uma das dimensões, sendo que eles agregam diversas dimensões como por exemplo: dimensão
de produto, dimensão tempo, dimensão de serviço, dimensão geográfica, dimensão de empresa;
com dados resumidos como por exemplo: os números de vendas ou números de clientes.
O nível diz respeito ao nível de detalhe superiores e inferiores o que comumente chama-se
de granularidade, níveis do Ano, Trimestre, Mês e Dia numa hierarquia de Tempo.
As medidas são campos quantitativos que expressam valores por exemplo: Descontes,
Pagamentos, Despesas, Quantidades, etc.
Na figura abaixo é demonstrada a tela do Pentaho Schema Workbench, onde é possível ver
na margem esquerda uma árvore com o cubo StellWheelsSales (área azul), que possui a dimensão
Markets, Custommers, Product, Time e Order Status (área verde); possuí também as medidas
Quantity e Sales (área vermelha).
O Saiku Analytics é uma ferramenta gráfica desenvolvida pela empresa Meteorite.BI onde é
possível a criação de cubos OLAP por usuários comuns. O Pentaho utiliza a versão Community da
ferramenta, mas é possível também utilizar a mesma sozinha (stand-alone), porém paga. Essa
ferramenta é usada por grandes corporações como Accenture, Amazon, Linkedin, Netflix e o
governo dos Estados Unidos.
Uma das principais característica dos cubos é a facilidade de sua geração sendo ela possível
de ser feita por um usuário que não é um desenvolvedor ou um cientista de dados, o Saiku permite
que o usuário apenas arraste e solte (drag and drop) os campos com as informações que ele deseja
visualizar. O próprio Saiku faz a tradução para a linguagem MDX das informações criadas pelo
usuário, dessa forma, esse não precisa ter nenhum conhecimento sobre qualquer linguagem de
programação, tornando a ferramenta eficaz para o uso de gestores, gerentes, encarregados,
contadores, dentre outros. Após criado, um cubo pode ser salvo e acessado posteriormente por o
usuário que o criou ou por qualquer outro usuário que tenha a permissão de acesso, esse recurso é
útil para acompanhar por exemplo informações que mudam mensalmente.
O PRD surgiu por volta de 2006 onde era chamado de JFreeReport, sendo que
gradativamente seu nome foi sendo alterado para Pentaho Report Designer, no PRD assim como nas
outras ferramentas do Pehtaho, os dados são acessados por meio de conexões JDBC os dados que
farão parte dos relatórios são provenientes de consultas ao banco de dados (Data Warehouse) e
para essas consultas podem ser utilizados: o Assistente de Design de Relatórios, SQL Query Designer,
MQL Query Builder ou de maneira manual.
Na figura abaixo é exibida a tela principal do PRD com um relatório aberto, é possível
observar que na parte onde mostra o que será exibido no relatório (área azul), o PRD possui algumas
réguas que mostram o tamanho de cada um dos elementos do relatório, existe também uma área
(vermelha) que exibe em qual seção do relatório é aquela linha, há uma parte (área verde), onde os
elementos podem ser selecionados arrastados e soltados para o relatório (área azul) e por último há
um inspetor de elementos (área amarela), que alterna e nele as propriedades de cada elemento
podem ser visualizadas e alteradas.
Ele foi criado porque os pesquisadores perceberam que existiam diferentes modelos de
aprendizado disponíveis sendo que cada um era executado em uma linguagem de programação
diferente, sobre plataformas diferentes e formato de dados de entrada e saída diferentes o que
tornava suas implementações trabalhosas e dificultava o processo de comparação entre os modelos
e algoritmos. Partindo dessa ideia eles desenvolveram uma “caixa de ferramentas” para o cientistas
de dados, sendo que essa ferramenta é utilizada tanto para pesquisadores quanto para profissionais,
pois nela foram implementados vários métodos para resolver todos os problemas padrões de
mineração de dados, como: classificação, regressão, agrupamento, regras de associação e seleção de
atributos, além dos algoritmos de pré-processamento e das ferramentas de visualizações conforme
mencionado anteriormente.
Uma vantagem na utilização do WEKA é que podem ser realizado a limpeza e adequação de
dados, aplicados vários modelos e realizado vários treinamentos, aprendizados e avaliações sem que
o usuário digite uma linha de código sequer, pois com o ambiente gráfico esse processo é facilitado,
todavia, caso o usuário queira trabalhar com o ambiente de comandos, também é possível o que
torna a ferramenta mais robusta e diversificada. Usuários também podem implementar algoritmos
que não existem na ferramenta e disponibilizá-los por meio de um portal (Package Manager) para
que outros usuários possam utilizá-los.
O WEKA também conta com o Auto-WEKA que é uma ferramenta de AutoML, sendo que
quando utilizada o processo de seleção do algoritmo de seleção de atributos, modelo de
classificação, aprendizagem e seus hyper-parâmetros são configurados de maneira automatizada
(KOTTHOFF; LEYTON-BROWN, 2016; THORNTON et al., 2013).
Na figura abaixo é exibida a tela principal do WEKA na aba de classificação (classify) onde é
possível ver que além dessa aba existem outras com diferentes intuitos.
Instalando o Pentaho em ambiente Windows
Como a suíte Pentaho é desenvolvida sobre a linguagem Java, para a instalação dos
programas que compõem a suíte, primeiro é necessário instalar e configurar o Java. Quando se trata
de Java dois pacotes estão disponíveis para a instalação, o primeiro é o mais comum a ser instalado
sendo que ele contém os arquivos e bibliotecas e também a máquina virtual Java (JVM) necessárias
para executar os arquivos do Java (bytecodes), esse pacote é conhecido como JRE (Java Runtime
Environment), sua instalação é bem simples e não possui a necessidade de configurações adicionais,
grande parte dos computadores que utilizam ferramentas desenvolvidas em Java o tem instalado.
Outro pacote do Java que também pode ser instalado é um mais focado em bibliotecas para
desenvolvimento de aplicações, sendo que ele possui compiladores e debugadores necessários para
a criação dos applets e das aplicações. Esse pacote conhecido como JDK (Java Development Toolkit)
além de sua instalação possui a necessidade de configurações adicionais que serão explicadas nesse
capítulo.
Para a instalação do JDK primeiro é necessário acessar o portal do Java e fazer o download
do JDK para a versão específica do seu sistema operacional, na Figura abaixo seleciono o instalador
na versão 8 update 41 para sistemas Windows de 64 bits.
Após o download do instalador basta executá-lo, conforme imagem abaixo
Basta ler os dados nas telas e avançar, atenção para a tela onde será configurado o caminho
de instalação do JDK, você deve informar o caminho e guardar sua localização, pois posteriormente
será necessário, conforme imagem abaixo.
Aguarde então a finalização do processo de instalação
É solicitado então que informe qual local será instalado agora o JRE
Após informar o caminho ou manter o caminho padrão, basta aguardar a instalação do JRE
Após a conclusão da instalação do JRE e do JDK vamos realizar um teste, para isso abra o
prompt de comando indo até o menu iniciar e digitando “CMD”, ou ainda mais rápido, basta usar o
atalho de executar segurando no teclado as teclas “Windows + R” e na caixa que irá abrir digitar
“CMD” e confirmar, conforme abaixo
Se for exibida a versão do Java (nesse exemplo “1.8.0_241”) então o JRE está instalado
corretamente, e as aplicações em Java já podem ser executadas nessa máquina.
Vamos então verificar o JDK se está correto, para isso basta digitar no mesmo terminal um
comando bem parecido com o anterior porém ao invés de usar a palavra java usaremos javac, pois
adicionaremos a letra “c” referente a compilador. O comando então ficará conforme o comando
abaixo
Vamos então configurar as Variáveis de Ambiente para executarmos o JDK, para isso
abra uma janela no Windows e localize o ícone “Este Computador”, clique então sobre ele com o
botão direito do mouse e vá em “Propriedades”, conforme imagem abaixo
Na tela que irá abrir vá em “Configurações avançadas do sistema”, no canto esquerdo da tela,
conforme imagem abaixo
Na tela que irá abrir vá então em “Variáveis de Ambiente...”
Nessa tela são exibidas todas as variáveis de ambiente configuradas em seu sistema
operacional a parte superior é composta pelas variáveis específicas para seu usuário de acesso, já na
parte inferior são as variáveis globais, portanto, são válidas para todos os logins de usuários. Vamos
adicionar uma nova variável global, portanto, clique no botão “Novo”.
Na tela que irá abrir vamos configurar a primeira variável de ambiente para isso no campo
Nome da variável iremos colocar
JAVA_HOME
No campo “Valor da variável” iremos colocar o caminho onde foi instalado seu JDK,
conforme foi orientado guardar essa informação no momento da instalação, instalei no caminho
padrão
C:\Program Files\Java\jdk1.8.0_241
CLASSPATH
E o valor
;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\htmlconverter.jar;%JAVA_HOME%\jre\lib;%JAVA_HOME%\jre\lib\
rt.jar;
Por fim precisamos configurar a variável PATH, porém na maioria dos casos essa variável já
encontra-se configurada para outros por programas, se esse for o caso, ao invés de criar uma nova
variável, você precisa apenas editar a variável existente e adicional o valor a ela separando sempre
os valores por ponto e vírgula, sendo que no final ficará a variável
PATH
Com o valor
;%JAVA_HOME%\bin
Para instalar o PDI, é necessário acessar o portal e fazer o download da ferramenta e baixar a
última versão estável, mas atenção, pois o Pentaho conta com 2 versões, a que vamos utilizar é a
versão Comunnity, portanto, observe se a versão que está sendo baixada possui a sigla CE, como na
imagem de exemplo abaixo onde é possível observar o nome do arquivo como “pdi-ce-9.0...”,
portanto trata-se do PDI edição da comunidade (CE) e na versão 9.0,
Após o download, você terá um arquivo compactado, com as bibliotecas e os programas que
o PDI utiliza, basta extrair todos esses arquivos para um diretório a sua escolha e localizar o arquivo
com o nome “Spoon.bat”, abra-o com algum editor de texto, sugiro utilizar o Notepad++ que é bem
completo. Dentro do arquivo existem várias linhas com configurações, vamos configurar então a
quantidade de memória que o Java poderá alocar e utilizar para o PDI, encontre a linha
Como estou usando uma máquina simples com 8 Giga de memória RAM, vamos alterar o
valor do parâmetro -Xmx para 6G, dessa forma a quantidade máxima de memória que o Java poderá
alocar para o PDI é 6 Giga, dessa forma podemos executar transformações e jobs no PDI sem que
tenhamos problemas de lentidões, o valor do parâmetro ficará
“Xmx6G”
Introdução
Antes de iniciarmos as definições acerca de Big Data, é de grande importância conhecermos os tipos
de dados mais comuns que podem existir e que são regularmente utilizados, podemos classificar os
dados levando em consideração sua estruturação, e isso faremos logo abaixo.
O primeiro grupo de dados são os dados estruturados, esses, são dados que atendem um padrão,
possuem um esquema ou um formato definido, esses dados são fáceis de visualizar e entender a
olho nu, não sendo necessárias análises mais profundas e/ou complexas. Podemos utilizar como
exemplo o preenchimento de um formulário de cadastro de pessoas físicas composto por campos
como: nome da pessoa, endereço de e-mail, data de nascimento e sexo; esses campos já possuem
basicamente um formato padrão sendo que campos de nome, são campos string e comumente
possuem caracteres do tipo letras e não possui caracteres especiais (@,#,$,-,...) nem números
(0,1,2,3,...); o campo de endereço de e-mails comumente possuem um formato que aceita letras,
números e alguns caracteres especiais e obrigatoriamente deve ter uma cadeia de caracteres um @
e outra cadeia de caracteres sendo que nessa última ao menos um ponto (.) deve aparecer, por
exemplo “endereco_1@siteprovedor.com”; o campo data de nascimento pode ser configurado para
receber apenas caracteres numéricos de mode que seja DD/MM/AAAA; e por fim o campo sexo
pode ser preparado para receber apenas os valores “M” ou “F”.
Mesmo sem conhecer a estrutura é possível “a olho nu” entender que o campo1 é um campo
textual, o campo2 é um campo de endereços de e-mails, o campo 3 um campo de datas e o campo4
um campo de sexo, isso tudo é possível porque esses dados são estruturados e sua estrutura é
comumente utilizada, portanto, é bastante conhecida. Os dados estruturados geralmente são
arquivados em bancos de dados (SGBD).
Os dados semi-estruturados são aqueles que possuem uma hierarquia, mas pode ser difícil
compreendê-los ou entender o seu padrão, geralmente esses dados são os intermediários entre os
dados estruturados e os não estruturados, como por exemplo dados XML, geralmente existe uma
hierarquia de tags neles, mas não é uma estrutura tão simples como os dados de uma tabela de
banco de dados por exemplo; os dados de páginas HTML também podem ser considerados como
dados semi-estruturados, pois embora as páginas possuam tags específicas, não são dados tão
simples de analisar a olho-nu como os de um cadastro.
Por fim os dados não-estruturados são os dados que não atendem a uma organização clara, não são
dados fáceis de compreender a olho-nu e muitas vezes não possuem um padrão de rápida
compreensão, o que pode os tornar mais difíceis de analisar, porém não são menos importantes. A
maioria dos dados gerados no mundo são dados não estruturados e como exemplo desses dados
podemos considerar os dados de: documentos texto (TXT, DOC), os vídeos, as imagens, os áudios, as
mensagens de textos (SMS), as conversas em chats de atendimentos, as gravações telefônicas, os
dados de sensores de IOT, dentre vários outros.
A imagem abaixo ilustra os 3 tipos de dados e torna possível compreender que os dados possuem
estruturas que os diferem entre si:
O que é Big Data?
Nos últimos anos muito tem se falado sobre o termo Big Data (BAO; CHEN, 2014) (TEKINER;
KEANE, 2013) (SRIVASTAVA; DONG, 2013) (BRYNJOLFSSON; MCAFEE, 2012) (GOLDMAN et al., 2012)
(DELSOTO, 2013) (TURKINGTON, 2013). A definição dos autores em (MANYIKA et al., 2011) diz que
Big Data são conjuntos de dados que as tecnologias convencionais não conseguiriam gerenciar, dada
a complexidade e tamanho desse conglomerado de dados. Outro fator importante a se considerar
em Big Data é a velocidade na obtenção de informações sobre uma massiva quantidade de dados.
Em algumas situações uma informação tem que estar disponível em alguns segundos, ou até mesmo
em tempo real, e isso reforça ainda mais a necessidade de uma solução não convencional para essa
categoria de problemas (GOLDMAN et al., 2012) (NANDIMATH et al., 2013).
Ainda não há uma clara definição quando o assunto é Big Data, pois cada autor cita uma
característica diferente e o define de acordo com sua perspectiva (HU et al., 2014). Embora não
existam regras e padrões definidos, uma característica comumente citada pelos autores é que para
ser Big Data o conjunto de dados deve atender três atributos, denominados como “3Vs”: Volume,
Variedade e Velocidade (BRYNJOLFSSON; MCAFEE, 2012). Essa definição é a mais tradicional, e
também a mais aceita encontrada na literatura, e é ela que a IBM, a Gartner e alguns pesquisadores
da Microsoft utilizam (HU et al., 2014). Todavia, existem outras classificações, que levam em
consideração além desses, outros atributos, como por exemplo: a dos “4Vs” que acrescenta o
atributo Valor (HU et al., 2014); ou ainda, a classificação dos “5Vs”, que adiciona também a
Veracidade a essa lista de atributos (SRIVASTAVA; DONG, 2013). Mais adiante iremos dar exemplos
em cada um desses “Vs”.
Grande parte dos dados gerados pelos usuários e por sistemas de informações ou
autonômicos são semiestruturados ou não estruturados, como por exemplo, FAX, e-mail, fotos,
vídeos, logs de sistemas (NANDIMATH et al., 2013). Por esses dados não obedecerem uma estrutura
estática, definida e previsível, torna-se difícil o armazenamento, o processamento, o cruzamento, a
interpretação e a geração de conhecimento sobre eles. Embora os dados tenham uma grande
promessa de valor agregado, é necessário usar estratégias adequadas para extração, mineração e
visualização das informações que porventura ali existam.
Estima-se que 80% de todo dado gerado no mundo são dados não estruturados e isso vem
mudando o cenário, onde antes apenas os dados transacionais estruturados eram analisados e
utilizados pelas empresas, começou-se a perceber que uma série de outros tipos de dados poderiam
entregar informações relevantes que serviriam como estratégias para a tomada de decisões.
1º V -> Volume
Facebook Instagram YouTube
1,23 bi usuários ativos/dia 80 milhões de fotos/dia 4 bilhões de visualizações/dia
Whatsapp Wikipedia
1 bilhão de usuários 40 milhões de artigos
2º V -> Variedade
3º V -> Velocidade
O infográfico abaixo exibe a quantidade de informações trafegadas a cada minuto na
internet no ano de 2019, é possível observar que serviços que são utilizados diariamente:
4º V -> Valor
O gráfico abaixo demonstra que quanto maior o tempo menor é o valor dos dados, isso
reforça que além do “V” de tempo existe um “V” de valor desses dados, visto que esses dados
podem oferecer aumento nos lucros de empresas
5º V -> Veracidade
É possível observar abaixo que do total de dados gerados não são todos os dados que
possuem veracidade, isto é, não são todos os dados que possuem valores financeiros para os
negócios
Dados válidos
Dada essas características em Big Data, é possível observar que ferramentas especiais
precisam ser utilizadas e fortes candidatas a solucionar essas demandas são as ferramentas como:
Apache Hadoop, Apache Spark, Apache Giraph, Apache Hama, Apache Storm, GraphLab, entre
outros. Essas soluções são consideradas tecnologias de análise de Big Data, pois desde o início foram
projetadas para o processamento de um grande volume de dados estruturados, semi-estruturados e
não estruturados.
Diferença entre Big Data e Business Intelligence
Muitas vezes os conceitos de Big Data são confundidos com os de Business Intelligence, mas
os conceitos são diferentes e embora ambos possam usar os mesmos dados possuem objetivos
diferentes que entenderemos então.
Uma analogia que pode ser feita é com a produção de um bolo, imagina o Big Data como os
ingredientes: farinha, fermento, ovos, leite, achocolatados, forma e o forno; agora imagina o BI
como um bolo de chocolate finalizado e assado. Muitas vezes ao adquirir os ingredientes no
mercado não tem o objetivo completamente definido e claro, pois os ovos que poderão fazer o bolo
também poderão fazer uma série de outras receitas, entende como muitas vezes o objetivo final do
Big Data é diferente do BI?!
Tem-se estudos que afirmam que a implementação de Big Data em empresas que já
possuem soluções de BI tem seu sucesso aumentado, uma vez que essas empresas já possuem a
“cultura de dados” instituída. Um conceito que tem crescido ultimamente é o de “BI on Big Data”,
sendo que nele são usadas tecnologias de extração de dados de Big Data e esses dados são
transformados em informações que alimentam sistemas de BI que apresentam os dados por meio de
Relatórios, Cubos OLAP multidimensionais e Dashboards. Com isso é possível observar que os
conceitos são diferentes mas podem funcionar em uma espécie de simbiose.
Módulo 5 – Hadoop
Objetivos de aprendizagem
Introdução
O que é o Hadoop?
Uma grande vantagem na utilização do Hadoop é que além dele remover a complexidade da
computação distribuída ele trás grandes vantagens do ponto de vista financeiro uma vez que ele
pode utilizar computadores comuns não sendo assim necessários hardwares específicos e de grande
portes; assim como os computadores as redes podem ser redes comuns, evitando assim a
necessidade de equipamentos específicos; como o Hadoop gerencia o cluster, a tolerância a falhas
acaba sendo automática, sendo que isso demanda poucos profissionais administradores do cluster;
por ser uma ferramenta de fácil utilização não é necessário uma número muito grande de
profissionais de programação para desenvolver pequenos e médios projetos; por ser uma
ferramenta que lida com a complexidade da clusterização, os usuários podem focar na regra de
negócios, o que aumenta a produtividade.
A ferramenta é mantida com o código aberto (open-source), portanto, conta com uma
equipe mundial de desenvolvedores que de forma mútua colaboram para a otimização dessa
plataforma, melhorando as ferramentas existentes ou desenvolvendo vários novos componentes
específicos (plug-ins), há também o apoio de grandes corporações que utilizam o Hadoop.
O Apache Hadoop é composto por vários sub-projetos, porém, atualmente, em seu núcleo
principal estão quatro: o Hadoop Common, o Hadoop Distributed File System (HDFS), o Hadoop
MapReduce e o Hadoop YARN. A figura abaixo demonstra a estrutura básica de uma arquitetura
Hadoop onde, na parte inferior está o HDFS que é o responsável pelo armazenamento dos dados de
maneira distribuída entre os nós do cluster; na parte do meio está o YARN que gerenciará os
recursos do cluster; na parte superior está o MapReduce, que irá processar os dados em lotes
(batch) e ao lado dele estão as outras formas de processamento, gerenciamento e acesso a dados,
como por exemplo: o Spark, Storm, Hive, Pig, HBase, entre outros.
Quem usa?
O Hadoop é amplamente utilizado ao redor do mundo, sendo uma tecnologia adotada por
companhias como:1 Google, Airbnb, Uber, Netflix, Microsoft, Amazon, IBM, Spotify, Pinterest,
Alibaba, Twitter, e-Bay, Yahoo, Facebook, LinkedIn, AOL, The New York Times, Last.fm Adobe, dentre
várias outras que utilizam suas soluções.
O projeto do The New York Times começou no ano de 2007, quando foram convertidos para
PDF todos os artigos publicados entre os anos de 1851 e 1980, sendo que cada artigo era composto
por imagens que foram anteriormente digitalizadas e havia a necessidade de redimensioná-las e
posicioná-las de maneira correta no PDF, para isso foi utilizado o Hadoop convertendo 4 Terabytes
de imagens no formato TIFF para 11 milhões de arquivos no formato PDF. Para esse processo foram
utilizadas 100 instâncias de máquinas na nuvem (EC2 da Amazon) durante 24 horas que gerou 1,5 TB
de arquivos PDF e o custo do projeto foi de cerca de U$$ 240,00.
Hadoop Common
O Hadoop Common é um módulo do Hadoop que serve como base para todos os outros
subprojetos, ele possui os utilitários e bibliotecas básicas e necessárias para que todo o ecossistema
Hadoop funcione corretamente.
Grande parte dos sistemas de informações utilizam banco de dados relacionais (RDBMS -
relational database management system) para operações com dados transacionais. Porém, em
algumas situações, estruturas comuns não conseguem processar um grande volume de informações
em um tempo esperado. Nesse caso, uma solução seria utilizar a computação distribuída, mais
especificamente, clusters ou grids, para dividir o processamento e o armazenamento entre as
máquinas (nós). Embora a utilização da computação distribuída seja uma opção, esses sistemas de
gerenciamento de banco de dados (SGBD) podem não se comportar de maneira esperada em um
ambiente de computação distribuída, sendo que sua implementação na maioria das vezes não é
transparente, e é necessário realizar todo o gerenciamento de falhas e a escalabilidade desses
SGBDs, o que pode ser muito complexo e trabalhoso. Para esses casos, pode-se utilizar SGBDs ou os
sistemas de arquivos distribuídos, como HDFS, que foram criados para esses ambientes.
Hadoop MapReduce
O Hadoop MapReduce pode ser considerado como o centro do Hadoop, é a parte onde os
dados são processados. Ele simplifica o desenvolvimento de aplicações paralelas e distribuídas,
fazendo com que não sejam necessários conhecimentos avançados nesse tema, uma vez que o
próprio Hadoop se encarrega de resolver as suas complexas configurações. Dessa forma, o usuário
do Hadoop pode focar seus esforços nas regras de negócios, deixando que o MapReduce se
encarregue do processamento (GOLDMAN et al., 2012). De acordo com uma função definida pelo
usuário, os fragmentos de dados (pedaços de entrada) presentes no HDFS são mapeados (Map) em
cada um dos nós e é atribuída uma chave, ou seja, um valor único que identifica e diferencia esse
fragmento do dado principal. Esses pedaços são então ordenados, armazenados no disco local do nó
e depois da execução do mapeamento, uma cópia do resultado de cada um deles é enviada para o
HDFS do nó que irá fazer a redução (Reduce). Ao receber os pedaços de dados mapeados e
ordenados, eles são fundidos e a função de redução é aplicada sobre eles (WHITE, 2012).
2. A função MAP é então aplicada em pedaços de dados e por meio dela são extraídas
algumas informações de valor;
4. A função REDUCE é então aplicada onde a mesma junta, compila, filtra, modifica e
etc;
Hadoop YARN
Na primeira geração do Hadoop, o MapReduce era utilizado como uma aplicação e como um
motor (engine) de execução, com o JobTracker sendo o mestre (master) e o TaskTracker sendo o
escravo (slave) (GOLDMAN et al., 2012). O problema é que com esse motor de execução, o Hadoop
permitia somente a execução de aplicações MapReduce, ou seja, somente aplicações em lote. Isso
foi resolvido com o YARN (Yet Another Resource Negotiator), também chamado de MapReduce 2.0
ou ainda MRv2, que é um módulo presente a partir da segunda geração do Hadoop. O YARN é uma
solução para o gerenciamento de clusters Hadoop, separando a parte do
gerenciamento/monitoramento das tarefas do cluster – que antes era feito pelo JobTracker; da
parte do processamento - que antes era feito apenas pelo MapReduce (VAVILAPALLI et al., 2013). O
YARN é uma camada intermediaria entre o MapReduce e o HDFS, e oferece suporte a múltiplas
aplicações e serviços, portanto, com ele, é possíve l estender o Hadoop não apenas para a utilização
com dados em lotes, processados em MapReduce, mas também com dados em tempo real (on-line),
dados em memória, dados de grafos, e de transmissões (streaming). Após o YARN o MapReduce
passou a ser apenas uma das aplicações executadas no Hadoop.
Instalando o Hadoop em ambiente Windows
Assim como o Pentaho, o Hadoop é desenvolvido sobre a linguagem Java, portanto, para sua
instalação é necessário primeiramente instalar o JRE, o JDK e configurar as variáveis de ambiente.
Após a configurações do ambiente é necessário realizar o download do Hadoop, a versão que vamos
usar é a versão 2 do Hadoop, embora já exista a versão 3 com algumas melhorias, para esse tutorial
focaremos na versão 2, mais especificamente na versão 2.10.0 que possui recursos mais que o
suficiente para resolver os problemas mais simples. O sistema operacional que estamos utilizando
nesse tutorial é o Windows 10 - 64 bits.
É necessário definir algumas variáveis de ambiente para que o Hadoop seja executado na
máquina, a primeira dela tem o nome de
HADOOP_HOME
O valor dessa variável é onde encontra-se a pasta “bin”, subdiretório de hadoop, conforme
exemplo abaixo
C:\hadoop-2.10.0\
A próxima variável a ser configurada é a PATH, porém a mesma já é utilizada para o Java,
portanto, é necessário editá-la, separar com ponto e vírgula e adicionar o novo valor “;C:\hadoop-
2.10.0\”, sem alterar os valores previamente cadastrados, dessa forma a variável com o nome
PATH
Será acrescida do valor
“;C:\hadoop-2.10.0\”
Ficando com o resultado conforme imagem abaixo
Agora será necessário configurar alguns arquivos XMLs para podermos iniciar o Hadoop,
para editar os arquivos é necessário abrí-los com um programa básico de edição de arquivos textos,
estamos utilizando o Notepad++ que possui uma grande quantidade de recursos de grande utilidade
para esse fim.
O primeiro arquivo que será editado tem o nome “core-site.xml” e encontra-se no caminho
“C:/hadoop-2.10.0/etc/core-site.xml” o arquivo terá que ficar da seguinte maneira
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
Feita a configuração basta salvar o arquivo e editar o próximo que será o “C:/hadoop-
2.10.0/etc/hadoop/mapred-site.xml”
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Salvo esse arquivo agora será necessário criarmos alguns diretórios na pasta raiz do Hadoop,
esses diretório serão usados pelo HDFS para armazenar os dados, crie então a pasta “data” dentro
de “C:/hadoop-2.10.0/”, conforme imagem abaixo
Após a criação dessa pasta crie então dentro dela as pastas “datanode” e “namenode”, o
resultado ficará conforme imagem abaixo
Agora edite o arquivo “C:/hadoop-2.10.0/etc/hadoop/hdfs-site.xml” e coloque nele as
informações dos diretórios recém criados, conforme abaixo
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>C:/hadoop-2.10.0/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>C:/hadoop-2.10.0/data/datanode</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
Depois de salvo esses 2 arquivos, abra um terminal (prompt) de comando indo até o menu
iniciar e digitando “cmd” execute-o como administrador e digite o comando
Esse comando irá preparar (formatar) o diretório “data” criado anteriormente para que o
HDFS consiga escrever, ao executar o comando você verá uma mensagem parecida com a abaixo
O próximo passo é então iniciar o Hadoop, para isso, abra um prompt de comando como
administrador, vá até o diretório 2 “C:\Hadoop-2.10.0\sbin” e execute primeiramente o start-
dfs.cmd, esse script irá subir o HDFS e todos os programas e arquivos necessários
2 Para mudar o diretório dentro do prompt de comandos do DOS basta usar o comando “cd DIRETORIO_DE_DESTINO”
Esse script irá então iniciar o HDFS, duas novas janelas serão abertas, uma com o mecanismo
hadoop datanode e outra com o hadoop namenode, conforme tela abaixo. Essa tela não pode ser
fechada, pois caso isso ocorra os programas serão encerrados, nessas telas irão ser descritos os logs
básicos de funcionamento de cada programa.
Após executar ambos os scripts o Hadoop estará em execução, para testar abra seu
navegador de internet e digite o endereço http://localhost:8088 irá aparecer a tela de status do
YARN (abaixo), onde é possível obter algumas informações básicas de funcionamento do mesmo
No momento não vamos atentar as informações apenas se está tela estiver aparecendo é
porque o Hadoop YARN fora iniciado, vamos agora verificar se o HDFS iniciou corretamente, para
isso digitaremos no navegador o endereço http://localhost:50070 sendo que nessa tela (abaixo) é
possível ver informações básicas do HDFS.
Caso essas telas estejam funcionando corretamente, o seu ambiente Hadoop já estará
pronto para receber seus programas e arquivos.
Usando o HDFS
Vamos então começar a manipular arquivos no HDFS, para isso, vamos primeiramente criar
um diretório (pasta) diretamente no HDFS utilizando o comando correto, para quem possui
familiaridade com os comandos de sistemas operacionais Linux, não encontrará dificuldades no
HDFS, pois na maioria das vezes os comandos são os mesmos ou então são bem próximos. Para criar
um diretório no HFDS utiliza-se o comando “mkdir” acompanhado do nome do diretório, dessa
forma o comando completo será:
Programa hadoop
Utilitário para manipular arquivos
A próxima coluna é a “Owner” que indica quem é o dono, do arquivo, seguida por “Group”
que indica qual o grupo de usuários esse arquivo pertence, temos também a coluna “Size” que
indica o tamanho do arquivo ou diretório, em “Last Modified” a data e hora da última alteração, em
“Replication” é exibida em quantas máquinas esse arquivo está replicado, por último a coluna
“Name” com o nome do arquivo ou diretório.
Como já criamos um diretório vamos agora criar outro com o nome teste2, usando o mesmo
comando
Depois de criado o diretório vamos verificar o portal WEB, caso ele já esteja aberto basta
atualizar a página
É possível ver que ambos os diretórios estão criados no HDFS, vamos então apagar esse
diretório que criamos através do terminal de comandos, para isso, usaremos o comando “rm”, que é
um comando padrão para excluir arquivos, vamos passar a ele o parâmetro “-r” pois com ele o
comando realiza uma recursão e apaga além dos arquivos, também o diretório.
Onde traduz-se como estou dando uma permissão total (leitura, escrita e execução) para o
dono do diretório, o grupo do diretório e todos os demais usuários para o diretório “teste1”
Após executar o comando podemos ir até a página WEB e verificar que as permissões foram
então alteradas, conforme imagem abaixo
Já sabemos então como criar um diretório, como apagá-lo e como dar permissões no HDFS,
vamos então aprender a publicar arquivos no HDFS, para isso iremos copiar um arquivo que está em
um diretório do computador para um diretório do HDFS, vamos usar o próprio diretório “teste1” que
criamos anteriormente.
O comando utilizado para copiar os arquivos é o “copyFromLocal” sendo que devem ser
passados como parâmetros a ele, a origem do arquivo (caminho local no computador) e o destino
(caminho no HDFS). Criamos um arquivo texto com um texto qualquer e salvamos na pasta raiz do
sistema para podermos copiá-lo
Depois de executar o comando vamos até o portal WEB e podemos ver que o arquivo está lá
No próprio portal WEB é possível apagar, enviar ou baixar esse arquivo para o computador,
vamos fazer o processo de baixá-lo mas através do terminal de comandos, usando o comando
“copyToLocal”, atenção para não confundir com o comando anterior, onde esse é “To” o anterior
era “From”, os comandos são bem parecidos porém agora é invertido os parâmetros, primeiro se
deve informar a localização do arquivo no HDFS e depois onde esse arquivo será salvo no
computador local, sendo que criamos uma pasta local com o nome “baixado_de_hdfs” para não
misturar os arquivos
Após a execução do comando, podemos ir até a pasta local criada e ver que nela encontra-se
o arquivo que baixamos diretamente do HDFS
Essas são as operações básicas sobre arquivos no HDFS.
Segue abaixo uma lista de materiais de leitura recomendada com os assuntos pertinentes às
aulas dos tópicos anteriores.
Livros
Título: Big Data: Técnicas e tecnologias para extração de valor dos dados
Link: https://www.casadocodigo.com.br/products/livro-big-data
Título: Big Data: A Revolution that Will Transform how We Live, Work, and Think
Link: https://books.google.com.br/books?id=uy4lh-
WEhhIC&printsec=frontcover&dq=big+data&hl=pt-BR&sa=X&ved=0ahUKEwj89--
Hh7TpAhUFK7kGHeWJBTQQ6AEIKDAA#v=onepage&q=big%20data&f=false
Título: Analítica de dados com Hadoop: Uma introdução para cientistas de dados
Link: https://novatec.com.br/livros/analitica-de-dados-com-hadoop/
Link: http://shop.oreilly.com/product/0636920021773.do
Link: https://www.wiley.com/en-br/Business+Intelligence+For+Dummies-p-9781118051412
Título: Decisões com BI (Business Intelligence)
Link: https://www.lcm.com.br/site/#/livros/detalhesLivro/decisoes-com-b-i---business-
intelligence.html
Link: https://www.amazon.com.br/Pentaho-na-Pr%C3%A1tica-ebook/dp/B00CEQFDU0
Título: Pentaho Kettle Solutions: Building Open Source ETL Solutions with Pentaho Data Integration
Link: https://www.wiley.com/en-
br/Pentaho+Kettle+Solutions%3A+Building+Open+Source+ETL+Solutions+with+Pentaho+Data+Int
egration-p-9780470947524
Artigos acadêmicos
Link: https://periodicos.ufpb.br/ojs/index.php/itec/article/view/19380/11156
Link: http://encurtador.com.br/atRZ6
Título: Uso Da Ferramenta Pentaho Bi‐Server: Analisando A Violência Contra Mulher, No Estado Do
Rio Grande Do Sul
Link: http://oro.open.ac.uk/45861/1/paper.pdf
Título: Apache Hadoop: conceitos teóricos e práticos,evolução e novas possibilidades
Autores: Alfredo Goldman, Fabio Kon, Francisco Pereira Junior, Ivanilton Polato e Rosangela de
Fátima Pereira
Link:
http://www.inf.ufsc.br/~bosco.sobral/ensino/ine5645/JAI_2012_Cap%203_Apache%20Hadoop.p
df
Sites
https://www.devmedia.com.br/hadoop-fundamentos-e-instalacao/29466
https://www.sas.com/pt_br/insights/big-data/hadoop.html
https://www.knowsolution.com.br/saiba-o-que-e-pentaho-e-por-que-escolhemos-trabalhar-com-
ele/
https://www.devmedia.com.br/pentaho-bi-conhecendo-a-plataforma-arquitetura-e-
infraestrutura/31502
https://www.binapratica.com.br/visao-pentaho
https://inteligencia.rockcontent.com/business-intelligence/
https://www.siteware.com.br/gestao-estrategica/o-que-e-bi-business-intelligence/
https://inteligencia.rockcontent.com/big-data/
https://canaltech.com.br/big-data/o-que-e-big-data/
REFERÊNCIAS
BARBIERI, C. BI-Business Intelligence: modelagem e tecnologia. [S.l.: s.n.], 2001. 424 p.ISBN
9788573231489.
BAO, F.; CHEN, J. Visual framework for big data in d3.js. Proceedings -2014 IEEE Workshop on
Electronics, Computer and Applications, IWECA 2014, p. 47–50, 2014.
BRYNJOLFSSON, E.; MCAFEE, A. Big data: the management revolution. Harvard Business Review, v.
90, n. 10, p. 60–68, 128, 2012.
HU, H. et al. Toward Scalable Systems for Big DataAnalytics: A Technology Tutorial. IEEE Access, v.
2, p. 652–687, 2014.
SRIVASTAVA, D.; DONG, X. Big data integration. ... 2013 IEEE International Conference on Data ..., p.
1245–1248, 2013.
TEKINER, F.; KEANE, J. A. Big data framework. Proceedings -2013 IEEE International Conference on
Systems, Man, and Cybernetics, SMC 2013, p. 1494–1499, 2013.
MANYIKA, J. et al. Big data: The next frontier for innovation, competition, and productivity.
McKinsey Global Institute, n. June, p. 156, 2011.
NANDIMATH, J. et al. Big data analysis using Apache Hadoop. 2013 IEEE 14th International
Conference on Information Reuse & Integration (IRI), p. 700–703, 2013.
VAVILAPALLI, V. K. et al. Apache Hadoop YARN : Yet Another Resource Negotiator. ACM Symposium
on Cloud Computing, p. 16, 2013.
WHITE, T. Hadoop: The Definitive Guide, 3rd edition. Third Edit ed. Sebastopol: O’Reilly Media,
2012. v. 54.