Apache Faísca definido
Apache Spark é um processamento de dados, quadro que pode executar rapidamente tarefas de processamento em conjuntos de dados muito grandes, e também pode distribuir tarefas de processamento de dados em vários computadores, isoladamente ou em conjunto com outras computação distribuída ferramentas. Estas duas qualidades são a chave para os mundos do aprendizado de grandes dados e máquinas, que requerem a concentração de poder computacional massivo para crunch através de grandes lojas de dados., Spark também tira alguns dos fardos de programação dessas tarefas dos ombros dos desenvolvedores com uma API fácil de usar que abstrai a maior parte do trabalho pesado de computação distribuída e grande processamento de dados.
From its humble beginnings in the AMPLab at U. C. Berkeley in 2009, Apache Spark has become one of the key big data distributed processing frameworks in the world. Spark pode ser implantado em uma variedade de maneiras, fornece ligações nativas para as linguagens de programação Java, Scala, Python e R, e suporta SQL, streaming de dados, aprendizagem de máquinas e processamento de grafos., Você vai encontrá-lo usado por bancos, empresas de telecomunicações, Empresas de jogos, governos, e todos os grandes gigantes tecnológicos como Apple, Facebook, IBM e Microsoft.
Apache Faísca arquitetura
Em um nível fundamental, Apache Faísca aplicação consiste de dois componentes principais: um motorista, que converte o código de utilizador em várias tarefas que podem ser distribuídos em nós de trabalho, e executores, que são executados em nós e executar as tarefas atribuídas a eles. Alguma forma de gerente de cluster é necessária para mediar entre os dois.,
fora da caixa, Spark pode correr em um modo de aglomerado autônomo que simplesmente requer o Apache Spark framework e um JVM em cada máquina em seu aglomerado. No entanto, é mais provável que você vai querer aproveitar um recurso mais robusto ou sistema de gestão de clusters para cuidar de alocação de trabalhadores sob demanda para você. Na empresa, isso normalmente significa correr em fios Hadoop (é assim que as distribuições Cloudera e Hortonworks executam trabalhos de faísca), mas Apache Spark também pode correr em Apache Mesos, Kubernetes e Docker Swarm.,
Se você procurar uma solução gerenciada, então Apache Spark pode ser encontrado como parte da Amazon EMR, Google Cloud Dataproc, e Microsoft Azure HDInsight. Databricks, a empresa que emprega os fundadores da Apache Spark, também oferece a base de dados Unified Analytics Platform, que é um serviço gerenciado abrangente que oferece Apache Spark clusters, suporte de streaming, desenvolvimento integrado de notebook baseado na web, e otimizado desempenho cloud I/O sobre uma distribuição padrão Apache Spark.
Apache Spark constrói os comandos de processamento de dados do usuário em um grafo acíclico direcionado, ou DAG., O DAG é a camada de agendamento do Apache Spark; ele determina quais tarefas são executadas em que nós e em que sequência.
Spark vs. Hadoop: porquê usar a Spark Apache?
vale a pena ressaltar que Apache Spark vs. Apache Hadoop é um pouco um nome errado. Você vai encontrar faísca incluída na maioria das distribuições Hadoop hoje em dia. Mas devido a duas grandes vantagens, Spark tornou-se o quadro de escolha ao processar grandes dados, ultrapassando o velho paradigma MapReduce que trouxe Hadoop à proeminência.
A primeira vantagem é a velocidade., Spark’s in-memory data engine significa que ele pode executar tarefas até cem vezes mais rápido do que MapReduce em certas situações, particularmente quando comparado com trabalhos multi-estágios que exigem a escrita de Estado de volta para o disco entre as fases. Em essência, MapReduce cria um grafo de execução de dois estágios consistindo de mapeamento de dados e redução, enquanto o DAG da Apache Spark tem vários estágios que podem ser distribuídos de forma mais eficiente. Mesmo o Apache Spark jobs onde os dados não podem ser completamente contidos dentro da memória tendem a ser cerca de 10 vezes mais rápido do que seu homólogo MapReduce.,
A segunda vantagem é a API Spark amiga do desenvolvedor. Por mais importante que a rapidez da Spark é, pode-se argumentar que a simpatia da Spark API é ainda mais importante.
Spark Core
em comparação com MapReduce e outros componentes do Apache Hadoop, a API Apache Spark é muito amigável para os desenvolvedores, escondendo grande parte da complexidade de um motor de processamento distribuído atrás de simples chamadas de método., O exemplo canônico esta é a forma como quase 50 linhas de MapReduce código para contagem de palavras em um documento que pode ser reduzida para apenas algumas linhas de Apache Faísca (aqui mostrado em Scala):
proporcionando ligações para linguagens populares para a análise dos dados, como Python e R, bem como o mais favorável às empresas de Java e Scala, Apache Faísca permite que todos os desenvolvedores de aplicativos para cientistas de dados para aproveitar a sua escalabilidade e velocidade, de forma acessível.,
Spark RDD
At the heart of Apache Spark is the concept of the Resilient Distributed Dataset (RDD), a programming abstraction that represents an imutable collection of objects that can be split across a computing cluster. As operações nos RDDs também podem ser divididas em todo o cluster e executadas em um processo paralelo de lote, levando a processamento paralelo rápido e escalável.
RDDs pode ser criado a partir de arquivos de texto simples, bases de dados SQL, lojas NoSQL (como Cassandra e MongoDB), baldes Amazon S3, e muito mais., Grande parte da API Spark Core é construída sobre este conceito RDD, permitindo o mapa tradicional e reduzir a funcionalidade, mas também fornecendo suporte integrado para a junção de conjuntos de dados, filtragem, amostragem e agregação.
Spark é executado de forma distribuída, combinando um processo do núcleo do driver que divide uma aplicação Spark em tarefas e distribui-los entre muitos processos executores que fazem o trabalho. Estes executores podem ser dimensionados para cima e para baixo conforme necessário para as necessidades da aplicação.,
Spark SQL
originalmente conhecida como Shark, Spark SQL tornou-se cada vez mais importante para o projeto Apache Spark. É provavelmente a interface mais comumente usada pelos desenvolvedores de hoje ao criar aplicações. Spark SQL é focada no processamento de dados estruturados, usando uma abordagem dataframe emprestada de R e Python (em Pandas). Mas como o nome sugere, Spark SQL também fornece uma interface compatível com o sql2003 para pesquisar dados, trazendo o poder do Apache Spark para analistas, bem como desenvolvedores.,
ao lado do suporte SQL padrão, Spark SQL fornece uma interface padrão para ler e escrever para outros datastores, incluindo JSON, HDFS, Apache Hive, JDBC, Apache ORC, e Apache Parquet, todos os quais são suportados fora da caixa. Outras lojas populares-Apache Cassandra, MongoDB, Apache HBase, e muitas outras—podem ser usadas puxando conectores separados do ecossistema de pacotes Spark.,
a Seleção de algumas colunas de uma dataframe é tão simples como esta linha:
citiesDF.select("name”, "pop”)
Usando a interface SQL, nós registramos o dataframe como uma tabela temporária, após a qual podemos emitir consultas SQL contra ele:
citiesDF.createOrReplaceTempView("cities”)
spark.sql("SELECT name, pop FROM cities”)
nos bastidores, Apache Faísca usa um otimizador chamado Catalisador que examina os dados e consultas, a fim de produzir um plano de consulta eficiente para a localidade de dados e computação que irá realizar os cálculos necessários em todo o cluster. In the Apache Spark 2.,x era, a interface Spark SQL de dataframes e conjuntos de dados (essencialmente um dataframe digitado que pode ser verificado no tempo de compilação para a correção e tirar vantagem de mais memória e computar otimizações no tempo de execução) é a abordagem recomendada para o desenvolvimento. A interface RDD ainda está disponível, mas recomendada apenas se as suas necessidades não puderem ser abordadas dentro do paradigma Spark SQL.
Spark 2.4 introduziu um conjunto de funções embutidas de ordem superior para manipular matrizes e outros tipos de dados de ordem superior diretamente.,
Spark MLlib
Apache Spark também agrupa bibliotecas para a aplicação de técnicas de aprendizagem de máquinas e análise de grafos para dados em escala. Spark MLlib inclui uma estrutura para a criação de pipelines de aprendizagem de máquinas, permitindo a fácil implementação de extração de recursos, seleções e transformações em qualquer conjunto de dados estruturado. MLlib vem com implementações distribuídas de clustering e algoritmos de classificação, tais como k-means clustering e florestas aleatórias que podem ser trocadas dentro e fora de pipelines personalizados com facilidade., Modelos podem ser treinados por cientistas de dados em Apache Spark usando R ou Python, salvos usando MLlib, e depois importados para um pipeline baseado em Java ou Scala para uso na produção.
Note que enquanto a Spark MLlib abrange a aprendizagem básica da máquina, incluindo classificação, regressão, agrupamento e filtragem, não inclui instalações de modelagem e formação de redes neurais profundas (para mais pormenores, ver a revisão da Spark MLlib da InfoWorld). No entanto, Pipelines de aprendizagem profunda estão em funcionamento.,
Spark GraphX
Spark GraphX vem com uma seleção de algoritmos distribuídos para o processamento de estruturas de grafos, incluindo uma implementação do PageRank do Google. Estes algoritmos usam a abordagem RDD do Spark Core para modelar dados; o pacote GraphFrames permite que você faça operações de grafos em dataframes, incluindo tirar proveito do Otimizador catalisador para consultas de grafos.
Spark Streaming
Spark Streaming foi uma adição precoce à Spark Apache que ajudou a ganhar tração em ambientes que exigiam processamento em tempo real ou quase em tempo real., Anteriormente, processamento de fluxo e Lote No mundo do Apache Hadoop eram coisas separadas. Você escreveria o código MapReduce para suas necessidades de processamento em lote e usaria algo como o Apache Storm para suas necessidades de streaming em tempo real. Isto, obviamente, leva a diferentes antigo que precisam ser mantidos em sincronia para o domínio da aplicação, apesar de ser baseado completamente diferentes quadros, exigindo diferentes recursos, e envolvendo diferentes preocupações operacionais para executá-los.,
Spark Streaming estendeu o conceito Apache Spark de processamento em lote, quebrando o fluxo em uma série contínua de microbatches, que poderiam então ser manipulados usando a API apache Spark. Desta forma, o código em operações de lote e streaming pode compartilhar (principalmente) o mesmo código, rodando no mesmo framework, reduzindo assim tanto o desenvolvedor quanto o operador overhead. Todos ganham.,
Uma crítica a Faísca de Streaming de abordagem é que microbatching, em situações onde uma baixa latência de resposta à entrada de dados é necessária, poderá não ser capaz de igualar o desempenho de outros capacidade de transmissão de quadros como o Apache Tempestade, Apache Flink, e o Apache Apex, todos os que usam um puro método de transmissão ao invés de microbatches.Streaming estruturado Streaming estruturado Streaming estruturado Streaming estruturado Streaming estruturado Streaming estruturadox) é para Spark Streaming O Que Spark SQL foi para a Spark Core APIs: uma API de nível superior e mais fácil abstração para aplicações de escrita., No caso de Streaming de estrutura, a API de nível superior permite essencialmente aos desenvolvedores criar conjuntos de dados e conjuntos de dados de streaming infinitos. Ele também resolve alguns pontos de dor muito reais com os quais os usuários têm lutado no framework anterior, especialmente no que diz respeito a lidar com agregações de tempo de eventos e entrega tardia de mensagens. Todas as consultas em fluxos estruturados passam através do Otimizador de consultas catalisadoras, e podem até ser executadas de forma interativa, permitindo aos usuários realizar consultas SQL contra dados de streaming ao vivo.,
Streaming estruturado originalmente baseou-se no esquema de microbatching da Spark Streaming de manipulação de dados de streaming. Mas no Spark 2.3, A equipe Apache Spark adicionou um modo de processamento contínuo de baixa latência para Streaming estruturado, permitindo-lhe lidar com respostas com latências tão baixas quanto 1ms, o que é muito impressionante. A partir de Spark 2.4, o processamento contínuo ainda é considerado experimental. Enquanto Streaming estruturado é construído em cima do Motor Spark SQL, Streaming contínuo suporta apenas um conjunto restrito de consultas.,
Streaming estruturado é o futuro das aplicações de streaming com a plataforma, por isso, se estiver a construir uma nova aplicação de streaming, deverá usar Streaming estruturado. O legado Spark Streaming APIs vai continuar a ser suportado, mas o projeto recomenda portando-se para Streaming estruturado, como o novo método torna a escrita e manutenção de código streaming muito mais suportável.
dutos de aprendizagem profunda
Apache Spark suporta a aprendizagem profunda através de dutos de aprendizagem profunda., Usando a estrutura de tubulação existente do MLlib, você pode chamar para bibliotecas de aprendizagem profunda de nível mais baixo e construir classificadores em apenas algumas linhas de código, bem como aplicar grafos de TensorFlow personalizados ou modelos de Keras para os dados recebidos. Estes gráficos e modelos podem até mesmo ser registrados como personalizados Spark SQL UDFs (funções definidas pelo usuário) de modo que os modelos de aprendizagem profunda podem ser aplicados aos dados como parte de declarações SQL.Apache Spark tutorials Ready to diver in and learn Apache Spark?, Recomendamos vivamente que Evan Heitman seja um guia de Neanderthal para o Apache Spark em Python, que não só estabelece o básico de como o Apache Spark funciona em termos relativamente simples, mas também o guia através do processo de escrita de uma aplicação Python simples que faz uso do framework. O artigo é escrito a partir da perspectiva de um cientista de dados, que faz sentido como a ciência de dados é um mundo em que grandes dados e aprendizagem de máquinas são cada vez mais críticos.,
Se está à procura de alguns exemplos Apache Spark para lhe dar uma ideia do que a plataforma pode fazer e como o faz, confira Spark por {Examples}. Há uma abundância de código de exemplo aqui para um número de tarefas básicas que compõem os blocos de construção da programação Spark, para que você possa ver os componentes que compõem as tarefas maiores para as quais o Apache Spark é feito.precisas de ir mais fundo? DZone tem o que modestamente se refere como a coleção Apache Spark completa, que consiste de uma série de tutoriais úteis em muitos tópicos Apache Spark. Boa aprendizagem!