Vous êtes sur la page 1sur 19

Questions et réponses d'Apache Spark

Voici quelques questions et réponses d'entretien Spark fréquemment posées pour


les débutants et les plus expérimentés.

Q.1 Qu'est-ce qu'Apache Spark ?

Apache Sparkest un moteur de traitement de données open source et à large


gamme. C'est un moteur de traitement de données avec des API élevées. Il permet
au Data Worker d'exécuter des charges de travail de streaming, d'apprentissage
automatique ou SQL. Ces tâches nécessitent un accès itératif rapide aux ensembles
de données. Spark fournit des API dans divers langages tels que Python, R,Scala,
Java. Nous pouvons exécuter Spark seul ou sur diversgestionnaire de cluster. Il
existe différentes options de déploiement dans Spark. Par exemple, le mode de
déploiement autonome,Apache Mesos, FIL Hadoop.
La conception de l'Apache est si dynamique qu'elle peut s'intégrer à tous lesBig
Dataoutils. Par exemple, Spark peut accéder aux données de n'importe
quelHadoopla source de données. Il peut également s'exécuter dans un cluster de
données Hadoop. Spark n'a pas son propre système de stockage. Il s'appuie
surHDFS ou autre stockage de fichiers pour stocker les données.

Q.2 Pourquoi l'image de Spark existe-t-elle ?

Pour surmonter les inconvénients d'Apache Hadoop, Spark est entré en scène.
Certains des inconvénients d'Hadoop qu'Apache Spark surmonte sont :

 Hadoop n'utilisait que Java pour créer des applications. Parce qu'il utilise
Java, il y avait des problèmes de sécurité car Java est sujet à la
cybercriminalité.
 Apache Hadoop n'était adapté qu'au traitement par lots. Ainsi, il ne prend pas
en charge le traitement de flux qui a été surmonté dans Spark.
 Hadoop utilisait un traitement sur disque, ce qui ralentissait la récupération
des données. Spark surmonte cela par le calcul en mémoire.

Q.3 Quelles sont les fonctionnalités de Spark ?

Certaines des fonctionnalités d'Apache Spark sont :


 La vitesse de traitement d'Apache Spark est très élevée.
 Apache Spark est de nature dynamique. Il y a donc environ 80 opérateurs de
haut niveau, à l'aide desquels nous pouvons construire une application
parallèle.
 Nous pouvons réutiliser le code pour le flux de jointure par rapport aux
données historiques ou pour le traitement par lots.
 À travers RDDnous atteignons la tolérance aux pannes. Ainsi, la
récupération des données est possible en RDD.
 Spark prend en charge de nombreux langages tels que Java, Scala, Python et
R. Ainsi, le rend plus convivial et est de nature dynamique.
 Il peut fonctionner indépendamment et également sur d'autres gestionnaires
de cluster comme Hadoop YARN.
 Apache Spark est une solution rentable pour le problème de Big Data. Alors
qu'Hadoop a besoin d'un grand stockage et d'un grand centre de données lors
de la réplication.

Q.4 Quelles sont les limites de Spark ?

 N'a pas son système de gestion de fichiers. Ainsi, il doit s'intégrer à Hadoop
ou à d'autres plates-formes de données basées sur le cloud.
 La capacité en mémoire peut devenir un goulot d'étranglement. Surtout
lorsqu'il s'agit d'un traitement rentable des Bigdata.
 La consommation de mémoire est très élevée. Et les problèmes pour les
mêmes ne sont pas traités de manière conviviale. ré. Cela nécessite des
données volumineuses.
 MLlib manque dans certains algorithmes disponibles, par exemple, la
distance Tanimoto.

Q.5 Répertoriez les langues prises en charge par Apache Spark.

Apache Spark prend en charge les langages suivants : Scala, Java, R, Python.

Q.6 Dans quels cas Apache Spark surpasse Hadoop ?

La vitesse de traitement des données augmente dans Apache Spark. Cela est dû à la prise en
charge du calcul en mémoire par le système. Ainsi, les performances du système augmentent
de 10x à 1000x. Apache Spark utilise différents langages pour le développement
d'applications distribuées. En plus du noyau Spark, diverses bibliothèques sont présentes. Ces
bibliothèques permettent une charge de travail qui utilise le streaming, SQL, graphique et
machine learning. Certaines de ces charges de travail sont également prises en charge par
Hadoop. Spark facilite le développement en les joignant dans la même application. Apache
Spark adopte le micro-lot. Qui est essentiellement utilisé pour gérer le modèle de données de
traitement en temps quasi réel.

Q.7 Comparez Hadoop et Spark.

 Rentable -Dans Hadoop, lors de la réplication, un grand nombre de serveurs, une


énorme quantité de stockage et le grand centre de données sont nécessaires. Ainsi,
l'installation et l'utilisation d'Apache Hadoop sont coûteuses. L'utilisation d'Apache
Spark est une solution rentable pour l'environnement de Big Data.
 Performance -L'idée de base de Spark était d'améliorer les performances du
traitement des données. Et Spark l'a fait 10x-100x fois. Et tout le mérite d'un
traitement plus rapide dans Spark revient au traitement des données en mémoire. Dans
Hadoop, le traitement des données s'effectue sur disque tandis que dans Spark le
traitement des données s'effectue en mémoire. Il ne se déplace sur le disque qu'en cas
de besoin. Le calcul en mémoire Spark est bénéfique pour les algorithmes itératifs. En
ce qui concerne les performances, en raison du traitement par lots dans Hadoop, son
traitement est assez lent tandis que la vitesse de traitement d'Apache est plus rapide car
il prend en charge le micro-traitement par lots.
 Facilité de développement –Le cœur de Spark est le moteur d'exécution distribué.
Divers langages sont pris en charge par Apache Spark pour le développement
d'applications distribuées. Par exemple, Java, Scala, Python et R. En plus du noyau
Spark, diverses bibliothèques sont créées pour permettre la charge de travail. ils
utilisent le streaming, le SQL, le graphe et l'apprentissage automatique. Hadoop prend
également en charge certaines de ces charges de travail, mais Spark facilite le
développement en les combinant dans la même application. ré. Récupération après
défaillance : la méthode de la faute
 Récupération d'échec -La méthode de récupération des pannes est différente dans
