Impossible de soumettre des travaux de profilage ou de prévisualiser des actifs ( IBM watsonx.data intelligence )

Si vous profilez une ressource dans un catalogue ou si un projet échoue, vous pouvez rencontrer l'erreur suivante : FAILED TO SUBMIT JOB: Job failed to start.

En outre, si vous essayez de prévisualiser une ressource lorsque des règles de protection des données sont appliquées, vous risquez de rencontrer l'erreur suivante : An error occurred attempting to preview this asset.

Ces erreurs peuvent être dues à un problème avec l'instance de IBM Analytics Engine powered by Apache Spark utilisée pour le profilage et la prévisualisation. Pour vérifier l'instance Analytics Engine et éventuellement résoudre le problème, suivez les étapes suivantes :

  1. Connectez-vous à votre cluster Red Hat OpenShift en tant qu'administrateur du cluster :

    oc login <OpenShift_URL:port>
    
  2. Connectez-vous au module de profilage :

    a. Identifiez le pod de profilage en exécutant la commande suivante :

    oc get pod | grep wdp-profiling
    

    Cette commande peut renvoyer une liste de pods. Sélectionnez le pod où le préfixe du nom correspond exactement à wdp-profiling.

    b. Connectez-vous à ce module à l'aide de la commande suivante :

    oc rsh <podName>
    

    Exemple : oc rsh wdp-profiling-d989b575b-v85wx

  3. Complétez ces vérifications :

    • Si les espaces de stockage sont activés dans votre environnement, allez dans le répertoire /etc/.secrets et assurez-vous que les fichiers secrets INSTANCE_API_KEY et ANALYTICS_ENGINE_INSTANCE_ID sont disponibles.

      Pour obtenir les valeurs INSTANCE_API_KEY et ANALYTICS_ENGINE_INSTANCE_ID, exécutez les commandes suivantes :

      cat /etc/.secrets/INSTANCE_API_KEY
      
      cat /etc/.secrets/ANALYTICS_ENGINE_INSTANCE_ID
      
    • Si les chambres fortes ne sont pas activées dans votre environnement, vérifiez les variables d'environnement suivantes et assurez-vous qu'elles ont des valeurs définies :

      • CLÉ_API_INSTANCE
      • INSTANCE_UTILISATEUR
      • IDENTIFICATEUR_INSTANCE_MOTEUR_ANALYTIQUE

      Utilisez la commande suivante :

      env | grep -i instance
      

      Le résultat devrait ressembler à cet exemple :

      INSTANCE_API_KEY=UJQzjcf6HJcR6IAUilR3fYu3qbvPoCnVX6mc1eN6
      INSTANCE_USER=__internal_profiler__
      ANALYTICS_ENGINE_INSTANCE_ID=1654844464492037
      

    Toutes ces variables d'environnement ou fichiers secrets doivent être disponibles. Sinon, il y a un sérieux problème avec l'installation.

  4. Générer un jeton API pour l'utilisateur de l'instance :

    curl -k -sS -X POST -H 'Content-Type: application/json' -d '{"username":"<INSTANCE_USER>","api_key":"<INSTANCE_API_KEY>"}' https://<CPDHost>/icp4d-api/v1/authorize
    

    Cette commande renvoie un objet JSON contenant le jeton.

  5. Recherchez le mot-clé token dans le JSON renvoyé. Copiez la valeur de cette propriété et exportez-la dans une variable TOKEN en utilisant la commande export TOKEN=<token>.

  6. Obtenir les détails de l'instance et vérifier si l'instance est dans l'état RUNNING :

    curl -k -sS -X GET https://<CPDHost>/zen-data-ui/v3/service_instances/<ANALYTICS_ENGINE_INSTANCE_ID>?include_service_status=true --header 'Accept: application/json' --header "Authorization: Bearer $TOKEN"
    

    La réponse devrait ressembler à cet exemple :

    {"service_instance":{"addon_type":"spark","addon_version":"4.5.0","connection_info":{"History server endpoint":"$HOST/v2/spark/v3/instances/f32a7728-eb57-4300-a5b4-bb0f772b9964/spark_history_server","Spark jobs V2 endpoint":"$HOST/ae/spark/v2/f32a7728-eb57-4300-a5b4-bb0f772b9964/v2/jobs","Spark jobs V3 endpoint":"$HOST/v2/spark/v3/instances/f32a7728-eb57-4300-a5b4-bb0f772b9964/spark/applications","Spark kernel endpoint":"$HOST/v2/spark/ae/f32a7728-eb57-4300-a5b4-bb0f772b9964/jkg/api/kernels","View history server":"$HOST/v2/spark/v3/instances/f32a7728-eb57-4300-a5b4-bb0f772b9964/spark_history_ui/"},"created_at":"2022-06-10T07:01:04.502057Z","display_name":"ProfHbIntrnl","id":"1654844464492037","instance_identifiers":null,"metadata":{"volumeName":"wkc::ProfStgIntrnl"},"misc_data":{},"namespace":"wkc","owner_uid":"1000331001","owner_username":"__internal_profiler__","parameters":{"file_server":{"start":true},"storageClass":"managed-nfs-storage","storageSize":"5Gi","volumeName":"wkc::ProfStgIntrnl"},"provision_status":"PROVISIONED","resources":{},"roles":["Admin"],"updated_at":"2022-07-22T06:10:16.092222Z","zen_service_instance_info":{"docker_registry_prefix":"icr.io/cpopen/cpfs"}},"services_status":"RUNNING"}
    

    La valeur du mot-clé services_status doit être RUNNING.

    Toutefois, si l'appel GET renvoie une exception service_not_found , l'instance Analytics Engine n'est plus disponible. Dans ce cas, suivez les étapes suivantes pour résoudre le problème. Si ce n'est pas le cas, ignorez les autres étapes.

  7. Liste de toutes les instances de service. Si le jeton obtenu à l'étape 4 est encore valide, vous pouvez l'utiliser. Si le jeton a expiré, générez-en un nouveau et exportez-le comme décrit dans cette étape.

    curl -k -sS -X GET https://<CPDHost>/zen-data-ui/v3/service_instances?include_service_status=true --header 'Accept: application/json' --header "Authorization: Bearer $TOKEN"
    

    Un objet JSON est renvoyé avec la liste des détails pour 2 instances au maximum : pour l'instance de volume de service et pour l'instance Analytics Engine. Si aucune instance de service n'est disponible, l'objet JSON est vide.

    • Si aucune instance de volume de service n'est trouvée, créez-la à l'aide de la commande suivante : cURL. Remplacer les valeurs dans l'échantillon de charge utile comme il convient :

      curl -k -sS -X POST https://<CPDHost>/zen-data-ui/v3/service_instances --header 'Accept: application/json' --header "Authorization: Bearer $TOKEN" --header 'Content-Type: application/json' -d ' {"addon_type":"volumes","display_name":"<volumeNameOfYourChoice>","namespace":"${PROJECT_CPD_INST_OPERANDS}","addon_version":"-","create_arguments":{"resources":{},"parameters":{"storageClass":"managed-nfs-storage","storageSize":"50Gi","volumeName":"${PROJECT_CPD_INST_OPERANDS}::<volumeNameOfYourChoice>","file_server":{"start":true}},"description":"","metadata":{"storageClass":"managed-nfs-storage","storageSize":"50Gi","volumeName":"${PROJECT_CPD_INST_OPERANDS}::<volumeNameOfYourChoice>","file_server":{"start":true}},"owner_username":""},"pre_existing_owner":false,"transientFields":{}}'
      

      Cette commande crée une instance de volume de service et renvoie son identifiant dans la réponse. Notez l'identifiant de l'instance du volume de service.

    • Si aucune instance Analytics Engine n'est trouvée, créez-la en utilisant la commande cURL suivante. Remplacer les valeurs dans l'échantillon de charge utile comme il convient :

      curl -k -sS -X POST https://<CPDHost>/zen-data-ui/v3/service_instances --header 'Accept: application/json' --header "Authorization: Bearer $TOKEN" --header 'Content-Type: application/json' -d '{"addon_type":"spark","display_name":"<IAE_INSTANCE_NameOfYourChoice>","namespace":"${PROJECT_CPD_INST_OPERANDS}","addon_version":"<spark_version>","create_arguments":{"resources":{},"parameters":{"storageClass":"managed-nfs-storage","storageSize":"50Gi","volumeName":"${PROJECT_CPD_INST_OPERANDS}::<volumeNameOfYourChoice>","file_server":{"start":true}},"description":"","metadata":{"storageClass":"managed-nfs-storage","storageSize":"50Gi","volumeName":"${PROJECT_CPD_INST_OPERANDS}::<volumeNameOfYourChoice>","file_server":{"start":true}},"owner_username":""},"pre_existing_owner":false,"transientFields":{}}'
      

      Cette commande crée une instance Analytics Engine et renvoie son identifiant en réponse. Notez ce numéro d'identification.

  8. Mettez à jour les déploiements wdp-profiling et dp-transform pour qu'ils fonctionnent avec la nouvelle instance Analytics Engine que vous avez créée à l'étape précédente.

    • Si les chambres fortes sont activées dans votre environnement, procédez comme suit :

      1. Naviguez jusqu'au répertoire /etc/.secrets .
      2. Modifiez le fichier secrets ANALYTICS_ENGINE_INSTANCE_ID et mettez à jour la valeur de la clé iae_instance_id .
      3. Enregistrez vos modifications.

      Pour appliquer les modifications, redémarrez les modules wdp-profiling et dp-transform .

    • Si les chambres fortes ne sont pas activées dans votre environnement, procédez comme suit :

      1. Encoder l'identifiant de l'instance :

        echo -n '<instance_id>' | base64
        
      2. Modifiez le secret wdp-profiling-iae-secrets :

        oc edit secret wdp-profiling-iae-secrets
        
      3. Mettre à jour la valeur de l'entrée iae_instance_id avec la valeur base64-encoded :

        apiVersion: v1
        data:
          iae_instance_id: <base64-encoced value>
          iae_usermgmt_apikey: <apikey>
        kind: Secret
        
      4. Redémarrez le pod wdp-profiling en exécutant ces commandes en remplaçantavec le nombre requis de répliques :

        oc scale deployment wdp-profiling --replicas=0
        oc scale deployment wdp-profiling --replicas=<n>
        
      5. Redémarrez le pod dp-transform en exécutant ces commandes en remplaçantavec le nombre requis de répliques :

        oc scale deployment dp-transform --replicas=0
        oc scale deployment dp-transform --replicas=<n>
        
      6. Enregistrez vos modifications.

      Le déploiement est mis à jour. Après le rafraîchissement des pods, la nouvelle instance Analytics Engine est utilisée pour le profilage et la prévisualisation.