• Nenhum resultado encontrado

UNIVERSIDADE FEDERAL DE MINAS GERAIS Instituto de Ciências Exatas Departamento de Ciência da Computação. Maximilliam Alex De Araujo

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDADE FEDERAL DE MINAS GERAIS Instituto de Ciências Exatas Departamento de Ciência da Computação. Maximilliam Alex De Araujo"

Copied!
18
0
0

Texto

(1)

UNIVERSIDADE FEDERAL DE MINAS GERAIS Instituto de Ciências Exatas

Departamento de Ciência da Computação

Maximilliam Alex De Araujo

ESTUDO DA INTEGRAÇÃO DE TECNOLOGIAS DE PROCESSAMENTO E ANÁLISE DE DADOS NO APACHE ZEPPELIN

Belo Horizonte 2018

(2)

SUMÁRIO 1 INTRODUÇÃO ... 3 2 JUSTIFICATIVA ... 4 3 OBJETIVO GERAL ... 5 3.2 Objetivo Específico ... 5 4 DESENVOLVIMENTO DO TRABALHO ... 6

4.1 Arquitetura do Apache Zeppelin ... 6

4.2 A Camada dos Interpretadores ... 8

4.2.1 Backends na distribuição oficial ... 8

4.3 Visualização dos dados ... 12

5 RESULTADOS E DISCUSSÃO ... 15

6 CONCLUSÕES E TRABALHOS FUTUROS ... 16

(3)

3

1 INTRODUÇÃO

A produção de dados está aumentando em larga escala e as estimativas indicam que a cada dois anos a quantidade produzida de dados irá dobrar. Estes conjuntos muitas vezes fogem dos convencionais dados estruturados e demandam prontidão em processamento e análise. Além disso, o Big Data introduz uma nova compreensão de valores e gera desafios para organizar e gerenciar tais conjuntos de dados (CHEN; MAO; LIU, 2014).

O mercado de negócios tem dado maior atenção aos dados para aumentar a competitividade. A quantidade e variedade de dados supera a capacidade de análise manual, porém a capacidade computacional vem se tornado mais poderosa e algoritmos e metodologias permitem que a ciência dos dados seja introduzida ao mercado (PROVOST; FOSTER, 2013).

“Em alto nível, a ciência de dados é um conjunto de princípios fundamentais que apoiam e orientam a extração baseada em princípios da informação e do conhecimento a partir dos dados” (PROVOST; FOSTER, 2013, tradução nossa).

O ciclo de vida de um processo de ciência dos dados pode não ser algo trivial. É possível que em detrimento de um problema haja engajamento de diversos agentes. Cientistas de dados, engenheiro de dados, matemáticos, estatísticos, gestores, desenvolvedores entre outros. Além disso, por se tratar de dados massivos não estruturados vindos de diversas fontes, na maioria das vezes existe a necessidade de utilização de diferentes técnicas e ferramentas para resolução dos problemas orientados a dados (LEE, 2015).

No intuito de centralizar e organizar as atividades de processos de ciência dos dados e Big Data, o Apache Zeppelin foi criado (LEE, 2015). Um notebook baseado na Web que possibilita análise interativa de dados e documentos colaborativos (Site Apache Zeppelin 2018). A ferramenta foi criada para se conectar a diferentes tipos de tecnologias, utilizando um conceito de interpretadores, além de permitir o compartilhamento do trabalho executado. (LEE, 2015)

quotes com copy-paste, não nunca na computação

frases PRECISAM estar na forma sujeito-verbo-predicado

(4)

2 JUSTIFICATIVA

A fim de compilar a organização dos processos em um só lugar para possibilitar a melhor comunicação dos dados, a utilização de ferramentas torna mais produtiva a geração de análises. Dentre as ferramentas disponíveis no mercado temos o Apache Zeppelin, que tem o propósito de organizar o ciclo de vida da ciência dos dados de forma flexível.