Apache Hadoop et Apache Spark. Dans Hadoop, après chaque opération, les données
sont écrites sur le disque. Les objets de données sont stockés dans Spark dans RDD
répartis sur le cluster de données. Les RDD sont soit en mémoire, soit sur disque et
permettent une récupération complète en cas de panne ou de panne.
 Système de gestion de fichiers –Hadoop possède son propre système de gestion de
fichiers appelé HDFS (Hadoop Distributed File System). Bien qu'Apache Spark soit
une intégration avec un, il peut même s'agir de HDFS. Ainsi, Hadoop peut fonctionner
sur Apache Spark.
 Modèle de calcul –Apache Hadoop utilise un modèle de traitement par lots, c'est-à-
dire qu'il prend une grande quantité de données et les traite. Mais Apache Spark
adopte le micro-batching. Indispensable pour gérer le modèle de données de traitement
en temps quasi réel. En ce qui concerne les performances, en raison du traitement par
lots dans Hadoop, son traitement est assez lent. La vitesse de traitement d'Apache est
plus rapide car il prend en charge le micro-batch.
 Lignes de code –Apache Hadoop compte environ 23 00 000 lignes de code, tandis
qu'Apache Spark compte 20 000 lignes de code.
 Mise en cache –En mettant en cache le résultat partiel dans la mémoire des
travailleurs distribués, Spark garantit des calculs à faible latence. Bien que
MapReduce soit entièrement orienté disque, il n'y a aucune disposition de mise en
cache.
 Planificateur– En raison du calcul en mémoire dans Spark, il agit comme son propre
planificateur de flux. Alors qu'avec Hadoop MapReduce, nous avons besoin d'un
planificateur de tâches supplémentaire comme Azkaban ou Oozie afin que nous
puissions planifier des flux complexes.
 API Spark –En raison de l'API très stricte de Hadoop MapReduce, il n'est pas
polyvalent. Mais comme Spark ignore de nombreux détails de bas niveau, il est plus
productif.
 Critères de fenêtre –Apache Spark a des critères de fenêtre basés sur le temps. Mais
Apache Hadoop n'a pas de critères de fenêtre car il ne prend pas en charge le
streaming.
 Plus rapide -Apache Hadoop exécute la tâche 10 à 100 fois plus rapidement
qu'Apache Hadoop MapReduce.
 Licence -Apache Hadoop et Apache MapReduce ont tous deux une licence version
2.0.
 DAG() –Dans Apache Spark, il existe un flux de données cyclique dans l'algorithme
d'apprentissage automatique, qui est un graphe acyclique direct. Alors que dans
Hadoop MapReduce, le flux de données n'a pas de boucles, il s'agit plutôt d'une chaîne
de l'image.
 Gestion de la mémoire -Apache Spark dispose d'un système de gestion automatique
de la mémoire. Alors que la gestion de la mémoire dans Apache Hadoop peut être
statistique ou dynamique.
 Traitement itératif –Dans Apache Spark, les données sont itérées par lots. Ici, le
traitement et la planification de chaque itération sont séparés. Alors que dans Apache
Hadoop, il n'y a aucune disposition pour le traitement itératif.
 Latence – Le temps de traitement par Apache Spark est inférieur à celui d'Hadoop car
il met en cache ses données en mémoire au moyen de RDD, donc la latence d'Apache
Spark est inférieure à celle d'Hadoop.

Q.8 Quels sont les composants de l'écosystème Spark ?

Les différents composants d'Apache Spark sont :


 Noyau d'étincelle -Spark Core est la base de tout le projet. Toutes les fonctionnalités
de Spark sont présentes sur le dessus de Spark Core.
 Spark Streaming –Il permet un streaming tolérant aux pannes de flux de données en
direct. Il s'agit d'un module complémentaire à l'API Spark principale. Ici, il utilise le
micro-lot pour le streaming en temps réel. Ainsi, il conditionne les données en direct
en petits lots et les livre au système de traitement par lots pour traitement.
 Spark SQL –Le composant Spark SQL est un framework distribué pour le traitement
de données structurées. Utilisation de Spark SQL Spark obtient plus d'informations sur
la structure des données et le calcul effectué. Par conséquent, en utilisant ces
informations, Spark peut effectuer une optimisation supplémentaire.
 Spark MLlib –MLlib est une bibliothèque d'apprentissage évolutive qui traite à la fois
: algorithme de haute qualité, haute vitesse. Le motif derrière la création de MLlib est
de rendre l'apprentissage automatique évolutif et facile. Ainsi. il contient des
bibliothèques d'apprentissage automatique qui ont une implémentation de divers
algorithmes d'apprentissage automatique.
 Spark GraphX– GraphX est une API pour les graphes et l'exécution parallèle de
graphes. Afin de prendre en charge le calcul des graphes, graphX contient un
ensemble d'opérateurs fondamentaux tels que des sous-graphes, des jointures et une
variante optimisée de l'API Pregel. En outre, le regroupement, la classification, la
traversée, la recherche et la recherche de chemin sont possibles dans graphX.
 SparkR –SparkR est la version Apache Spark 1.4. Le composant clé de SparkR est
SparkR DataFrame. Les trames de données sont une structure de données
fondamentale pourtraitement des données en R et le concept de trames de données
s'étend à d'autres langages avec des bibliothèques comme Pandas, etc.

Q.9 Qu'est-ce que Spark Core ?

Noyau d'étincelleest un moteur d'exécution commun pour la plate-forme Spark. Il fournit un


