post Original de informação:
"authorDisplayName": "Carol McDonald","publish": "2018-10-17T08:00:00.000Z","tags": "spark"
neste post do blog, vamos dar uma introdução ao Apache Faísca e sua história, e explorar algumas das áreas em que o seu conjunto particular de recursos de mostrar a maior promessa. Discutiremos a relação com outras tecnologias-chave e forneceremos algumas indicações úteis.
com faísca 2.,0 e versões posteriores, grandes melhorias foram implementadas para tornar o Spark mais fácil de programar e executar mais rápido.o que é a faísca Apache?
Spark é um motor de processamento de dados distribuído de uso geral que é adequado para uso em uma ampla gama de circunstâncias. No topo do motor de processamento de dados Spark core, existem bibliotecas para SQL, aprendizagem de máquinas, computação de grafos e processamento de fluxo, que podem ser usados em conjunto em uma aplicação. Linguagens de programação suportadas pelo Spark incluem: Java, Python, Scala e R., Desenvolvedores de aplicativos e cientistas de dados incorporam faísca em suas aplicações para consultar rapidamente, analisar e transformar dados em escala. As tarefas mais frequentemente associadas à Spark incluem tarefas em lote de ETL e SQL em grandes conjuntos de dados, processamento de dados de streaming a partir de sensores, IoT, ou sistemas financeiros, e tarefas de aprendizagem de máquinas.
História
para entender Faísca, ele ajuda a compreender a sua história., Antes da Spark, havia MapReduce, uma estrutura de processamento distribuída resiliente, que permitiu ao Google indexar o volume explosivo de conteúdo na web, através de grandes grupos de servidores de commodities.
foram 3 conceitos básicos para o Google estratégia:
- distribuição de dados: quando dados de um arquivo é carregado para o cluster, ele é dividido em blocos, chamados de blocos de dados, e distribuído entre os dados de nós e replicadas em todo o cluster.,
-
Distribuir computação: os usuários especificar uma função de mapa que os processos de um par de chave/valor para gerar um conjunto de intermediários de pares chave/valor e reduzir função que mescla todos os valores intermédios associados com o mesmo intermediário-chave. Programas escritos neste estilo funcional são automaticamente colocadas em paralelo e executado em um grande cluster de mercadoria máquinas da seguinte forma:
- O mapeamento de processo é executado em cada atribuído nó de dados, trabalhando apenas no seu bloco de dados a partir de arquivos distribuídos.,
- Os resultados do mapeamento de processos são enviados para os redutores em um processo chamado de “shuffle e classificar”: pares de chave/valor a mapeadores são classificados por chave, dividido por um número de redutores e, em seguida, enviada através da rede e escrito a chave de classificados de “seqüência de arquivos” no redutor de nós.
- o processo redutor executa no seu nó atribuído e trabalha apenas no seu subconjunto dos dados (o seu ficheiro sequencial). A saída do processo redutor é escrita em um arquivo de saída.,
- tolerar falhas: tanto os dados como o cálculo podem tolerar falhas ao falhar em outro nó para dados ou processamento.
MapReduce contagem de palavra de execução exemplo:
Alguns algoritmos iterativos, como o PageRank, do Google usada para classificar sites em seus resultados de mecanismo de pesquisa exigem o encadeamento de vários trabalhos do MapReduce, em conjunto, o que faz com que um monte de leitura e escrita para o disco., Quando várias tarefas MapReduce são acorrentadas juntas, para cada trabalho MapReduce, os dados são lidos de um bloco de arquivo distribuído em um processo de mapa, escrito e lido a partir de um SequenceFile no meio, e então escrito para um arquivo de saída de um processo redutor.
Um ano após o Google publicou um white paper que descreve o MapReduce quadro (2004), Doug Corte e Mike Cafarella criado o Apache Hadoop™.,
Apache Spark™ começou a vida em 2009 como um projeto dentro do AMPLab na Universidade da Califórnia, Berkeley. Spark se tornou um projeto incubado da Apache Software Foundation em 2013, e foi promovido no início de 2014 para se tornar um dos projetos de alto nível da Fundação. Spark é atualmente um dos projetos mais ativos gerenciados pela Fundação, e a comunidade que cresceu em torno do projeto inclui contribuintes individuais prolíficos e financiadores corporativos bem financiados, como Databricks, IBM e Huawei da China.,
o objetivo do projeto Spark era manter os benefícios do framework de processamento escalável, distribuído e tolerante a falhas do MapReduce, tornando-o mais eficiente e mais fácil de usar. As vantagens da faísca sobre MapReduce são:
- Spark executa muito mais rápido por cache de dados na memória em várias operações paralelas, enquanto MapReduce envolve mais leitura e escrita a partir do disco.
- Spark executa tarefas multi-roscadas dentro de processos JVM, enquanto que o MapReduce funciona como processos JVM de peso mais pesado., Isso dá Spark startup mais rápido, melhor paralelismo, e melhor utilização do CPU.
- Spark provides a richer functional programming model than MapReduce.
- Spark is especially useful for parallel processing of distributed data with iterative algorithms.
How a Spark Application Runs on a Cluster
The diagram below shows a Spark application running on a cluster.,
- a Spark application runs as independent processes, coordinated by the SparkSession object in the driver program.
- o Gestor de recursos ou cluster atribui tarefas aos trabalhadores, uma tarefa por partição.
- a task applies its unit of work to the dataset in its partition and outputs a new partition dataset. Como algoritmos iterativos aplicam operações repetidamente a dados, eles se beneficiam de conjuntos de dados de cache através de iterações.,
- os resultados são enviados de volta para a aplicação driver ou podem ser salvos no disco.,anager incluído com o Faísca
- Apache Mesos – geral do gerenciador de cluster de que também pode executar aplicativos de Hadoop
- Apache Hadoop FIO – o gestor de recursos no Hadoop 2
- Kubernetes – um sistema de código aberto para automatizar a implantação, dimensionamento, e gestão de contentores aplicações
Faísca também tem um modo de local, onde o motorista e executores executar como threads no seu computador em vez de um cluster, o que é útil para o desenvolvimento de suas aplicações a partir de um computador pessoal.,O Que Faz o Spark?
Spark is capable of handling several petabytes of data at a time, distributed across a cluster of thousands of coopering physical or virtual servers. Ele tem um extenso conjunto de bibliotecas de desenvolvedores e APIs e suporta linguagens como Java, Python, R e Scala; sua flexibilidade o torna bem adequado para uma série de casos de uso., Spark é muitas vezes usado com lojas de dados distribuídas, tais como HPE Ezmeral Data Fabric, HADOOP’s HDFS, e Amazon’s s S3, com bases de dados populares NoSQL, como HPE Ezmeral Data Fabric, Apache HBase, Apache Cassandra, e MongoDB, e com lojas de mensagens distribuídas, tais como HPE Ezmeral Data Fabric e Apache Kafka.
casos típicos de uso incluem:
Processamento De Fluxo: de arquivos de log a dados de sensores, desenvolvedores de aplicações estão cada vez mais tendo que lidar com “fluxos” de dados., Estes dados chegam em um fluxo constante, muitas vezes de várias fontes simultaneamente. Embora seja certamente viável armazenar esses fluxos de dados em disco e analisá-los retrospectivamente, às vezes pode ser sensível ou importante para processar e agir sobre os dados à medida que chega. Os fluxos de dados relacionados com transacções financeiras, por exemplo, podem ser processados em tempo real para identificar– e recusar– transacções potencialmente fraudulentas.
aprendizagem de máquinas: à medida que os volumes de dados crescem, as abordagens de aprendizagem de máquinas tornam-se mais viáveis e cada vez mais precisas., O Software pode ser treinado para identificar e agir sobre gatilhos dentro de conjuntos de dados bem compreendidos antes de aplicar as mesmas soluções a dados novos e desconhecidos. A capacidade da Spark de armazenar dados na memória e executar rapidamente consultas repetidas faz com que seja uma boa escolha para treinar algoritmos de aprendizagem da máquina. A execução de consultas amplamente similares de novo e de novo, em escala, reduz significativamente o tempo necessário para passar por um conjunto de soluções possíveis, a fim de encontrar os algoritmos mais eficientes.,
análise interativa: ao invés de executar consultas pré-definidas para criar painéis estáticos de vendas ou produtividade de linha de produção ou preços de ações, analistas de negócios e cientistas de dados querem explorar os seus dados, fazendo uma pergunta, vendo o resultado, e, em seguida, alterar a pergunta inicial ligeiramente ou mais profundamente em resultados. Este processo de consulta interativa requer sistemas como Spark que são capazes de responder e se adaptar rapidamente.,
integração de dados: os dados produzidos por diferentes sistemas de uma empresa raramente são limpos ou consistentes o suficiente para serem simples e facilmente combinados para a comunicação ou análise. Processos de extração, transformação e carga (ETL) são frequentemente usados para extrair dados de diferentes sistemas, limpá-los e padronizá-los, e depois carregá-los em um sistema separado para análise. Spark (e Hadoop) estão sendo cada vez mais utilizados para reduzir o custo e o tempo necessários para este processo ETL.quem usa faísca?,
uma vasta gama de fornecedores de tecnologia têm sido rápidos a suportar Spark, reconhecendo a oportunidade de estender seus produtos de grandes dados existentes em áreas onde a Spark oferece valor real, tais como o questionamento interativo e aprendizagem de máquinas. Empresas bem conhecidas como IBM e Huawei investiram somas significativas na tecnologia, e um número crescente de startups estão construindo negócios que dependem, no todo ou em parte, da faísca., Por exemplo, em 2013, a equipe Berkeley responsável pela criação da Spark founded Databricks, que fornece uma plataforma de dados end-to-end hospedada pela Spark. A empresa é bem financiada, tendo recebido US $247 milhões em quatro rodadas de investimento em 2013, 2014, 2016 e 2017, e funcionários da Databricks continuam a desempenhar um papel proeminente na melhoria e extensão do código aberto do projeto Apache Spark.,
os principais fornecedores de Hadoop, incluindo MapR, Cloudera e Hortonworks, mudaram-se todos para suportar faísca baseada em fios ao lado de seus produtos existentes, e cada vendedor está trabalhando para adicionar valor para seus clientes. Em outros lugares, IBM, Huawei e outros fizeram investimentos significativos na Apache Spark, integrando-a em seus próprios produtos e contribuindo com melhorias e extensões de volta ao projeto Apache., Empresas baseadas na Web, como o motor de busca chinês Baidu, a operação e-commerce Taobao, e a empresa de redes sociais Tencent, todos executam operações baseadas em faíscas em escala, com os 800 milhões de usuários ativos da Tencent supostamente gerando mais de 700 TB de dados por dia para o processamento em um cluster de mais de 8.000 nós computados.
além daqueles baseados na web gigantes, a empresa farmacêutica Novartis depende de Ignição para reduzir o tempo necessário para obter a modelagem de dados nas mãos de pesquisadores, garantindo a ética e salvaguardas contratuais são mantidos.,o que distingue a faísca?
Existem muitas razões para escolher o Spark, mas os três seguintes são a chave:
Simplicidade: Spark recursos são acessíveis através de um conjunto de APIs avançadas, todos projetados especificamente para interagir de forma rápida e facilmente com os dados em escala. Estas APIs são bem documentadas e estruturadas de uma forma que torna fácil para os cientistas de dados e desenvolvedores de aplicações para colocar faísca rapidamente para funcionar.
Speed: Spark is designed for speed, operating both in memory and on disk., Usando o Spark, uma equipe da Databricks empatados em primeiro lugar com uma equipe da Universidade da Califórnia, em San Diego, em 2014 Daytona GraySort benchmarking desafio (https://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html). O desafio envolve o processamento de um conjunto de dados estáticos; a equipe de bancos de dados foi capaz de processar 100 terabytes de dados armazenados em unidades de estado sólido em apenas 23 minutos, e o vencedor anterior levou 72 minutos usando Hadoop e uma configuração de cluster diferente. Spark pode executar ainda melhor ao suportar consultas interativas de dados armazenados na memória., Nessas situações, há alegações de que a faísca pode ser 100 vezes mais rápida do que o MapReduce de Hadoop.
suporte: Spark suporta uma gama de linguagens de programação, incluindo Java, Python, R e Scala. Spark inclui suporte para uma integração apertada com uma série de soluções de armazenamento líderes no ecossistema Hadoop e além, incluindo o tecido de dados HPE Ezmeral (file system, database, e event store), Apache Hadoop (HDFS), Apache HBase, e Apache Cassandra. Além disso, a comunidade Apache Spark é grande, ativa e internacional., Um conjunto crescente de fornecedores comerciais, incluindo Databricks, IBM, e todos os principais fornecedores Hadoop, fornecem suporte abrangente para soluções baseadas em faíscas.
a potência dos dutos de dados
grande parte da energia da faísca reside na sua capacidade de combinar técnicas e processos muito diferentes em conjunto num único e coerente todo. Fora da Spark, as tarefas discretas de selecionar dados, transformar esses dados de várias maneiras, e analisar os resultados transformados pode facilmente exigir uma série de frameworks de processamento separados, como o Apache Oozie., A Spark, por outro lado, oferece a capacidade de combinar esses elementos, atravessando fronteiras entre lote, streaming e fluxos de trabalho interativos de maneiras que tornam o usuário mais produtivo.
Spark jobs executam várias operações consecutivamente, em memória, e apenas derramando para o disco quando necessário por limitações de memória. A Spark simplifica a gestão destes diferentes processos, oferecendo um conjunto integrado – um gasoduto de dados que é mais fácil de configurar, mais fácil de executar e mais fácil de manter., Em casos de uso como o ETL, esses oleodutos podem se tornar extremamente ricos e complexos, combinando um grande número de insumos e uma ampla gama de etapas de processamento em um todo unificado que constantemente fornece o resultado desejado.