A possibilidade de trabalhar com uma ferramenta que “conversa” na mesma linguagem que o utilizador é possível graças ao que se chama de interpretador. Um interpretador pode ser comparado a um plug de tomada, a qual é conectado a tecnologia que se vai utilizar.

O Apache Zeppelin trabalha sobre a plataforma web, o que possibilita um ganho enorme em compartilhamento. Ademais, possui muitas tecnologias plugáveis ao seu backend (termo utilizado para definir tecnologias que funcionam do lado do servidor). Assim, estudar como essa integração funciona possibilita um ganho significativo de conhecimento em tecnologias de ponta do mercado que envolve a ciência dos dados.

(5)

5

3 OBJETIVO GERAL

Entender o funcionamento do software e descrever em uma documentação.

3.2 Objetivo Específico

 Identificar os conceitos de computação intrínsecos ao Apache Zeppelin.  Identificar quais tecnologias estão plugadas em modo nativo;

 Analisar o funcionamento dos interpretadores do Apache Zeppelin.

(6)

4 DESENVOLVIMENTO DO TRABALHO

A análise e processamento de Big Data através da ciência dos dados é uma forma de aumentar a competitividade e a eficiência das empresas. Ao analisar fatores externos e internos a essas empresas e processar o grande conjunto de dados gerados, torna-se possível predizer, por exemplo, possíveis eventos econômicos.

No entanto, essa atividade exige grande interdisciplinaridade e por esse motivo pode se tornar complexa. Além disso, a fim de possibilitar melhores decisões, o ciclo de vida que envolve preparação, engenharia, análise e produção de dados precisa ser maleável de forma a ser compreendido tanto por um profissional técnico, quanto por um gestor que não tem conhecimento técnico de como os dados são tratados.

Em 2013, no intuído de auxiliar, organizar e centralizar parte do ciclo de vida de um processo de ciências dos dados, um projeto nomeado Zeppelin foi criada por uma empresa chamada ZEPL (anteriormente conhecido como NFLabs), comandada por Moon Soon Lee. Em 2014, o projeto Zeppelin tornou-se projeto de incubação na Apache Software Foundation e em 2016, se formou em incubação e se tornou um projeto de alto nível na Apache, dando origem a ferramenta conhecida como Apache Zeppelin.

O Apache Zeppelin é denominado pelos criadores como um notebook, em uma analogia a um caderno de anotações, baseando suas funções em parágrafos. A ferramenta é desenvolvida em tecnologias Web, que permite ao Zeppelin facilidade em compartilhamento de suas funções. Os notebooks interativos permitem que engenheiros, analistas e cientistas de dados tenham melhor aproveitamento, desenvolvendo, organizando, executando e compartilhando código de dados e visualizando resultados sem se referir a linhas de comando ou precisar dos detalhes do cluster.

O software se destaca por sua capacidade de integrar diversas outras tecnologias através de uma funcionalidade denominada “Interpreter”, em português, Interpretador. O Interpreter é uma camada para integração de “backend” (ferramenta que trabalham por trás da aplicação), sendo que a ferramenta já possui mais de 20 interpretadores em seu pacote de distribuição oficial, dando a possibilidade a desenvolvedores de integrar outros backends.

(7)

7

A arquitetura do Apache Zeppelin possui três camadas:  Frontend

 Servidor do Zeppelin  Interpreter

A imagem a seguir demonstra a arquitetura do software com quatro interpretadores.

Arquitetura do Apache Zeppelin. Exemplo ilustrativo.

A partir de um Web Browser, conecta-se ao frontend do Zeppelin que é baseado em AngularJS e Twitter Bootstrap. A ferramenta se conecta ao servidor Apache Zeppelin com duas interfaces possíveis, REST e Web Socket.

Representational State Transfer (REST), em português Transferência de Estado Representacional, é um estilo de arquitetura para definir as restrições e propriedades do protocolo HTTP.

