O que é o Spark Job?

Já fiz a instalação da faísca e executei algumas testas a definir os nós mestre e trabalhador. Dito isto, eu tenho uma confusão muito grande do que exatamente um trabalho é significado no contexto Sparkcontext (não SparkContext). Tenho perguntas a seguir.
    Quão diferente é o trabalho de um programa de condução.
  • A aplicação em si faz parte do programa Driver?
  • O Spark submit de certa forma é um trabalho?

eu li a documentação da faísca mas ainda assim esta coisa não é limpo para mim.

Dito isto, a minha implementação é escrever postos de trabalho programáticos, o que seria um "spark-submit".

Por favor, ajude com um exemplo, se possível . Seria muito útil.

Nota : Por Favor, não postem links de faísca porque eu já tentei. Embora as perguntas pareçam ingénuas, mas ainda assim Preciso de mais clareza na compreensão.

Author: chaosguru, 2015-03-10

2 answers

Bem, a terminologia pode sempre ser difícil, uma vez que depende do contexto. Em muitos casos, você pode ser usado para "submeter um trabalho a um cluster", que para spark seria submeter um programa de driver. Dito isto, Spark tem a sua própria definição de" trabalho", directamente do glossário:
Job um cálculo paralelo que consiste em múltiplas tarefas que gerado em resposta a uma ação de faísca (por exemplo, salvar, coletar); você verá este termo utilizado no registo.
Então eu neste contexto, digamos que você precisa fazer o seguinte:
  1. carregue um ficheiro com nomes de pessoas e endereços no RDD1
  2. carrega um ficheiro com nomes de pessoas e telefones no RDD2
  3. Junta-te ao RDD1 e ao RDD2 pelo nome, para obter o RDD3
  4. Map on RDD3 to get a nice HTML presentation card for each person as RDD4
  5. gravar o RDD4 no ficheiro.
  6. Map RDD1 to extract zipcodes from the addresses to get RDD5
  7. agregado em RDD5 para obter um conta quantas pessoas vivem em cada zipcode como RDD6
  8. Recolhe o RDD6 e imprime estas estatísticas ao stdout.
Então,
  1. a programa do controlador é toda esta peça de código, a correr todos os 8 passos.
  2. produzir todo o conjunto de cartões HTML no Passo 5 é um trabalho (claro porque estamos usando a ação save, Não uma transformação). O mesmo acontece com o recolher no passo 8
  3. outros passos serão organizado em fases, com cada trabalho sendo o resultado de uma sequência de etapas. Para coisas simples um trabalho pode ter um único estágio, mas a necessidade de repartir os dados (por exemplo, a junção no Passo 3) ou qualquer coisa que quebra a localidade dos dados geralmente faz com que mais estágios apareçam. Você pode pensar em estágios como computações que produzem resultados intermediários, que podem de fato ser persistidos. Por exemplo, podemos persistir RDD1 já que vamos usá-lo mais de uma vez, evitando recompensa.
  4. Todos os 3 acima basicamente falam sobre como a lógica de um dado algoritmo será quebrada. Em contrapartida, a missão é uma peça de dados particular que irá passar por um determinado estágio, em um determinado executor.
Espero que torne as coisas mais claras.
 30
Author: Daniel Langdon, 2015-03-10 21:23:23
Eis uma coisa que fiz antes, espero que funcione para ti.
#!/bin/bash
# Hadoop and Server Variables
HADOOP="hadoop fs"
HDFS_HOME="hdfs://ha-edge-group/user/max"
LOCAL_HOME="/home/max"

# Cluster Variables
DRIVER_MEM="10G"
EXECUTOR_MEM="10G"
CORES="5"
EXECUTORS="15"

# Script Arguments
SCRIPT="availability_report.py" # Arg[0]
APPNAME="Availability Report" # arg[1]

DAY=`date -d yesterday +%Y%m%d`

for HOUR in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
do
        #local directory to getmerge to
        LOCAL_OUTFILE="$LOCAL_HOME/availability_report/data/$DAY/$HOUR.txt"

        # Script arguments
        HDFS_SOURCE="webhdfs://1.2.3.4:0000/data/lbs_ndc/raw_$DAY'_'$HOUR" # arg[2]
        HDFS_CELLS="webhdfs://1.2.3.4:0000/data/cells/CELLID_$DAY.txt" # arg[3]
        HDFS_OUT_DIR="$HDFS_HOME/availability/$DAY/$HOUR" # arg[4]

        spark-submit \
        --master yarn-cluster \
        --driver-memory $DRIVER_MEM \
        --executor-memory $EXECUTOR_MEM \
        --executor-cores $CORES \
        --num-executors $EXECUTORS \
        --conf spark.scheduler.mode=FAIR \
        $SCRIPT $APPNAME $HDFS_SOURCE $HDFS_CELLS $HDFS_OUT_DIR

        $HADOOP -getmerge $HDFS_OUT_DIR $LOCAL_OUTFILE
done
 0
Author: Max, 2016-10-21 03:50:49