Je l'ai déjà fait avec l'installation d'étincelle et exécuté quelques testscases en configurant les nœuds maître et travailleur. Cela dit, j'ai une très grande confusion quant à la définition exacte d'un travail dans le contexte Spark (pas SparkContext). J'ai ci-dessous des questions
J'ai lu le Spark documention mais toujours cette chose n'est pas claire pour moi.
Cela dit, mon implémentation consiste à écrire des travaux spark {par programme} qui seraient ensuite soumis à un processus spark-submit.
Veuillez aider avec un exemple si possible. Ce serait très utile.
Note: Veuillez ne pas poster de liens d'allumage, car je l'ai déjà essayé. Même si les questions semblent naïves, j'ai néanmoins besoin de plus de clarté dans ma compréhension.
Eh bien, la terminologie peut toujours être difficile car elle dépend du contexte. Dans de nombreux cas, vous pouvez être utilisé pour "soumettre un travail à un cluster", ce qui pour spark serait de soumettre un programme pilote.
Cela dit, Spark a sa propre définition du mot "travail", directement à partir du glossaire:
Job Un calcul parallèle composé de plusieurs tâches qui obtient engendré en réponse à une action Spark (par exemple, sauvegarder, collecter); tu verras ce terme utilisé dans les journaux du conducteur.
Donc, dans ce contexte, supposons que vous deviez procéder comme suit:
Alors,
J'espère que cela rend les choses plus claires ;-)
Hé voici quelque chose que j'ai fait avant, espérons que cela fonctionne pour vous:
#!/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