Plusieurs extraits Job dans Datameer (outil Rapid ETL/BI, situé au-dessus de Hadoop) lisent les données des objets Salesforce. L'extrait le plus volumineux est de 1,4 Go (objet Task) et le plus petit extrait est de 96 Mo (objet compte). Datameer utilise le connecteur basé sur l'API REST, une requête SOQL est fournie au connecteur et les enregistrements sont récupérés en conséquence (https://documentation.datameer.com/documentation/display/DAS60/Salesforce).1 seule tâche de mappage lors de l'extraction des données de Salesforce
Datameer compile le travail et transmet l'exécution au framework d'exécution (Tez). De plus, il n'y a pas de configurations spécifiques au travail.
Tous les travaux d'extraction saleforce s'exécutent avec 1 tâches de carte.
Mais,
Il y a d'autres travaux d'extraction dans Datameer qui lisent les données de fichiers plats (50 - 200 Mo) sur un serveur SFTP et utiliser entre 3-5 tâches de carte.
A propos SOQL: https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_changing_batch_size.htm SOQL tire un maximum de 2000 enregistrements par lot
Ma question:
- Considérant que les données de fichier plat est en cours d'exécution avec plusieurs carte tâches, ce que le problème correspond à SOQL taille de lot qui ne tire que 2000 enregistrements par requête, ce qui entraîne l'allocation de seulement 1 mappeur.
- Comment le programme MR détermine-t-il la taille totale de l'extrait d'entrée lorsque traitant de la source comme la force de vente ou même d'une base de données
basée sur le cloud.
Information sur l'Environnement: Hortonworks 2.7.1
Cores Per Data node=8
RAM per Data node=64GB
No of datanodes = 6
Block Size : 128 MB
Input Split info:
mapreduce.input.fileinputformat.split.maxsize=5368709120 (5 GB)
mapreduce.input.fileinputformat.split.minsize=16777216 (16 MB)
Execution Framework: Tez
Memory Sizes: <property> <name>mapreduce.map.memory.mb</name> <value>1536</value> </property><property> <name>mapreduce.reduce.memory.mb</name> <value>2048</value> </property><property> <name>mapreduce.map.java.opts</name> <value>-Xmx1228m</value> </property><property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx1638m</value> </property>
<property> <name>yarn.app.mapreduce.am.resource.mb</name> <value>1024</value> </property><property> <name>yarn.app.mapreduce.am.command-opts</name> <value>-Xmx819m -Dhdp.version=${hdp.version}</value> </property>
Compression is enabled:
<property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value> </property> mapreduce.output.fileoutputformat.compress=true
mapreduce.output.fileoutputformat.compress.type=BLOCK
mapreduce.map.output.compress=true
mapred.map.output.compression.type=BLOCK