WebSocket é uma tecnologia que permite comunicação bidirecional por canais full-duplex (Transmissor e Receptor podem transmitir dados simultaneamente em ambos os sentidos) sobre um único socket TCP.

O servidor funciona sobre uma Máquina Virtual Java (JVM – Java Virtual Machine) que também é um Interpreter. O Interprete se comunica com um programa que executa em plano de fundo do Zeppelin através do Apache Thrift.

figuras/tabelas ficam no topo ou final da página

TODAS precisam ser numeradas e referenciadas por tal número no texto

(8)

O Apache Thrift permite definir tipos de dados e interfaces de serviço em um arquivo de definição simples. Tomando esse arquivo como entrada, o compilador gera o código a ser usado para criar facilmente clientes e servidores RPC que se comunicam facilmente entre as linguagens de programação.

4.2 A Camada dos Interpretadores

O Interpreter é uma funcionalidade que torna o Zeppelin plugável a outras tecnologias.

Cada processo de Interpretador pertence a um Grupos de Interpretadores, que funcionam como uma unidade de início e parada do interpretador. É possível ter um grupo para um único interpretador, ou a combinação de outros interpretadores.

Para fazer a ligação entre os processos, o Zeppelin fornece três modos diferentes para executar o processo de interpretação: compartilhado, com escopo e isolado.

No modo Compartilhado, o processo da JVM e os grupos de interpretadores atendem a todos os Notes.

No modo Escopo, a ferramenta executa um processo, porém há múltiplos grupos de interpretadores. Nesse modo, o Zeppelin possibilita sessão dedicada a cada nota, mas ainda permitindo o compartilhamento de recursos.

O modo isolado executa de forma separada, insolando completamente o recurso para todas as notas.

4.2.1 Backends na distribuição oficial

Alluxio

Alluxio é um sistema distribuído de armazenamento virtual centralizado em memória que unifica o acesso ao dado às estruturas computacionais e sistemas de armazenamento inferiores.

Angular

O Angular é uma plataforma para facilitar a criação de aplicações web baseada em JavaScript.

(9)

9

Big Query

O BigQuery é um Data Warehouse no-ops altamente escalável na plataforma Google Cloud. A ferramenta permite realizar consultas SQL rápidas em conjuntos de dados grandes em tabelas de anexação utilizando o poder de processamento da infraestrutura do Google.

Cassandra

Cassandra é um sistema de gerenciamento de banco de dados NoSQL orientado a colunas feito para trabalhar de forma distribuída. O SGBD implementa o modelo de dados Big Table e utiliza aspectos de arquitetura introduzido por Amazon Dynamo. A ferramenta tem como foco alta escalabilidade e disponibilidade.

ElasticSeach

É um mecanismo de busca distribuído para nuvem construído em cima do Apache Lucene. Pode ser usado para pesquisa em todos os tipos de documentos, fornecendo pesquisa escalável quase em tempo real.

Flink

O Apache Flink é uma plataforma de código aberto para fluxo distribuído e processamento de dados em lote. O núcleo do Flink é um mecanismo de fluxo de dados de fluxo contínuo que fornece distribuição de dados, comunicação e tolerância a falhas para cálculos distribuídos em fluxos de dados. O Flink também constrói o processamento em lote na parte superior do mecanismo de streaming, sobrepondo o suporte da iteração nativa, da memória gerenciada e da otimização de programas.

Geode

O Apache Geode é uma plataforma de gerenciamento de dados que fornece acesso consistente em tempo real a aplicativos com uso intenso de dados em arquiteturas de nuvem amplamente distribuídas. Ele usa técnicas dinâmicas de replicação e particionamento de dados para implementar alta disponibilidade, melhor desempenho, escalabilidade e tolerância a falhas. Além disso, o Geode é um sistema de gerenciamento de dados na memória que fornece notificações de eventos assíncronos confiáveis e entrega garantida de mensagens.

(10)

HBase

É um banco de dados não-relacional criado para hospedar tabelas muito grandes, baseado em HDFS. Fornece acesso de leitura e gravação em tempo real a grandes conjuntos de dados.

Ignite

É uma plataforma de processamento, de cache e de banco de dados distribuídos centrada em memória para cargas de trabalhos grandes. A persistência nativa no Ignite pode ser ativada e desativada. Isso permite que o Ignite armazene conjuntos de dados maiores do que os que podem caber na memória disponível. Apesar de ser altamente disponível e escalonável horizontalmente, o Ignite suporta transações SQL e ACID em vários nós do cluster.

JDBC

O JDBC (Java Database Connectivity) é um padrão de conectividade entre a linguagem de programação Java e vários bancos de dados SQL e de outras fontes em tabulares, como planilhas e arquivos simples.

Kylin

O Kylin de análise distribuída é projetado para fornecer interface SQL e análise multidimensional no Hadoop.

Lens

Lens é uma plataforma que fornece uma visão comum dos dados armazenados em várias camadas. O objetivo é simplificar a análise de dados concentrando a visualização de várias fontes em um único lugar. Ele fornece um único ponto final para um usuário consultar dados, independentemente de onde e como os dados são armazenados, permitindo efetivamente que várias fontes de dados sejam vistas como um único Data Warehouse. Lens também tem a capacidade de entender a hierarquia dos dados e relacionamentos usando definições de cubo.

Livy

O Apache Livy é um serviço que permite interação facilitada com um cluster Spark utilizando uma interface REST. Ele permite o envio de tarefas do Spark ou trechos de

(11)

11

código Spark e recuperação dos resultados de forma síncrona ou assíncrona, bem como gerenciamento do Spark Context. O serviço ainda simplifica a interação entre o Spark e os servidores de aplicativos, permitindo a utilização do Spark em aplicativos móveis.

Markdown

Uma ferramenta que converte texto simples em estrutura HTML ou XHTML. A meta do Markdown é tornar textos mais legíveis sem parecer que foram marcados com tags ou instruções de formatação.

Pig

É uma plataforma para análise de grandes conjuntos de dados que fornece linguagem de alto nível para expressar programas de análise de dados, juntamente com a infraestrutura para avaliar esses programas. O Pig é passível de grande paralelização, que permite a plataforma manipular conjuntos de dados grandes.

PostgreSQL

Sistema de gerenciamento de banco de dados objeto-relacional.

Python

Uma linguagem de programação de propósito geral, interpretada, de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte.

R

R é uma linguagem e um ambiente para computação estatística e gráficos. Fornece uma ampla variedade de estatística e técnicas gráficas e é altamente extensível. Um dos pontos fortes de R é a facilidade com que plotagens podem ser produzidas, incluindo símbolos matemáticos e fórmulas.

Scalding

Uma linguagem de programação dinâmica que faz com que os cálculos pareçam muito semelhantes aos da API de coleta do Scala. O Scalding fornece a funcionalidade de algoritmos de junção personalizados a várias APIs (baseadas em campos, tipo

(12)

seguro e matriz). A linguagem é fundamentada no framework Cascading e herda extensibilidade com o ecossistema em cascata e portabilidade de aplicativos.

Scio

Uma API do Scala para Apache Beam e Google Cloud Dataflow. O Scio é descrito como um “thin wrapper” no topo do Java SDK, oferecendo uma maneira fácil de construir pipelines do Dataflow no Scala. O tipo de dados do Scio imita o RDD (conjunto de dados distribuído resiliente) do Spark para oferecer operações paralelas. Além disso, utiliza coleções de tuplas chave-valor para fornecer agrupamento. Há também uma simplificação em sintaxes complexas para apresentar além de junções internas e externas a esquerda, junções hash baseadas em entradas lateral e junções esparsas externas.

Shell

Um interpretador para executar processos externos em Java.

Spark