traitement parallèle et distribué pour les grands ensembles de données. Tous les composants
sur le dessus. Le noyau Spark offre de la vitesse grâce au calcul en mémoire. Et pour faciliter
le développement, il prend également en charge les API Java, Scala et Python. RDD est la
structure de données de base de Spark Core. Les RDD sont immuables, une collection
d'enregistrements partitionnée qui peut fonctionner en parallèle. Nous pouvonscréer des
RDDpar transformation sur les RDD existants. Également en chargeant un jeu de données
externe à partir d'un stockage stable comme HDFS ou HBase, nous pouvons former RDD.

Q.10 Comment les données sont-elles représentées dans Spark ?


Les données peuvent être représentées de trois manières dans Apache Spark : RDD,
DataFrame, DataSet.

RDD :RDD signifie Resilient Distributed Datasets. Il s'agit également d'une collection


d'enregistrements de partition en lecture seule. RDD est la structure de données fondamentale
de Spark. Par conséquent, les RDD ne peuvent être créés que par une opération déterministe
sur :

 Données dans un stockage stable.


 Parallélisation de la collection déjà existante dans le programme pilote.
 D'autres RDD. RDD permet au programmeur d'effectuer des calculs en mémoire sur
de grands clusters de manière tolérante aux pannes. Ainsi, accélérez la tâche.

Trame de données:Contrairement à un RDD, les données s'organisent en colonnes nommées,


comme une table dans une base de données relationnelle. C'est aussi une collection de
données immuable et distribuée.Trame de données permet aux développeurs d'imposer une
structure sur une collection distribuée de données, permettant ainsi une abstraction de niveau
supérieur.

Base de données: Dataset est une extension de l'API DataFrame qui fournit une interface de
programmation orientée objet et sécurisée. Base de données profite également de
Optimiseur de catalyseur de Spark en exposant des expressions et des champs de données à
un planificateur de requêtes.

Q.11 Quelles sont les abstractions d'Apache Spark ?

La principale abstraction fournie par Apache Spark est Resilient Distributed Dataset. Les
RDD sont de nature tolérante aux pannes. Nous ne pouvons pas améliorer les modifications
apportées dans RDD. La création de RDD commence par le fichier dans un système de
fichiers comme le système de fichiers Hadoop, puis sa transformation. La variable partagée
est la deuxième abstraction fournie par Apache Spark. Nous pouvons l'utiliser dans des
opérations parallèles.

Q.12 Expliquer les opérations d'Apache Spark RDD.

Apache Spark RDD prend en charge deux types d'opérations : les transformations et les
actions-

 Transformations sont des opérations paresseuses sur un RDD qui créent un ou


plusieurs nouveaux RDD. Par exemple, Map, filter, reduceByKey, etc. crée un
nouveau RDD. RDD crée un nouveau jeu de données à partir d'un existant. Qui
s'exécute à la demande. Cela signifie qu'ils calculent paresseusement. Chaque fois que
nous effectuons une transformation sur RDD, cela crée un nouveau RDD à chaque
fois.
 Action renvoie le résultat final des calculs RDD. Il déclenche l'exécution à l'aide d'un
graphe de lignage pour charger les données dans le RDD d'origine. Après application
de toutes les transformations intermédiaires, il donne le résultat final au programme
pilote ou l'écrit dans le système de fichiers. Lors de l'application d'actions sur un RDD,
les valeurs non RDD sont générées.

Q.13 Combien de types de transformation existe-t-il ?

Il existe deux types de transformation, à savoir la transformation étroite et la transformation


large.
 Transformation étroiteest le résultat de map, filter et tel que les données proviennent
d'une seule partition. En conséquence, les données sont auto-entretenues. Le RDD que
nous obtenons en sortie a une partition avec des enregistrements qui proviennent d'une
seule partition dans le RDD parent.
 De larges transformationssont le résultat de groupByKey et de reduceByKey. Les
données dont nous aurons besoin pour calculer les enregistrements dans une seule
partition sont conservées dans de nombreuses partitions du RDD parent.

Apache Spark Transformations étroites et larges

Q.14 De combien de manières les RDD peuvent-ils être créés ? Expliquer.

Il existe trois façons de créer un RDD :

 Collecte parallélisée –Dans les étapes initiales, le RDD est généralement créé par
