Modo de operação da série Spark (dois) modo autônomo e seu serviço histórico, configuração de HA (detalhado)

modo autônomo

00_ premissa:

Java foi instalado (java1.8.0_241)

Hadoop foi instalado (hadoop2.10.0)

01_Introdução

Queremos construir um cluster Spark composto de Master + Slave e o Spark é executado no cluster.

Insira a descrição da imagem aqui

02_configuração de início autônomo

2.1 Copie o Spark e nomeie-o como Spark autônomo

cp -r spark-2.4.0-bin-hadoop2.7 spark-startalone

2.2 Digite conf, configure spark-env.sh, determine master

cd conf
for i in .template; do mv ${i} ${i%.}; done
vi spark-env.sh
SPARK_MASTER_HOST=node1
SPARK_MASTER_PORT=7077

2.3 Modifique o arquivo de escravos e determine o trabalhador

vi slaves
node1
node2
node3

2.4 Adicione JAVA_HOME sob o arquivo sbin / spark-config.sh

export JAVA_HOME=/usr/java/jdk1.8.0_241

2.5 Configurar variáveis ​​de ambiente

vi /etc/profile
export SPARK_HOME=/usr/hadoop/spark-standalone
export PATH=$PATH:$SPARK_HOME/sbin:$SPARK_HOME/bin
source /etc/profile

2.6 Distribuir spark-standalone para nós do cluster

scp -r spark-standalone / node2:/usr/hadoop/
scp -r spark-standalone / node3:/usr/hadoop/

2.7 Inicie o cluster em modo autônomo

sbin/start-all.sh

2.8 A configuração básica do cluster autônomo do Spark está concluída

Porta 8080 para acessar masterUI

Porta 8081 para acessar o workeUI

4040 port driverUI, você pode vê-lo antes da execução, se você precisar vê-lo a qualquer momento, você precisa configurar o serviço de histórico.

2.9 Exemplo 1 - Calculando Pi

[root@node1 spark-standalone]# bin/spark-submit \
> --master spark://node1:7077 \
> --class org.apache.spark.examples.SparkPi \
> ./examples/jars/spark-examples_2.11-2.4.0.jar 100

2.10 Exemplo de contagem de 2 palavras no shell

[root@node1 spark-standalone]# bin/spark-shell --master spark://node1:7077

Crie um diretório de entrada, escreva um arquivo, escreva algumas palavras nele e depois leia, divida, embaralhe e conte no shell. É quase igual ao local acima.

03_Serviço de histórico de configuração (parâmetros gerais e individuais podem ser modificados de acordo com os seus)

3.1 Modifique o arquivo spark-default.conf

vi spark-defaults.conf
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://node1:8020/spark-logs

3.2 Depois de entrar no diretório de instalação do hadoop, execute o comando:

bin/hadoop fs -mkdir /spark-logs

Se você não está preocupado se o comando foi executado com sucesso, você pode iniciar o hadoop e visitar a interface correspondente à porta 50070 para verificar se o diretório foi gerado.

 http://192.168.223.100:50070/

3.3 Modifique o arquivo spark-env.sh e adicione a seguinte configuração

vi spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 -Dspark.history.fs.logDirectory=hdfs://node1:8020/spark-logs"

(1) spark.history.ui.port

O número da porta do WebUI do History Server, o padrão é 18080 ou você mesmo pode defini-lo.

(2) spark.history.retainedApplications

Defina a quantidade de registros do histórico da aplicação armazenados no Cache, o padrão é 50, caso ultrapasse este valor, os antigos serão apagados da memória. Mas não será excluído do HDFS.

Nota: O número de arquivos de cache não significa o número total de arquivos realmente exibidos. Significa apenas que os arquivos que não estão no cache podem precisar ser lidos do disco rígido, com uma pequena diferença na velocidade.

(3) spark.history.fs.logDirectory

Informe ao Spark History Server (Spark History Service) qual diretório registra as informações do log de tarefas. Se esta opção estiver configurada no arquivo neste momento, você não precisa especificar um diretório específico ao iniciar o Spark History Server posteriormente. O diretório pode ser qualquer sistema de arquivos compatível com APIs do Hadoop.

3.4 Distribuir o arquivo modificado para outras máquinas virtuais

scp spark-defaults.conf node2:/usr/hadoop/spark-standalone/conf/
scp spark-defaults.conf node3:/usr/hadoop/spark-standalone/conf/