O Apache Spark é um sistema de computação em cluster rápido e de uso geral. Ele fornece APIs de alto nível em Java, Scala, Python e R e um mecanismo otimizado que suporta gráficos gerais de execução. Ele também suporta um conjunto avançado de ferramentas de nível superior, incluindo o Spark SQL para SQL e para o processamento de dados estruturados, MLlib para aprendizado de máquina, GraphX para processamento de gráficos e Spark Streaming.

Além das tecnologias que vem na distribuição oficial do Zeppelin, a ferramenta possui flexibilidade para integrar outras tecnologias. Tendo um interpretador de preferência conectado, o utilizador tem a capacidade de gerar o que é chamado de “Notes”.

4.3 Visualização dos dados

O notebook é composto por parágrafos, fazendo uma analogia a um caderno de anotações. Cada parágrafo é um caixa que recebe algum tipo de script pré-definido nos interpretadores. O texto interpretado possui uma marcação “%” para determinar o interpretador e o script a ser executado (no caso do Spark temos “%spark”).

(13)

13

O exemplo a seguir demonstra um parágrafo com script Markdown e um Spark.

Para a resultado existe a possibilidade de escolher a forma de visualização, como tabelas e gráficos.

A seguir temos um exemplo do fluxo de trabalho no Zeppelin:

1. Uma instrução é feita e enviada para o servidor virtual do Zeppelin 2. O servidor lança uma JVM para o interpretador requisitado

3. A instrução no servidor é enviada para o interpretador

4. O interpretador utiliza alguma tecnologia para fazer o tratamento 5. O interpretador devolve os dados em algum formato para o servidor 6. O Servidor devolve os dados para o browser que interpreta o formato

(14)

Por fim, os blocos de anotações podem ser compartilhados entre os colaboradores através de uma URL, ou incorporados em algum site tendo suas alterações exibidas em tempo real.

(15)

15

5 RESULTADOS E DISCUSSÃO

O trabalho tinha como objetivo principal a aquisição de conhecimento à cerca do software Apache Zeppelin, bem como o entendimento do funcionamento de sua integração a outras tecnologias.

A ferramenta possui uma ampla integração com outras tecnologias e o entendimento de todas era inviável com o tempo tido para desenvolvimento do trabalho. Algumas tecnologias expostas no site oficial do sistema foram estudadas superficialmente para verificação das funcionalidades entregues pelas ferramentas.

Tal estudo permitiu entender a arquitetura por trás do Apache Zeppelin, bem como trouxe um ponto de partida para escolher tecnologias mais específicas para elaboração de um estudo de caso.

O próprio trabalho é tido como resultado das pesquisas, visto que documenta o funcionamento da arquitetura e o funcionamento do interpretador do Zeppelin.

(16)

6 CONCLUSÕES E TRABALHOS FUTUROS

A priori, foi suposto que a ferramenta não tinha documentação, o que não se mostrou verdade. O Apache Zeppelin possui uma documentação em inglês que é mantida por seus desenvolvedores e sua comunidade no GitHub. Apesar disso, as explicações dentro da documentação se limitam a configurações de como utilizar ou integrar funções ao sistema. Por esse motivo, este documento pode ser visto como um suporte a introdução para utilização da ferramenta.

As pesquisas se limitaram ao Zeppelin, não fazendo comparações com outras ferramentas que entregam o mesmo tipo de serviço, como Jupyter ou IPython, que são ferramentas mais maduras que o Apache Zeppelin em questão de tempo no mercado. Assim, não é possível dizer se o software é a melhor opção de utilização como notebook de ciência dos dados.

O posicionamento do Zeppelin dentro de um processo de análise de dados pode ser visto como a interface entre o usuário final dos dados e diversas outras tecnologias. Essa flexibilidade vai permitir que os estudos sejam direcionados através de um estudo de caso, para área de conhecimento de banco de dados, tendo como objetivos futuros a extração do conhecimento obtido para verificar a possibilidade de inclusão de estudos de tecnologias recentes de mercado em disciplinas de Bancos de Dados do departamento de compunção da Universidade Federal de Minas Gerais.

