O Apache Spark pode funcionar sem o hadoop?

93

Existe alguma dependência entre Spark e Hadoop ?

Se não, há algum recurso que sentirei falta ao executar o Spark sem Hadoop ?

turista
fonte

Respostas:

53

O Spark pode ser executado sem o Hadoop, mas algumas de suas funcionalidades dependem do código do Hadoop (por exemplo, manipulação de arquivos Parquet). Estamos executando o Spark no Mesos e S3, que foi um pouco complicado de configurar, mas funciona muito bem depois de feito (você pode ler um resumo do que é necessário para configurá-lo corretamente aqui ).

(Editar) Observação: desde a versão 2.3.0, o Spark também adicionou suporte nativo para Kubernetes

Arnon Rotem-Gal-Oz
fonte
97

Spark é um mecanismo de computação distribuída na memória.

Hadoop é uma estrutura para armazenamento distribuído ( HDFS ) e processamento distribuído ( YARN ).

O Spark pode ser executado com ou sem componentes Hadoop (HDFS / YARN)


Armazenamento Distribuído:

Como o Spark não tem seu próprio sistema de armazenamento distribuído, ele depende de um desses sistemas de armazenamento para computação distribuída.

S3 - Trabalhos em lote não urgentes. O S3 se encaixa em casos de uso muito específicos quando a localização dos dados não é crítica.

Cassandra - Perfeito para análise de dados de streaming e um exagero para trabalhos em lote.

HDFS - Excelente ajuste para trabalhos em lote sem comprometer a localidade dos dados.


Processo de distribuição:

Você pode executar o Spark em três modos diferentes: Standalone, YARN e Mesos

Dê uma olhada na pergunta SE abaixo para obter uma explicação detalhada sobre armazenamento distribuído e processamento distribuído.

Qual tipo de cluster devo escolher para o Spark?

Ravindra babu
fonte
23

Por padrão, o Spark não possui mecanismo de armazenamento.

Para armazenar dados, ele precisa de um sistema de arquivos rápido e escalonável. Você pode usar S3 ou HDFS ou qualquer outro sistema de arquivos. Hadoop é uma opção econômica devido ao baixo custo.

Além disso, se você usar o Tachyon, ele aumentará o desempenho com o Hadoop. É altamente recomendado o Hadoop para o processamento do apache spark . insira a descrição da imagem aqui

Venu A Positivo
fonte
6

Sim, o Spark pode funcionar sem hadoop. Todos os principais recursos do Spark continuarão a funcionar, mas você sentirá falta de coisas como distribuir facilmente todos os seus arquivos (código e também dados) para todos os nós no cluster via hdfs, etc.

quantum_random
fonte
6

De acordo com a documentação do Spark, o Spark pode ser executado sem Hadoop.

Você pode executá-lo como um modo independente sem nenhum gerenciador de recursos.

Mas se você deseja executar em uma configuração de vários nós , você precisa de um gerenciador de recursos como YARN ou Mesos e um sistema de arquivos distribuído como HDFS, S3 etc.

user2359003
fonte
3

Sim, você pode instalar o Spark sem o Hadoop. Isso seria um pouco complicado. Você pode se referir a um link de arnon para usar o parquet para configurar no S3 como armazenamento de dados. http://arnon.me/2015/08/spark-parquet-s3/

O Spark faz apenas processamento e usa memória dinâmica para realizar a tarefa, mas para armazenar os dados você precisa de algum sistema de armazenamento de dados. Aqui, o hadoop entra em ação com o Spark, ele fornece o armazenamento para o Spark. Mais um motivo para usar o Hadoop com o Spark é que eles são de código aberto e ambos podem se integrar facilmente como comparação com outro sistema de armazenamento de dados. Para outro armazenamento como o S3, deve ser complicado configurá-lo como mencionado no link acima.

Mas o Hadoop também tem sua unidade de processamento chamada Mapreduce.

Quer saber a diferença em ambos?

Verifique este artigo: https://www.dezyre.com/article/hadoop-mapreduce-vs-apache-spark-who-wins-the-battle/83

Acho que este artigo vai te ajudar a entender

  • o que usar,

  • quando usar e

  • Como usar !!!

Abhijit Kumar
fonte
1

Sim, claro. Spark é uma estrutura de computação independente. Hadoop é um sistema de armazenamento de distribuição (HDFS) com estrutura de computação MapReduce. O Spark pode obter dados do HDFS, bem como de qualquer outra fonte de dados, como banco de dados tradicional (JDBC), kafka ou até disco local.

ssnijik
fonte
1

Sim, o Spark pode ser executado com ou sem a instalação do Hadoop para mais detalhes que você pode visitar - https://spark.apache.org/docs/latest/

Hadoop_Expert
fonte
0

Sim, o Spark pode ser executado sem Hadoop. Você pode instalar o Spark em sua máquina local sem Hadoop. Mas Spark lib vem com bibliotecas pré-Haddop, ou seja, são usadas durante a instalação em sua máquina local.

espinha de amarnath
fonte
-5

Não. Requer a instalação completa do Hadoop para começar a funcionar - https://issues.apache.org/jira/browse/SPARK-10944

user1391095
fonte
1
Isso está incorreto, ele funciona bem sem o Hadoop nas versões atuais.
Chris Chambers
1
@ChrisChambers Você gostaria de explicar melhor? O comentário sobre esse problema diz "Na verdade, o Spark requer classes do Hadoop não importa o que aconteça", e na página de downloads há apenas opções para um pré-construído para uma versão específica do Hadoop ou um com Hadoop fornecido pelo usuário. E os documentos dizem "Spark usa bibliotecas de cliente Hadoop para HDFS e YARN." e essa dependência não parece ser opcional.
NikoNyrh
1
@NikoNyrh correto. Eu apenas tentei executar o artefato de download 'Hadoop fornecido pelo usuário' e obter imediatamente um rastreamento de pilha. Também desejo que o caminho de classe do Spark seja desacoplado das classes principais do Hadoop. Mas, para fins de prototipagem e teste, não levo nenhum problema além do tamanho do download (120 MB). Ah bem. Felicidades!
Jesús Zazueta
Rastreamento de pilha em questão:$ ./spark-shell Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSparkProperties$1.apply(SparkSubmitArguments.scala:118) at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefault at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 7 more
Jesús Zazueta