scp spark-env.sh node2:/usr/hadoop/spark-standalone/conf/
scp spark-env.sh node3:/usr/hadoop/spark-standalone/conf/

3.5 Iniciar e visualizar serviço de histórico do Spark

start-dfs.sh
sbin/start-all.sh
sbin/start-history-server.sh 
jps
http://192.168.223.100:18080/

3.6 Executar uma pequena tarefa

bin/spark-submit \
--master spark://node1:7077 \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
./examples/jars/spark-examples_2.11-2.4.0.jar 10000

04_master-HA

4.1 Princípio de alta disponibilidade

O cluster autônomo tem apenas um mestre. Se o mestre falhar, o aplicativo não poderá ser enviado, o que significa que há um único ponto de falha. O master precisa ser configurado para alta disponibilidade, e a alta disponibilidade do Master pode usar fileSystem (sistema de arquivos) e zookeeper (serviço de coordenação distribuída).

(1) Recuperação de ponto único com base no sistema de arquivos - usado apenas em ambiente de desenvolvimento ou teste

O fileSystem tem apenas a função de armazenamento e pode armazenar as informações de metadados do Master. O Master construído com o fileSystem está altamente disponível. Quando o Master falha, é necessário iniciar manualmente outro Master em espera. Este método não é recomendado.

(2) Standby Masters baseado em zookeeper - pode ser usado em ambiente de produção

O Zookeeper tem funções de seleção e armazenamento, que podem armazenar as informações dos dados do elemento do Master. O Master construído com o zookeeper está altamente disponível. Quando o Master desliga, o Master em standby muda automaticamente. Recomenda-se usar este método para construir o HA do Master. Para tornar a eleição sem controvérsia, um número ímpar de nós é necessário.

4.2 Configurar HA

A solução HA é muito simples de usar. Primeiro inicie um cluster ZooKeeper e, em seguida, inicie o mestre em nós diferentes. Observe que esses nós precisam ter a mesma configuração de zookeeper.

4.2.1 Modificar arquivo spark-env.sh

vi spark-env.sh
#SPARK_MASTER_HOST=node1
#SPARK_MASTER_PORT=7077

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 -Dspark.history.fs.logDirectory=hdfs://node1:8020/spark-logs"

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark-nodes"

Spark.deploy.recoveryMode: modo de recuperação
spark.deploy.zookeeper.url: Endereço do servidor do
ZooKeeper spark.deploy.zookeeper.dir: arquivos e diretórios que salvam informações de metadados do cluster. Incluindo informações do trabalhador, motorista e aplicativo.

4.2.2 Distribuir o arquivo de configuração acima

scp spark-env.sh node2:/usr/hadoop/spark-standalone/conf/
scp spark-env.sh node3:/usr/hadoop/spark-standalone/conf/

4.2.3 Iniciar serviço de centelha

start-dfs.sh
start-yarn.sh
sbin/start-all.sh
sbin/start-history-server.sh
zkServer.sh start
sbin/start-master.sh	 

4.3 Ver serviço

O acesso à interface de gerenciamento de faísca do mestre está ativo, e o outro mestre está pendente. Se o primeiro cair, o zookeeper organiza o segundo para assumir.

http://192.168.223.100:8080/
http://192.168.223.101:8080/

4.4 Teste HA

Teste o interruptor principal / standby

  1. Use jps no primeiro mestre para ver a id do processo mestre
  2. Use kill -9 número de id para forçar o fim do processo
  3. Depois de um tempo, atualize a interface da web do segundo mestre e descubra que o segundo mestre está vivo

4.5 Realize pequenas tarefas

4.5.1 Estatísticas de frequência de palavras

bin/spark-shell --master spark://node1:7077,node2:7077,node3:7077

O seguinte é semelhante ao local, em caso de dúvida, consulte outro modo de operação 1 da série de faísca: configuração do modo local

4.5.2 Exemplo de cálculo

bin/spark-submit \
> --master spark://node1:7077,node2:7077,node3:7077 \
> --deploy-mode client \
> --class org.apache.spark.examples.SparkPi \
> ./examples/jars/spark-examples_2.11-2.4.0.jar 100

4.5.3 Exemplo de cálculo

bin/run-example --master spark://node1:7077,node2:7077,node3:7077 SparkPi

Nota: os exemplos estão incluídos

Acho que você gosta

Origin blog.csdn.net/qq_46009608/article/details/108910867
Recomendado
Clasificación