collection parallélisée. Dans cette méthode, nous prenons la collection existante dans
le programme et la passons à la méthode parallelize() de SparkContext. La chose qui
doit être remarquée dans la collection parallélisée est le nombre de partitions dans
lesquelles l'ensemble de données est découpé. Pour chaque partition du cluster, Spark
exécutera une tâche. Spark a défini un certain nombre de partitions en fonction de
notre cluster. Mais le nombre de partitions peut également être défini manuellement.
Passez le numéro de partition comme deuxième paramètre pour la partition manuelle.
par exemple sc.parallelize(data, 20), ici nous avons manuellement donné un nombre
de partition comme 20.
 Ensembles de données externes (référencement d'un ensemble de données) –Dans
Spark, il est possible de créer un ensemble de données distribué à partir de n'importe
quelle source de données prise en charge par Hadoop. Par exemple, le système de
fichiers local, HDFS, Cassandra, HBase, etc. Dans ce cas, les données sont chargées à
partir de l'ensemble de données externe. Pour créer un fichier texte RDD, nous
pouvons utiliserSparkContextméthode textFile. Il prend l'URL du fichier et le lit
comme une collection de lignes. L'URL peut être un chemin local sur la machine ou
un hdfs://, s3n://, etc.
 Création d'un RDD à partir d'un RDD existant -La transformation convertit un
RDD en un autre RDD. En utilisant la transformation, nous pouvons créer un RDD à
partir d'un RDD existant. La transformation agit comme une fonction qui absorbe un
RDD et en produit un.
Q.15 Que sont les RDD appariés ?

RDD jumeléssont la paire clé-valeur contenant RDD. Une paire clé-valeur (KYP) contient
deux éléments de données liés. Ici Key est l'identifiant et Value sont les données
correspondant à la valeur de la clé.

Q.16 Qu'entend-on par traitement en mémoire dans Spark ?

Dans le calcul en mémoire, nous conservons les données dans la mémoire vive à la place de
certains lecteurs de disque lents. Le traitement des données est en parallèle. En utilisant cela,
nous pouvons également identifier le modèle, analyser les données volumineuses proposées
par Spark dans les capacités en mémoire. En conséquence, cela augmente la vitesse de
traitement car il récupère les données de la mémoire à la place du disque. De plus, le temps
d'exécution du processus diminue. Conserver les données en mémoire améliore les
performances de l'ordre de grandeur. La principale abstraction de Spark réside dans ses RDD.
De plus, nous pouvons mettre en cache RDD en utilisant la méthode cache() ou persist().
Dans la méthode cache(), tous les RDD sont en mémoire. La dissemblance entre cache() et
persist() est le niveau de stockage par défaut. Pour cache(), il s'agit de MEMORY_ONLY.
Dans persist(), il existe différents niveaux de stockage tels que :

 MEMORY_ONLY,
 MEMORY_AND_DISK,
 MEMORY_ONLY_SER
 MEMORY_AND_DISK_SER
 DISK_ONLY

Lisez le traitement en mémoire Spark en détail.

Q.17 Comment la tolérance aux pannes est-elle atteinte dans Apache Spark ?

La sémantique de base tolérante aux pannes de Spark est :

 Puisque tout RDD est un ensemble de données immuable. Chaque RDD garde une
trace de la lignée de l'opération déterministe que l'employé sur l'ensemble de données
d'entrée tolérant aux pannes pour le créer.
 Si une partition d'un RDD est perdue en raison d'une défaillance du nœud de travail,
cette partition peut être recalculée à partir de l'ensemble de données tolérant aux
pannes d'origine à l'aide de la lignée des opérations.
 En supposant que toutes les transformations RDD soient déterministes, les données du
RDD transformé final seront toujours les mêmes, quelles que soient les défaillances du
cluster Spark.

Pour atteindre la tolérance aux pannes pour tous les RDD générés, les données obtenues sont
répliquées parmi plusieurs exécuteurs Spark dans le nœud de travail du cluster. Il en résulte
deux types de données qui doivent être récupérées en cas de panne :

 Données reçues et répliquées –En cela, les données se répliquent sur l'un des autres
nœuds. Ainsi, nous pouvons récupérer des données lorsqu'une panne survient.
 Données reçues mais mises en mémoire tampon pour la réplication –les données
ne se répliquent pas. Ainsi, la seule façon de récupérer le défaut est de le récupérer à
nouveau à la source.

Une défaillance peut également se produire dans les nœuds de travail et de pilote.

 Défaillance du nœud de travail –Le nœud qui exécute le code d'application sur le
cluster est le nœud de travail. Ce sont les nœuds esclaves. L'un des nœuds de travail
exécutant l'exécuteur peut échouer, entraînant ainsi une perte de données en mémoire.
Si des récepteurs s'exécutaient sur des nœuds défaillants, leurs données de tampon
disparaîtront.
 Défaillance du nœud de pilote – Si le nœud du pilote exécutant l'application Spark
Streaming échoue, il y a la perte de Contenu Spark. Tous les exécuteurs avec leurs
données en mémoire disparaissent.

Spark Interview Questions et réponses - Fonction d'évaluation paresseuse

Q.18 Qu'est-ce que le graphe acyclique dirigé (DAG) ?

RDDse forment après chaque transformation. À haut niveau, lorsque nous appliquons une
action sur ces RDD, Spark crée un DAG. DAG est un graphe orienté fini sans cycles orientés.

Il y a tellement de sommets et d'arêtes, où chaque arête est dirigée d'un sommet à un autre. Il
contient une séquence de sommets telle que chaque arête est dirigée du plus tôt vers le plus
tard dans la séquence. C'est une généralisation stricte deCarteRéduiremaquette. DAG vous
permet d'entrer dans la scène et de vous développer en détail sur n'importe quelle scène.

Dans la vue d'étape, les détails de tous les RDD qui appartiennent à cette étape sont
développés.
Q.19 Qu'est-ce qu'un graphique de lignage ?

Graphique de lignagefait référence au graphique qui a tous les RDD parents d'un RDD. C'est
le résultat de toutes les transformations sur le RDD. Il crée un plan d'exécution logique.

Un plan d'exécution logique est un plan qui commence par le tout premier RDD. De plus, il
ne dépend d'aucun RDD. Il se termine ensuite au RDD qui produit le résultat d'une action qui
a été appelée à s'exécuter.

Q.20 Qu'est-ce que l'évaluation paresseuse dans Spark ?

L'évaluation paresseuse connue sous le nom d'appel par besoin est une stratégie qui retarde
l'exécution jusqu'à ce que l'on requière une valeur. La transformation dans Spark est de nature
paresseuse. Spark les évalue paresseusement. Lorsque nous appelons une opération dans
RDD, elle ne s'exécute pas immédiatement ; Spark conserve le graphique de l'opération qu'il
demande. Nous pouvons exécuter l'opération à n'importe quelle instance en appelant l'action
sur les données. Les données ne se chargent pas tant que cela n'est pas nécessaire.

Q.21 Quels sont les avantages de l'évaluation paresseuse ?

En utilisant l'évaluation paresseuse, nous pouvons :

 Augmenter la maniabilité du programme.


 Économise la surcharge de calcul et augmente la vitesse du système.
 Réduit la complexité temporelle et spatiale.
 fournit l'optimisation en réduisant le nombre de requêtes.

Q.22 Qu'entendez-vous par persistance ?

Persistance RDDest une technique d'optimisation qui enregistre le résultat de l'évaluation


RDD. En utilisant cela, nous sauvegardons le résultat intermédiaire pour une utilisation
ultérieure. Cela réduit le temps de calcul. Nous pouvons créer un RDD persistant via les
méthodes cache() et persist(). C'est un outil clé pour l'algorithme interactif. Parce que, lorsque
RDD est persisté, chaque nœud stocke toute partition qu'il calcule en mémoire. Le rend ainsi
réutilisable pour une utilisation future. Ce processus accélère le calcul ultérieur dix fois.

Q.23 Expliquez les différents niveaux de persistance dans Apache Spark.

La méthode persist permet sept niveaux de stockage :

 MEMORY_ONLY –Stockez RDD en tant qu'objets Java désérialisés. Si le RDD ne


tient pas dans la mémoire, alors certaines partitions ne seront pas mises en cache et
seront recalculées à la volée à chaque fois que nécessaire. C'est le niveau par défaut.
 MEMORY_AND_DISK –Stockez RDD en tant qu'objets Java désérialisés. Si le
RDD ne tient pas dans la mémoire, stockez les partitions qui ne tiennent pas sur le
disque et lisez-les à partir de là quand elles sont nécessaires.
 MEMORY_ONLY_SER (Java et Scala) –Stockez RDD en tant qu'objets Java
sérialisés. C'est plus économe en espace que les objets désérialisés. surtout lors de
l'utilisation d'un sérialiseur rapide. mais il est difficile pour le CPU de lire.
 MEMORY_AND_DISK_SER (Java et Scala) –Comme MEMORY_ONLY_SER,
mais renverse les partitions qui ne tiennent pas en mémoire sur le disque.
 DISK_ONLY –Il stocke les partitions RDD uniquement sur le disque.
 MEMORY_ONLY_2, MEMORY_AND_DISK_2 -Il réplique chaque partition sur
deux nœuds de cluster.
 OFF_HEAP –Comme MEMORY_ONLY_SER, mais stocke les données dans la
mémoire hors tas. Cela nécessite l'activation de la mémoire hors tas.

Q.24 Expliquer l'architecture d'exécution de Spark ?

Les composants de la architecture d'exécution de Sparksont les suivants : a. Le chauffeurb.


Gestionnaire de clusterc. Exécuteurs

Le conducteur -La méthode main() du programme s'exécute dans le pilote. Le processus qui
exécute le code utilisateur qui crée les RDD effectue la transformation et l'action, et crée
également SparkContext est appelé plongeur. Lorsque Spark Shell est lancé, cela signifie que
nous avons créé un programme de pilote. L'application se termine, comme le pilote se
termine. Enfin, le programme pilote divise l'application Spark en tâches et les planifie pour
qu'elles s'exécutent sur l'exécuteur.

Gestionnaire de cluster – Spark dépend du gestionnaire de cluster pour lancer les exécuteurs.
Dans certains cas, même les pilotes sont lancés par le gestionnaire de cluster. C'est un
composant enfichable dans Spark. Sur le gestionnaire de cluster, le planificateur Spark
planifie les tâches et les actions au sein d'une application Spark à la manière FIFO.
Alternativement, la planification peut également être effectuée en mode Round Robin. Les
ressources utilisées par une application Spark peuvent également être ajustées
dynamiquement en fonction de la charge de travail. Ainsi, l'application peut libérer des
ressources inutilisées et les redemander en cas de demande. Ceci est disponible sur tous les
gros grainsgestionnaires de clusters, c'est-à-dire le mode autonome, le mode YARN et le
mode à grain grossier Mesos.

Les exécuteurs testamentaires - Chaque tâche du travail Spark s'exécute dans les exécuteurs
Spark. ainsi, les exécuteurs sont lancés une fois au début de l'application Spark, puis ils
s'exécutent pendant toute la durée de vie d'une application. Même après l'échec de l'exécuteur
Spark, l'application Spark peut continuer facilement.
Les exécuteurs ont deux rôles principaux :

 Exécute la tâche qui constitue l'application et renvoie le résultat au pilote.


 Fournir un stockage en mémoire pour les RDD que le programme utilisateur met en
cache.

Q.25 Expliquer divers gestionnaire de cluster dans Apache Spark ?


Les différents clusters gérés par Apache Spark sont Standalone, Hadoop YARN, Apache
Mesos.

 Gestionnaire de cluster autonome –Standalone est un gestionnaire de cluster simple


de Spark qui facilite la configuration d'un cluster. Dans de nombreux cas, c'est le
moyen le plus simple d'exécuter une application Spark dans un environnement en
cluster. Il a des maîtres et un nombre de travailleurs avec la quantité configurée de
mémoire et de cœurs de processeur. En mode cluster autonome, Spark alloue les
ressources en fonction du cœur. Il a les contraintes qu'un seul exécuteur peut être
alloué sur chaque travailleur par application.
 FIL Hadoop –YARN est devenu le sous-projet de Hadoop en 2012. L'idée clé
derrière YARN est de bifurquer les fonctionnalités du gestionnaire de ressources et de
la planification des tâches en différents démons. Le plan est d'avoir un
GlobalGestionnaire de ressources (RM) et Application Master (AM) par application.
Une application est soit un DAG de graphiques, soit un travail individuel. Le cadre de
calcul des données est une combinaison du ResourceManager et duGestionnaire de
nœuds.
 Apache Mesos –Apache Mesos gère la charge de travail dans un environnement
distribué. Il est sain pour le déploiement et la gestion d'applications dans des
environnements de cluster à grande échelle. Mesos regroupe les ressources existantes
des machines/nœuds dans un cluster, de sorte qu'une variété de charges de travail peut
utiliser. C'est ce qu'on appelle l'abstraction de nœud, ce qui réduit la surcharge liée à
l'allocation d'une machine spécifique pour différentes charges de travail. C'est une
plate-forme de gestion des ressources pour Hadoop etBig Datagroupe. D'une certaine
manière, Apache Mesos est l'inverse de la virtualisation. Parce que dans la
virtualisation, une ressource physique se divise en plusieurs ressources virtuelles,
tandis que dans Mesos, plusieurs ressources physiques se regroupent en une seule
ressource virtuelle.

Q.26 De combien de manières pouvons-nous utiliser Spark sur Hadoop ?

Nous pouvons exécuter Spark sur Hadoop de trois manières : Standalone, YARN, SIMR
 Autonome – En cela, nous pouvons soit diviser les ressources sur toutes les machines,
soit sous-ensemble de machines dans cluster Hadoop.
 FIL –Nous pouvons exécuter Spark sur YARN sans aucun pré-requis. Ainsi, nous
pouvons intégrer Spark dans la pile Hadoop et profiter des fonctionnalités de Spark.
 SIMR (Spark dans MapReduce) –Une autre façon de le faire consiste à lancer le
travail Spark dans Map reduce. Avec SIMR, nous pouvons utiliser Spark Shell en
quelques minutes après l'avoir téléchargé. Cela réduit les frais généraux de
déploiement et nous pouvons jouer avec Spark.

Q.27 Qu'est-ce que YARN ?

FILest devenu le sous-projet de Hadoop en 2012. Il est également connu sous le nom de
MapReduce 2.0. L'idée clé derrière YARN est de bifurquer les fonctionnalités du gestionnaire
de ressources et de la planification des tâches en différents démons. Le plan est d'avoir un
Global Resource Manager (RM) et un Application Master (AM) par application. Une
application est soit un DAG de graphiques, soit un travail individuel. Le cadre de calcul de
données est une combinaison de ResourceManager et de NodeManager.

Le gestionnaire de ressources gère les ressources parmi toutes les applications du système. Le
gestionnaire de ressources a planifié et le gestionnaire d'applications. Le planificateur alloue
des ressources aux différentes applications en cours d'exécution. Le Scheduler est pur
Scheduler s'il n'effectue aucune surveillance ou suivi de l'état de l'application. Le gestionnaire
d'applications gère les applications sur tous les nœuds. NodeManager contient
ApplicationMaster et conteneur. Un conteneur est un endroit où se déroule une unité de
travail. Chaque tâche de MapReduce s'exécute dans un conteneur. L'ApplicationMaster par
application est une bibliothèque spécifique au framework. Il négocie les ressources du
ResourceManager et continue avec le(s) NodeManager(s) pour exécuter et surveiller les
tâches. L'application ou le travail nécessite un ou plusieurs conteneurs. NodeManager
s'occupe des conteneurs, de l'utilisation des ressources (CPU, mémoire, disque,

Q.28 Comment pouvons-nous lancer l'application Spark sur YARN ?

Il existe deux modes de déploiement pour lancer l'application Spark sur YARN : le mode
cluster et le mode client.

 En mode cluster, le pilote Spark s'exécute dans Application Master Process et est
géré par YARN sur le cluster.
 En mode client,le pilote s'exécute dans le processus client. Le maître d'application
demande une ressource à YARN. Et il le fournit au programme pilote.

Q.29 Définir la partition dans Apache Spark.

La partition fait référence à un bloc logique d'un grand ensemble de données distribué. Le
partitionnement logique des données et leur distribution sur le cluster assurent le parallélisme.
Il minimise également le trafic réseau pour l'envoi de données entre les exécuteurs. Il
détermine comment accéder à l'ensemble des ressources matérielles pendant l'exécution du
travail. RDD est automatiquement partitionné dans Spark. Nous pouvons modifier la taille et
le numéro de la partition.

Q.30 Que sont les variables partagées ?


Variables partagéessont l'une des abstractions d'Apache Spark. Les variables partagées
peuvent être utilisées dans des opérations parallèles.

Chaque fois que Spark exécute une fonction en parallèle sous la forme d'un ensemble de
tâches sur différents nœuds, chaque variable utilisée dans la fonction est distribuée à chaque
tâche. Parfois, il est nécessaire de partager les variables entre les tâches ou entre la tâche et le
programme pilote.

Apache Spark prend en charge deux types de variables partagées, à savoir la variable de
diffusion et l'accumulateur. À l'aide de variables de diffusion, nous mettons en cache une
valeur en mémoire sur tous les nœuds pendant que nous ajoutons des accumulateurs, tels que
des compteurs et des sommes.

Q.31 Qu'est-ce que l'accumulateur ?

L'accumulateur est le type de variable partagée qui n'est ajoutée que par des opérations
associatives et commutatives. En utilisant l'accumulateur, nous pouvons mettre à jour la
valeur de la variable lors de l'exécution. On peut aussi implémenter des compteurs (comme
dans MapReduce) ou des sommes à l'aide d'un accumulateur. Les utilisateurs peuvent créer un
accumulateur nommé ou non nommé. Nous pouvons créer un accumulateur numérique en
appelant SparkContext.longAccumulator() ou SparkContext.doubleAccumulator() pour Long
ou Double.

Q.32 Quelle est la différence entre DSM et RDD ?

a) LIRE

 RDD :Dans RDD, l'opération de lecture est à grain grossier ou à grain fin. En gros,
nous pouvons transformer l'ensemble de données entier mais pas un élément
individuel. Alors qu'en granulation fine, nous effectuons la transformation d'un
élément individuel sur un ensemble de données.
 Mémoire partagée distribuée : L'opération de lecture dans la mémoire partagée
distribuée est affinée.

b) Écris :

 RDD : L'opération d'écriture est à gros grains dans RDD.


 Mémoire partagée distribuée : Dans un système partagé distribué, l'opération
d'écriture est fine.

c) Cohérence :
 RDD :La cohérence de RDD est triviale, ce qui signifie qu'il est de nature immuable.
Toute modification apportée à un RDD ne peut pas être annulée, elle est permanente.
Le niveau de cohérence est donc élevé.
 Mémoire partagée distribuée :Le système garantit que si le programmeur suit les
règles, la mémoire sera cohérente. Il garantit également que les résultats des
opérations de mémoire seront prévisibles.

d) Mécanisme de dépannage :

 RDD : En utilisant un graphique de lignage à tout moment, nous pouvons facilement


trouver les données perdues dans un RDD.
 Mémoire partagée distribuée :La tolérance aux pannes est obtenue par une technique
de point de contrôle. Il permet aux applications de revenir à un point de contrôle
récent plutôt que de redémarrer.

e) Atténuation des retardataires : Les retardataires, en général, sont les tâches qui prennent
plus de temps à accomplir que leurs pairs.

 RDD : dans RDD, il est possible d'atténuer les retardataires en utilisant la tâche de
sauvegarde.
 Mémoire partagée distribuée : Il est assez difficile de parvenir à une atténuation des
retardataires.

f) Comportement si pas assez de RAM :

 RDD : S'il n'y a pas assez d'espace pour stocker les RDD dans la RAM, les RDD sont
déplacés vers le disque.
 Mémoire partagée distribuée : Dans ce type de système, les performances diminuent
si la RAM manque de stockage.

Q.33 Comment minimiser le transfert de données lors de l'utilisation d'Apache Spark ?

En minimisant le transfert de données et en évitant le brassage des données, nous pouvons


augmenter les performances. Dans Apache Spark, nous pouvons minimiser le transfert de
données de trois manières :

 En utilisant une variable de diffusion -Étant donné que la variable de diffusion


augmente l'efficacité des jointures entre les petits et les grands RDD. la variable de
diffusion permet de conserver une variable en lecture seule mise en cache sur chaque
machine au lieu d'en envoyer une copie avec les tâches. Nous créons la variable de
diffusion v en appelant SparlContext.broadcast(v) et nous pouvons accéder à sa valeur
en appelant la méthode value.
 Utilisation de l'accumulateur -En utilisant l'accumulateur, nous pouvons mettre à
jour la valeur d'une variable en parallèle lors de l'exécution. Les accumulateurs ne
peuvent être ajoutés que par l'opération associative et commutative. On peut aussi
implémenter des compteurs (comme dans MapReduce) ou des sommes à l'aide d'un
accumulateur. Les utilisateurs peuvent créer un accumulateur nommé ou non nommé.
Nous pouvons créer un accumulateur numérique en appelant
SparkContext.longAccumulator() ou SparkContext.doubleAccumulator() pour Long
ou Double respectivement.
 En évitant les opérations comme ByKey, la répartition ou toute autre opération qui
déclenche le shuffle. nous pouvons minimiser le transfert de données.

Q.34 Comment Apache Spark gère-t-il les métadonnées accumulées ?

En déclenchant le nettoyage automatique, Spark gère les métadonnées automatiques. Nous


pouvons déclencher le nettoyage en définissant le paramètre "spark.cleaner.ttl". la valeur par
défaut pour ceci est infinie. Il indique pendant combien de temps Spark se souviendra des
métadonnées. C'est un nettoyant périodique. Et assurez-vous également que les métadonnées
antérieures à la durée définie disparaîtront. Ainsi, avec son aide, nous pouvons exécuter Spark
pendant de nombreuses heures.

Q.35 Quels sont les défauts courants du développeur lors de l'utilisation d'Apache
Spark ?

L'erreur courante des développeurs est :

 Le client a consulté plusieurs fois le service Web en utilisant plusieurs clusters.


 Le client exécute tout sur le nœud local au lieu de le distribuer.

Q.36 Lequel des deux est préférable pour le projet : Hadoop MapReduce ou Apache
Spark ?

La réponse à cette question dépend du type de projet que l'on a. Comme nous le savons tous,
Spark utilise une grande quantité de RAM et a également besoin d'une machine dédiée pour
fournir un résultat efficace. La réponse dépend donc du projet et du budget de l'organisation.

Q.37 Répertoriez les cas d'utilisation courants d'Apache Spark.

Les cas d'utilisation les plus populaires d'Apache Spark sont : 1. Streaming2. Apprentissage
automatique3. Analyse interactive4. brouillard informatique5. Utiliser Spark dans le monde
réel

Q.38 Qu'est-ce que Spark.executor.memory dans une application Spark ?

La valeur par défaut est de 1 Go. Il fait référence à la quantité de mémoire qui sera utilisée par
processus d'exécution. Nous avons classé les questions et réponses d'entretien Spark ci-dessus
pour les débutants et les plus expérimentés.

b. Questions et réponses Spark SQL


Dans cette section, nous aborderons quelques questions et réponses d'entretien Spark SQL de
base.

Q.39 Qu'est-ce que les DataFrames ?


C'est une collection de données qui s'organisent en colonnes nommées. Elle est théoriquement
équivalente à une table dans une base de données relationnelle. Mais c'est plus optimisé. Tout
comme RDD, DataFrames évalue paresseusement. En utilisant l'évaluation paresseuse, nous
pouvons optimiser l'exécution. Il optimise en appliquant des techniques telles que la
génération de bytecode et les push-downs de prédicat.

Q.40 Quels sont les avantages de DataFrame ?

1. Il facilite encore plus le traitement de grands ensembles de données. Data Frame


permet également aux développeurs d'imposer une structure à une collection de
données distribuée. En conséquence, il permet une abstraction de plus haut niveau.
2. La trame de données est à la fois efficace en termes d'espace et de performances.
3. Il peut traiter à la fois les formats de données structurés et non structurés, par exemple
Avro, CSV, etc. Et aussi des systèmes de stockage comme HDFS, tables HIVE,
MySQL, etc.
4. Les API DataFrame sont disponibles dans différents langages de programmation. Par
exemple Java, Scala, Python et R.
5. Il fournit la compatibilité Hive. En conséquence, nous pouvons exécuter des requêtes
Hive non modifiées sur l'entrepôt Hive existant.
6. La transformation de l'arbre Catalyst utilise DataFrame en quatre phases : a) Analyser
le plan logique pour résoudre les références. b) Optimisation du plan logique c)
Planification physique d) Génération de code pour compiler une partie de la requête en
bytecode Java.
7. Il peut évoluer de kilo-octets de données sur un seul ordinateur portable à des
pétaoctets de données sur le grand cluster.

Q.41 Qu'est-ce que DataSet ?

Jeux de données Sparksont l'extension de l'API Dataframe. Il crée une interface de


programmation orientée objet et une sécurité de type. L'ensemble de données est la version
Spark 1.6. Il utilise l'optimiseur de catalyseur de Spark. Il révèle des expressions et des
champs de données à un optimiseur de requête. L'ensemble de données influence également
l'encodage rapide en mémoire. Il fournit également des dispositions pour la sécurité de type
au moment de la compilation. Nous pouvons vérifier les erreurs dans une application lors de
son exécution.

Q.42 Quels sont les avantages des DataSets ?

 Il offre une sécurité de type à l'exécution.


 Influence l'encodage rapide en mémoire.
 Il fournit une vue personnalisée des données structurées et semi-structurées.
 Il possède une sémantique riche et un ensemble simple d'opérations spécifiques au
domaine, ce qui facilite l'utilisation de données structurées.
 L'API Dataset réduit l'utilisation de la mémoire. Comme Spark connaît la structure des
données dans l'ensemble de données, il crée donc une disposition optimale en
mémoire lors de la mise en cache.

Q.43 Expliquer le cadre Catalyst.


Le Catalyst est un framework qui représente et manipule un graphique DataFrame. Le graphe
de flux de données est un arbre d'opérateurs relationnels et d'expressions. Les trois principales
caractéristiques du catalyseur sont :

 Il a une bibliothèque TreeNode pour transformer l'arbre. Ils sont exprimés sous forme
de classes de cas Scala.
 Une représentation de plan logique pour l'opérateur relationnel.
 Bibliothèque d'expressions.

Le TreeNode construit un optimiseur de requête. Il contient un certain nombre de l'optimiseur


de requête. Catalyst Optimizer prend en charge l'optimisation basée sur les règles et sur les
coûts. Dans l'optimisation basée sur des règles, l'optimiseur utilise un ensemble de règles pour
déterminer comment exécuter la requête. Alors que l'optimisation basée sur les coûts trouve le
moyen le plus approprié d'exécuter l'instruction SQL. Dans l'optimisation basée sur les coûts,
de nombreux plans sont générés à l'aide de règles. Et après cela, il calcule leur coût.
L'optimiseur Catalyst utilise les fonctionnalités standard de la programmation Scala, telles que
la correspondance de modèles.

Q.44 Énumérez les avantages des limes Parquet.

 Il est efficace pour les requêtes à grande échelle.


 Il prend en charge divers schémas de compression et d'encodage efficaces.
 Il consomme moins d'espace.

c. Questions et réponses Spark Streaming


Dans cette section, nous aborderons quelques questions et réponses d'entretien Spark de base
basées sur Spark Streaming.

Q.45 Qu'est-ce que Spark Streaming ?

À travers Diffusion d'étincelles,nous réalisons un traitement tolérant aux pannes du flux de


données en direct. Les données d'entrée peuvent provenir de n'importe quelle source. Par
exemple, comme Kafka, Flume, kinesis, twitter ou HDFS/S3. Il donne les données aux
systèmes de fichiers, aux bases de données et aux tableaux de bord en direct après traitement.
Le fonctionnement de Spark Streaming est le suivant :

 Spark Streaming prend en charge les données en direct.


 Le flux de données d'entrée est divisé en lots de données d'entrée.
 Le moteur Spark traite les lots de données d'entrée. Le résultat final est également en
lots.

Q.46 Qu'est-ce que DStream ?

DStreamest l'abstraction de haut niveau fournie par Spark Streaming. Il représente un flux
continu de données. Ainsi, DStream est en interne une séquence de RDD. Il existe deux
manières de créer DStream :
 en utilisant des données provenant de différentes sources telles que Kafka, Flume et
Kinesis.
 en appliquant des opérations de haut niveau sur d'autres DStreams.

Q.47 Expliquez les différentes transformations sur DStream.

DStream est une abstraction de base de Spark Streaming. C'est une séquence continue de
RDD qui représente un flux continu de données. Comme RDD, DStream prend également en
charge de nombreuses transformations disponibles sur Spark RDD normal. Par exemple,
map(func), flatMap(func), filter(func) etc.

Q.48 Apache Spark fournit-il des points de contrôle ?

Oui, Apache Spark fournit des points de contrôle. Apache prend en charge deux types de
points de contrôle :

 Point de contrôle fiable :Il fait référence à ce point de contrôle dans lequel le RDD
réel est enregistré dans le système de fichiers distribué fiable, par exemple HDFS.
Pour définir le répertoire du point de contrôle, appelez :
SparkContext.setCheckpointDir(répertoire : String). Lors de l'exécution sur le cluster,
le répertoire doit être un chemin HDFS car le pilote essaie de récupérer le RDD avec
point de contrôle à partir d'un fichier local. Alors que les fichiers de point de contrôle
sont en fait sur les machines de l'exécuteur.
 Point de contrôle local :Dans ce point de contrôle, dans Spark Streaming ou GraphX,
nous tronquons le graphe de lignage RDD dans Spark. Dans ce cas, le RDD est
conservé dans le stockage local dans l'exécuteur.

Q.49 Qu'est-ce que le journal d'écriture anticipée (journalisation) ?

Le journal d'écriture anticipée est une technique qui assure la durabilité d'un système de base
de données. Cela fonctionne de la manière dont toutes les opérations qui s'appliquent aux
données, nous les écrivons dans un journal d'écriture anticipée. Les bûches sont de nature
durable. Ainsi, lorsque la panne se produit, nous pouvons facilement récupérer les données de
ces journaux. Lorsque nous activons le journal d'écriture anticipée, Spark stocke les données
dans un système de fichiers tolérant aux pannes.

Q.50 Qu'est-ce qu'un récepteur fiable et non fiable dans Spark ?

 Récepteur fiable -Un récepteur fiable accuse réception de données à la source et les
stocke. La mise en œuvre de ce récepteur implique l'examen de la sémantique des
acquittements de la source.
 Récepteur peu fiable -Un récepteur non fiable n'envoie pas d'accusé de réception à
une source. C'est pour les sources qui ne portent pas de mention. C'est aussi pour les
sources fiables quand on ne veut pas entrer dans la complexité de l'acquittement.

Vous aimerez peut-être aussi