J'espère réellement utiliser Presto dans un pipeline ETL sur AWS EMR, mais je n'arrive pas à le configurer pour utiliser pleinement les ressources du cluster. Ce cluster existerait uniquement pour cette requête, et rien de plus, puis mourrait. Ainsi, je voudrais réclamer la mémoire disponible maximum pour chaque noeud et la requête en augmentant query.max-memory-per-node
et query.max-memory
. Je peux le faire lorsque je configure le cluster en ajoutant ces paramètres dans la zone «Modifier les paramètres du logiciel» de la vue de création de cluster dans la console AWS. Mais le serveur Presto ne démarre pas, signalant dans le fichier server.log une exception IllegalArgumentException, indiquant que max-memory-per-node dépasse l'espace de tas utilisable (qui, par défaut, est trop petit pour mon type d'instance et mon cas d'utilisation).Problème lors de la configuration de l'allocation de mémoire de Presto sur AWS EMR
J'ai essayé d'utiliser le paramètre de session set session resource_overcommit=true
, mais cela semble seulement remplacer la mémoire query.max, pas query.max-memory-per-node, parce que dans l'interface utilisateur Presto, je vois que très peu de La mémoire disponible sur chaque nœud est utilisée pour la requête.
Grâce à Google, j'ai été amené à croire que je devais également augmenter la taille du tas JVM en changeant les propriétés -Xmx et -Xms dans /etc/presto/conf/jvm.config, mais cela est dit ici (http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto.html) qu'il n'est pas possible de modifier les paramètres JVM dans la phase de création de cluster. Pour modifier ces propriétés après que le cluster EMR est actif et que le serveur Presto a été démarré, dois-je vraiment ssh manuellement dans chaque nœud et modifier jvm.config et config.properties, et redémarrer le serveur Presto? Bien que je réalise qu'il serait possible d'installer manuellement Presto avec une configuration personnalisée sur un cluster EMR via un script bootstrap ou quelque chose, ce serait vraiment un gros problème.
Y a-t-il quelque chose qui me manque ici? N'y a-t-il pas un moyen plus simple de faire en sorte que Presto alloue la totalité d'un cluster à une requête?