Introduction to Apache Spark with Examples and Use Cases

Apache Spark

Apache Spark

BY RADEK Ostrowski – SOFTWARE Engineer @ TOPTAL

A primeira vez que oín falar de faísca ao final 2013 when I became interested in Scala, the language in which Spark is written. Sometime later, Eu fixen un proxecto de ciencia de datos divertido tentar prever a sobrevida no Titanic. Este resultou ser unha boa forma de se aínda introducidas en Spark conceptos e programación. Recomendo a calquera desenvolvedor de ignición aspirantes á procura dun lugar para comezar.








hoxe, Faísca está sendo adoptado por grandes xogadores como Amazon, eBay, e Yahoo! Moitas organizacións realizar faísca en clusters con miles de nós. Segundo o FAQ faísca, o maior conxunto coñecido ten máis 8000 nodes. Por suposto, Spark é unha tecnoloxía a pena tomar nota e aprender sobre.

Image1: Apache Spark

Este artigo ofrece unha introdución á faísca incluíndo casos de uso e exemplos. Contén información do sitio web faísca de Apache, así como o libro faísca aprendizaxe – Análise ultrarrápida de Big Data.

What is Apache Spark? unha introdución

Spark é un proxecto Apache anunciado como "un raio de computación rápida de cluster". Ten unha comunidade de código aberto prosperando e é o proxecto Apache máis activo no momento.

Faísca proporciona unha máis rápida e plataforma de procesamento de datos máis xeral. Faísca permite executar programas ata 100x máis rápido na memoria, ou 10x máis rápido no disco, do Hadoop. O ano pasado, Faísca asumiu Hadoop través do enchido do 100 3x concurso TB Daytona GraySort máis rápidos nun décimo do número de máquinas e tamén se fixo o motor de código aberto máis rápido para clasificar un petabyte.

Faísca tamén fai posible escribir código máis rápido que ten sobre 80 operadores de alto nivel á súa disposición. Para demostrar este, imos ter un ollar para o "Ola Mundo!"De BigData: Conta de palabra exemplo. Escrito en Java para o MapReduce ten arredor de 50 liñas de código, Tendo en conta que, en faísca (e Scala) podes facelo tan sinxelo que iso:

sparkContext.textFile(“HDFS://…”)

.flatMap(liña => line.split(” “))

.mapa(word => (word, 1)).reduceByKey(_ + _)

.saveAsTextFile(“HDFS://…”)

Outro aspecto importante cando aprender a usar o Apache Spark é o shell interactivo (repl) que ofrece out-of-the box. usando repl, Pode-se probar o resultado de cada liña de código sen antes a necesidade de codificar e realizar todo o traballo. O camiño para o código de traballo é, por tanto, moito máis curto e análise de datos ad hoc é posible.

características adicionais de faísca inclúen:

  • Actualmente ofrece APIs no Scala, Java, and Python, con soporte para noutros idiomas (como R) de camiño
  • Integra-se ben co ecosistema e fontes de datos Hadoop (HDFS, Amazon S3, Hive, HBase, Cassandra, etc.)
  • Pode ser executado en clusters xestionados polo Hadoop fíos ou Apache mesos, e tamén pode realizar autónomo

O núcleo faísca é complementado por un conxunto de poderosos, bibliotecas de nivel superior que poden ser perfectamente utilizadas no mesmo programa. Estas bibliotecas inclúen actualmente SparkSQL, faísca Transmisión, MLlib (para a aprendizaxe de máquina), e GraphX, cada un dos cales é aínda máis detallada neste artigo. bibliotecas de aceso adicionais e extensións están actualmente en desenvolvemento, así.

Spark libraries

bibliotecas de aceso

Image2: bibliotecas de aceso Apache

Núcleo de ignición

Núcleo de ignición é o motor de base para o procesamento paralelo e datos distribuídos en grande escala. El é responsable:

  • xestión de memoria e recuperación de erros
  • scheduling, distribución e seguimento de traballos nun cluster
  • interactuar cos sistemas de almacenamento

Faísca introduce o concepto de un RDD (Dataset Distributed Resilient), un tolerante a fallos inmutábeis, colección distribuída de obxectos que poden ser operados en paralelo. Un RDD pode conter calquera tipo de obxecto e créase a través da carga dun conxunto de datos externo ou distribuír unha colección desde programa do controlador.

RDDS apoiar dous tipos de operacións:

  • Transformationsson operacións (como mapa, filtro, unirse, unión, and so on) que son realizados nunha RDD e que producen un novo RDD contén o resultado.
  • Actionsson operacións (como reducir, count, primeira, and so on) que retorna un valor tras a execución dun cálculo nunha RDD.

Transformacións na ignición son "preguiceiro", o que significa que eles non computar os resultados inmediatamente. Instead, eles só "lembrar" a operación a ser realizada eo conxunto de datos (e.g., arquivo) en que a operación está a ser executada. As transformacións só son realmente calculado cando unha acción é chamado eo resultado é retornado ao programa do controlador. Este proxecto permite faísca para realizar de forma máis eficiente. For example, Un gran arquivo foi transformado en diversas formas e pasado para a primeira acción, Faísca sería único proceso e voltar o resultado para a primeira liña, en vez de facer o traballo para todo o arquivo.

By default, cada RDD transformada pode recalculada sempre que realizar unha acción na que. However, Tamén pode persistir un RDD na memoria mediante o método de caché ou persisten, caso en que faísca manterá os elementos arredor no cluster para moito máis rápido acceder a próxima vez que vostede consultalo lo.








SparkSQL

SparkSQL é un compoñente faísca que soporta Consultando Datos, tanto a través de SQL ou a través do Hive Query Language. Orixinouse como a porta de Apache Hive para rodar encima faísca (no lugar de MapReduce) e agora está integrado coa pila de faísca. Ademais de proporcionar soporte para varias fontes de datos, que fai que sexa posible tecer as consultas SQL con transformacións de código ao que resulta unha ferramenta moi poderosa. Abaixo está un exemplo dunha consulta compatible Hive:

// SC é unha SparkContext existente.

val SqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

sqlContext.sql(“CREATE TABLE SE NON EXISTE src (key INT, value STRING)”)

sqlContext.sql(“LOAD DATA LUGAR INPATH 'examples / src / main / recursos / kv1.txt’ INTO src TABLE”)

// As consultas exprésanse HiveQL

sqlContext.sql(“DE src tecla SELECT, valor”).recoller().para cada un(println)

faísca Transmisión

faísca Transmisión Soporta procesamento en tempo real de datos de transmisión, como ficheiros de rexistro do servidor web de produción (por exemplo. Apache Flume e HDFS / S3), medios sociais como Twitter, e varias filas de mensaxes como Kafka. Baixo o capó, Faísca Transmisión recibe os fluxos de datos de entrada e divide os datos en lotes. Next, son procesados ​​polo mecanismo de ignición e xerar fluxo final dos resultados en lotes, como representado por baixo.

Spark streaming

streaming de faísca

imaxe 3: streaming de ignición e motor

A faísca streaming API se achega á do Núcleo de faísca, facendo máis doado para os desenvolvedores a traballar nos mundos de ambos os datos de lote e streaming.








MLlib

MLlib é unha biblioteca de aprendizaxe de máquina que ofrece varios algoritmos deseñados para escalar nun cluster para a clasificación, regresión, clustering, e filtrado colaborativo, and so on. Algúns destes algoritmos tamén traballar con datos de transmisión, como regresión lineal polo método dos mínimos cadrados ou comúns k-means clustering (e máis de camiño). Apache cornaca (unha máquina de biblioteca para Hadoop aprendizaxe) xa se afastou do MapReduce e xuntaron forzas en faísca MLlib.

 

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share