Como entender passo a passo o código-fonte do Apache Spark


Melhor resposta

Sugiro que você leia as versões mais antigas do código do Spark.

Considere a versão 0.5 lançado em 2012 apache / spark Naquela época, o Spark tinha apenas cerca de 70 arquivos de código-fonte e todos esses arquivos eram pequenos. Dê uma olhada no código-fonte do RDD aqui: apache / spark Tudo é tão simples e conciso.

Além disso, observe que a arquitetura do Spark não tem t mudou dramaticamente desde então. Os desenvolvedores acabaram de adicionar muito tratamento de erros, otimizações e integração com tecnologias externas como Yarn ou Kafka.

Quando você entende como o Spark funcionou em 2012, não seria um problema entender como o Spark funciona hoje.

Além disso, sugiro que você leia estas notas: JerryLead / SparkInternals . Eles fornecem uma visão geral da arquitetura interna do Spark.

Resposta

Para pegar carona na resposta de Noam Ben-Ami – SE você for um usuário de ponta a ponta, o Spark pode ser bem exaustivo e difícil de aprender.

Mesmo que você conheça Bash, Python e SQL, isso é apenas a ponta do iceberg de usar o Spark. Se você está indo de ponta a ponta ao Spark em vez de um analista de script Python / SQL, ele tem muitos componentes que são, por si só, grandes tópicos para aprender.

Claro, você pode usar o Spark localmente (seu laptop) e sem Hadoop, mas no “mundo real” você não usará o Spark assim. É bom aprender um pouco da sintaxe, mas não se engane, ninguém vai contratá-lo para fazer “Spark” nesse contexto (* trocadilho intencional).

Todo o motivo para usar o Spark é o desempenho e você está sentado em cima de um sistema de arquivos distribuído, também conhecido como “Big Data”. Isso significa que quando você escreve o código para seus trabalhos do Spark, você entende coisas como partições, nós, serialização, o JVM, vcores, executores, memória, memória e disco, embaralhamentos, arquivos compactados, formatos colunares (parquet) e semelhantes ao longo do forma de mover dados de, digamos, S3 por meio de RDDs, DataFrames, DataSets (somente Java / Scala) e Spark SQL para seu conjunto de dados final.

Para mim, isso é muito parecido com quando alguém diria que sabe “ Excel ”e você perguntaria a eles se eles poderiam escrever uma macro básica do zero e obter aquela aparência de cervo nos faróis.

Uma possível aventura no Spark incluiria:

  1. Construindo seu cluster Hadoop (nós, memória, instâncias EC2, etc)
  2. configuração YARN (nós, núcleos, instâncias, executores, gerenciamento de memória, drivers, memória extra, transmissão, na memória e assim por diante gerenciamento de disco, etc) – qualquer um desses pode travar / encerrar seus trabalhos e você não dá um passo adiante, mesmo com cargas triviais de dados, se algum deles não funcionar, nós tudo com seus dados.
  3. Documentação do Spark RDDs
  4. Documentação do Spark DataFrames
  5. Documentação do Spark SQL
  6. Inevitavelmente, você escreverá código em # é 3–5 que exporá os problemas de # 2.
  7. Neste ponto, você provavelmente estará depurando, no mínimo, o código Java e, se estiver usando Python, erros de gateway py4J para problemas de tipo de dados com Python e objetos de dados de streaming.

Muitas pessoas podem escrever funções / métodos em RDDs, DataFrames e Spark SQL em meros minutos e se tiverem alguma experiência com Python e SQL – talvez até engolfar RDDs, DataFrames e documentação SQL em alguns dias – mas quando seu trabalho do Spark for interrompido por uma transmissão, executor, tarefa ou erro de memória – nada disso fará diferença. Você está vestindo a roupa de mergulho Spark e mergulhando fundo na barriga do Spark [Java].

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *