Nous utilisons Spark2 Thrift pour exécuter des requêtes Hive. Thelft fait partie du HDP 2.6 et notre version étincelle est 2.1.0.2.6.0.3-8.Thrift driver OutOfMemory lors de l'exécution simultanée de plusieurs requêtes Hive
Plus nous exécutons de requêtes simultanément, plus vite nous rencontrons OOM dans le pilote. Ces requêtes contiennent également JOINs et UNIONs. De la jstat, il semble qu'il n'y ait pas de fuite de mémoire, mais peu importe la quantité de mémoire donnée au pilote, il semble que ce ne soit jamais suffisant. Plus les requêtes sont exécutées simultanément, plus le pilote Thrift accélère le GC complet jusqu'à ce qu'il tombe en panne, puisque le GC complet ne peut pas nettoyer l'ancienne mémoire (puisqu'elle est utilisée).
Le MOO n'apparaît jamais dans les exécuteurs, seulement dans le pilote.
Est-ce que quelqu'un travaille avec Thrift over spark et rencontre ce problème? et si oui, comment le pilote Thrift peut-il être configuré pour ne pas planter sur OOM lors de l'exécution simultanée de plusieurs requêtes?
Ce sont les configurations que nous utilisons:
pilote d'allumage Thrift:
- spark.driver.memory = 15g
exécuteurs étincelle Thrift:
spark.executor.memory = 10g
noyaux num = 7
params de configuration de /usr/hdp/current/spark2-thriftserver/conf/spark-thrift-sparkconf.conf:
spark.broadcast.blockSize 32m
spark.driver.extraLibraryPath/nous r/HDP/courant/Hadoop client/lib/native:/usr/HDP/courant/Hadoop client/lib/natif/Linux-amd64-64
spark.driver.maxResultSize 0
spark.dynamicAllocation.enabled véritables
spark.dynamicAllocation.executorIdleTimeout 45s
spark.dynamicAllocation.initialExecutors 2
spark.dynamicAllocation.maxExecutors 15
spark.dynamicAllocation.minExecutors 0
spark.dynamicAllocation.schedulerBacklogTimeout 1s
spark.eventLog.dir hdfs: /// spark2-histoire/
spark.eventLog.enabled vrai
spark.executor.extraLibraryPath/usr/HDP/courant/Hadoop -client/lib/native:/usr/HDP/courant/Hadoop-client/lib/natif/Linux-amd64-64
spark.executor.memory 10g
spark.files.maxPartitionBytes 26843 5456
spark.files.openCostInBytes 33554432
de faux
spark.history.fs.logDirectory hdfs: /// spark2-histoire/
étincelle .history.provider org.apache.spark.deploy.history.FsHistoryProvider
spark.kryoserializer.buffer.max 2000m
spark.master fil client
spark.memory.offHeap.enabled vrai
spark.memory.offHeap.size 104857600
spark.scheduler.allocation.file/usr /hdp/current/spark2-thriftserver/conf/spark-thrift-fairscheduler.xml
spark.scheduler.mode FAIR
spark.shuffle.service.enabled vrai
spark.sql.autoBroadcastJoinThreshold 1073741824
spark.sql.shuffle.partitions 100
spark.storage.memoryMapThreshold 8 m
Je suppose que "Spark over Thrift" serait le terme le plus approprié. – JensG