(17)

17

REFERÊNCIAS

ALLUXIO OPEN FOUNDATION. Documentation. [S.l]: Alluxio Open Foundation. Disponível em: <https://www.alluxio.org/docs/1.7/en/Getting-Started.html>. Acesso em: 5 abr. 2018.

THE APACHE SOFTWARE FOUNDATION. Documentation. [S.l.]: The Apache Software Foundation. Disponível em: <https://beam.apache.org/documentation/>. Acesso em: 6 abr. 2018

APACHE ZEPPELIN. Bigquery Interpreter For Apache Zeppelin. [S.l]: The Apache Software Foundation. Disponível em:

<https://zeppelin.apache.org/docs/0.7.3/interpreter/bigquery.html>. Acesso em: 6 abr. 2018.

GITHUB, INC. Elasticsearch. [S.l]: Github, Inc., 2018. Disponível em: < https://github.com/elastic/elasticsearch>. Acesso em: 6 abr. 2018.

THE APACHE SOFTWARE FOUNDATION. Introduction To Apache Flink. [S.l]: The Apache Software Foundation, 2014-2017. Disponível em:

<https://flink.apache.org/introduction.html>. Acesso em: 20 abr. 2018.

GAVIN; BAWASKAR, Swapnil. Geode. [S.l]: Apache Software Foundation, 2018. Disponível em: <https://cwiki.apache.org/confluence/display/GEODE/Index>. Acesso em: 20 abr. 2018.

THE APACHE SOFTWARE FOUNDATION. Apache HBase. [S.l]: The Apache Software Foundation, 2007-2018. Disponível em:

(18)

HANSON, J. Uma Introdução Ao Hadoop Distributed File System: Explorar a Estrutura e Subsistemas do HDFS. [S.l]: IBM, 2013. Disponível em:

<https://www.ibm.com/developerworks/br/library/wa-introhdfs/index.html>. Acesso em: 3 maio 2018.

CONFLUENCE ADMINISTRATOR. Apache Hive. [S.l]: Confluence, jan 2018. Disponível em: <https://cwiki.apache.org/confluence/display/Hive>. Acesso em: 20 maio 2018.

APACHE SOFTWARE FOUNDATION. Apache Ignite. [S.l]: Apache Software

Foundation, 2015-2017. Disponível em: <https://ignite.apache.org/whatisignite.html>. Acesso em: 20 maio 2018.

ORACLE. Java SE Technologies – Database. [S.l]: ORACLE. Disponível em: <http://www.oracle.com/technetwork/java/javase/jdbc/index.html>. Acesso em: 20 maio 2018.

Referências

Documentos relacionados

Analogous to the conventional wisdom that the first-round effect of negative price shocks should not elicit a monetary response, the same could be said for positive supply

The implied increase in real income (controlling for relative price changes) that would explain the change in durable goods holdings and ownership shown in Table 7 and Figure 9

 Numéricos das das Propriedades Propriedades do do Ar Ar Úmido, Úmido, Cartas Cartas Psicrométricas, Psicrométricas, Processos Processos Psicrométricos, Psicrométricos,

É_Realizada n n (0,3) (0,n) Inscrição Nome RG Expedidor UF Data Média Tipo Nota Questões Número Área Sub-Área Avaliação 3 n Esquema ER para o banco de dados CONCURSO..

III - ser ou ter sido sócio ou diretor de ETC ou CTC. Para fins de cumprimento do requisito de tempo de atividade profissional, poderá ser utilizada qualquer combinação dos

Os casos não previstos neste regulamento serão resolvidos em primeira instância pela coorde- nação do Prêmio Morena de Criação Publicitária e, em segunda instância, pelo

A operação de pré-murchamento elevou o teor de matéria seca (MS) em ambos os trabalhos, para aveia branca proporcionou melhor preservação da proteína bruta (PB), enquanto

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar