Je lance un cluster Dataproc et je sers Hive dessus. À distance de n'importe quelle machine, j'utilise Pyhive ou PyODBC pour me connecter à Hive et faire des choses. Ce n'est pas qu'une seule requête. Cela peut être une longue session avec des requêtes intermittentes. (La requête elle-même a des problèmes; demandera séparément.)

Même pendant une seule requête active, l'opération ne s'affiche pas en tant que "Job" (je suppose que c'est Yarn) sur le tableau de bord. En revanche, lorsque je «soumets» des tâches via Pyspark, elles apparaissent sous la forme «Jobs».

Outre le manque de visibilité des tâches, je soupçonne également que, sans Job, le cluster peut ne pas détecter de manière fiable qu'un client Python y est "connecté", d'où la suppression automatique du cluster peut démarrer prématurément.

Existe-t-il un moyen «d'enregistrer» un Job pour accompagner ma session Python et annuler / supprimer le job aux moments de mon choix? Pour mon cas, c'est un travail «factice», «nominal» qui ne fait rien.

Ou peut-être existe-t-il un moyen plus approprié de laisser Yarn détecter la connexion de mon client Python et créer un travail pour cela?

Merci.

1
zpz 13 mars 2021 à 09:54

1 réponse

Meilleure réponse

Ce n'est pas pris en charge pour le moment, vous devez soumettre des tâches via Dataproc Jobs API pour les rendre visibles sur la page de l'interface utilisateur des jobs et pour être pris en compte par la fonctionnalité TTL du cluster

Si vous ne pouvez pas utiliser l'API Dataproc Jobs pour exécuter vos travaux réels, vous pouvez soumettre un travail Pig factice qui se met en veille pendant la durée souhaitée (5 heures dans l'exemple ci-dessous) pour empêcher la suppression du cluster par la fonction de durée d'inactivité maximale:

gcloud dataproc jobs submit pig --cluster="${CLUSTER_NAME}" \
    --execute="sh sleep $((5 * 60 * 60))"
0
Igor Dvorzhak 14 mars 2021 à 04:42