Sur un cluster MapR 4.0.1, travaux de mapreduce révolution R peuvent échouer avec l’erreur :
2015-02-13 08:00:37, 657 FATAL [Gestionnaire d’IPC Server 2 sur 52243] org.apache.hadoop.mapred.TaskAttemptListenerImpl : tâche : attempt_1423734868663_0289_m_000000_0 - sortie : java.io.IOException : R VM est arrêté avec le code de sortie : 1, sortie :
script de démarrage VRAI [1] $fileName [1] NA $start [1] 0 $length [1] 0 /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/library/RevoScaleR/rxLibs/x64/libExaCore.so.2(_Z21CriticalSignalHandleri+0x1e)[0x7fe02d3d423e] /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64/jre/lib/amd64/server/libjvm.so(+0x7e2628)[0x7fe0282f8628] /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64/jre/lib/amd64/server/libjvm.so(JVM_handle_linux_signal+0x95)[0x7fe0282fea55] /lib64/libpthread.so.0[0x30cec0f710] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/library/RevoScaleR/rxLibs/x64/libExaCore.so.2(_ZNK10CxAnalysis19HaveWriteDataSourceEv+0x0)[0x7fe02acbc280] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/library/RevoScaleR/rxLibs/x64/libExaCore.so.2(_ZN10CxAnalysis18GetWriteDataSourceEv+0x9)[0x7fe02acbcb49] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/library/RevoScaleR/rxLibs/x64/libRxLink.so.2(_Z19RxComputeHadoopTaskR11RListObjectR11RxAllocator+0x3b3)[0x7fe02e2a5d23] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/library/RevoScaleR/rxLibs/x64/libRxLink.so.2(_Z10RxUtilBaseP7SEXPREC+0x6db)[0x7fe02e2b2fab] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/library/RevoScaleR/rxLibs/x64/libRxLink.so.2(RxUtil+0x34)[0x7fe02e2b3f14] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/lib/libR.so(+0x9f36b)[0x7fe04083536b] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/lib/libR.so(Rf_eval+0x871)[0x7fe04086be91] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/lib/libR.so(Rf_ReplIteration+0x212)[0x7fe0408946a2] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/lib/libR.so(+0xfea59)[0x7fe040894a59] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/lib/libR.so(run_Rmainloop+0x44)[0x7fe040894f64] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/bin/exec/R(main+0x1b)[0x40084b] /lib64/libc.so.6(__libc_start_main+0xfd)[0x30ce41ed5d] /usr/lib64/Revo-7.3/R-3.1.1/lib64/R/bin/exec/R[0x400739] Erreur de segmentation. à com.revolutionanalytics.scaleR.hadoop.Rscript.waitFor(Rscript.java:103) à com.revolutionanalytics.scaleR.hadoop.Rscript.run(Rscript.java:59) à com.revolutionanalytics.scaleR.hadoop.RDelegatingMapper.run(RDelegatingMapper.java:73) à org.apache.hadoop.mapred.MapTask.runNewMapper (MapTask.java:773) à org.apache.hadoop.mapred.MapTask.run (MapTask.java:345) à org.apache.hadoop.mapred.YarnChild$2.run (YarnChild.java:167) à java.security.AccessController.doPrivileged (méthode Native) à javax.security.auth.Subject.doAs(Subject.java:415) à org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1469) à org.apache.hadoop.mapred.YarnChild.main (YarnChild.java:162)Sur les plates-formes MapR 4.0.1, c’est en raison de la configuration de l’environnement entreprise R de révolution à l’aide de la bibliothèque libhdfs.so incorrect.
Pour contourner ce problème, vérifiez que les étapes de configuration après l’installation suivantes ont été prises pour révolution R 7.3 sur des clusters de MapR 4.0.1 : Sur le nœud « client », créez le répertoire partagé du système de fichiers natif pour chaque utilisateur : 1. sudo mkdir -p /var/RevoShare/mapr 3. chmod 777 /var/RevoShare/mapr 4. Ajoutez. /usr/lib64/Revo-7.3/scripts/RevoHadoopEnvVars.site à /home/mapr/.bash_profile Sur chaque poste de travail, apportez les modifications suivantes :# cp scaleR-hadoop-0.1-SNAPSHOT.jar /opt/mapr/hadoop/hadoop-2.4.1/share/hadoop/common/lib/ # ln -s /opt/mapr/hadoop/hadoop-0.20.2/c++/Linux-amd64-64/lib/libhdfs.so /usr/lib64
# mv /opt/mapr/hadoop/hadoop-2.4.1/lib/native/libhdfs.so /opt/mapr/hadoop/hadoop-2.4.1/lib/native/libhdfs.so.save
L’installation de révolution R crée automatiquement un lien vers scaleR-hadoop-0,1-SNAPSHOT.jar dans $HADOOP_HOME/lib. Toutefois, il s’agit du répertoire incorrect (un bogue a été signalé) et le fichier doit être associé ou copié dans /opt/mapr/hadoop/hadoop-2.4.1/share/hadoop/common/lib/. /Opt/mapr/hadoop/hadoop-0.20.2/c++/Linux-amd64-64/lib/libhdfs.so de /usr/lib64 de liaison permet de garantir que le libhdfs.so approprié a été trouvé par r de révolution. La troisième étape est nécessaire pour déplacer le problème libhdfs.so à l’écart.