Apache Spark

Hadoop e Spark

Hadoop é uma plataforma de software em Java de computação distribuída voltada para clusters e processamento de grandes massas de dados. Foi inspirada no MapReduce e no GoogleFS (GFS).

.

O Que é o Apache Spark?

Apache Spark é uma engine rápida para processamento em larga escala desenvolvido em linguagem Scala. Originalmente desenvolvida no AMPLab na UC Berkeley

Começou como um processo de pesquisa em 2009, em 2010 o seu código foi aberto e em 2013 foi transferido para ASF. Atualmente é um projeto top-level.

Projeto de Código Aberto na Fundação Apache:

Commiters da Cloudera, Yahoo, Databricks, UC Berkeley, Intel,Groupon,…um dos mais ativos e um dos projetos com maior crescimento da Fundação Apache

É possível fazer aplicações Spark

Em Python, Scala ou Java, suporte a R e Dataframes chegando em junho/2015

.

Vantagens do Spark

Programação de alto nível, programadores podem focar na lógica

Computação em Cluster, processos são distribuídos ao redor do cluster, gerenciado por um único “master”, escalável e tolerante a erro

Dados em memória, cache configurável para iteração eficiente

Spark Core: Possui as funções básicas, incluindo os componentes para agendamento de tarefas (task scheduling), gerenciamento de memória, recuperação de falha, interação com sistemas de armazenamento (HDFS, Hbase, etc), dentre outros. É o home para API que define os RDDs (representa uma coleção de itens distribuídos entre os nodes).

 Spark SQL: É o componente que suporta a interação com o Spark por meio de linguagem SQL e HiveQL. Basicamente converte query SQL em operações no Spark. É uma evolução do projeto Shark iniciado pela UC Berkeley.

Spark Streaming: É o componente que permite processar stream de dados em real time. Exemplos de stream de dados: log de web servers, mensagens em uma fila. Tem o mesmo nível de tolerância a falha e escalabilidade que o Spark Core.

MLib: É uma biblioteca que contem as funções e algoritmos de Machine Learning, incluindo regressão, cluster, collaborative filtering, dentre outros.

GraphX: É uma biblioteca que prove uma API para manipular gráficos em paralelo. Muito utilizado para análise de rede social (Social Network Analysis).

Cluster Managers: O Spark pode utilizar diversos cluster manager, como YARN, Mesos ou Standalone Scheduler se você tiver apenas Spark no seu cluster.

.

Casos de Uso do Spark

• ETL
• Text Mining
• Index Building
• Criação de Grafo e Análise
• Reconhecimento de padrões
• Filtro colaborativo
• Modelos preditivos
• Análise de Sentimento
• Assessment de Risco
• Real-Time Analytics

.

Spark x Hadoop MapReduce

Spark leva o conceito do MapReduce ao próximo nível
• API de alto nível: desenvolvimento mais rápido,mais fácil
• Latência baixa:  processamento próximo de tempo real
• Armazenamento in-memory: até 100x de melhoria de performance

.

RDD (Resilient Distributed Dataset)

RDDs são a unidade fundamental do Spark. É uma coleção de objetos distribuídos. Eles são imutáveis.

Resilient: se os dados em memória são perdidos, eles podem ser recriados.

Distributed: armazenado em memória através do cluster.

Dataset: dados iniciais podem vir de um arquivo ou serem criados programaticamente.

.

Operações em RDD – Transformação

Há dois tipos de operações RDD:

UM : Transformação: operações que definem um novo RDD, utilizando Lazy Evalution (Spark não irá executar até haver uma ação).

Função map: Cria um novo RDD realizando um determinada função para cada registro.

Função filter: Cria um novo RDD incluindo ou excluindo cada registro do RDD baseada em uma função boolean.

Outras funções em um RDD: distinct, sample.

Outras funções em pares de RDD: union, intersection, subtract, cartesian, combineByKey(), groupByKey(), join, etc.

.

DOIS : Ação: Uma ação que retorna um resultado para o driver ou escreve no Storage. A mais comum utiliza reduce que realiza operações envolvendo dois elementos do mesmo tipo e retorna um novo elemento do mesmo tipo.

Collect () : Retorna todos os elementos de um RDD. Grava todo o dataset na memória. Não deve ser utilizado em datasets com tamanho muito grande que possa exceder a memória.

Count () : Retorna o número de elementos de um RDD.

Top(num) : Retorna os top elementos.

Reduce(func) : combina os elementos do RDD juntos em paralelo (ex: soma).

Post em  produção


Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s