プロファイル・ジョブまたは 資産 (IBM Knowledge Catalog) をサブミットまたはプレビューできません

カタログまたはプロジェクト内の 資産 のプロファイル作成が失敗すると、以下のエラーが発生する場合があります。 FAILED TO SUBMIT JOB: Job failed to start.

さらに、データ保護ルールが適用されているときに 資産 をプレビューしようとすると、次のエラーが発生する場合があります。 An error occurred attempting to preview this asset.

これらのエラーは、プロファイリングおよびプレビューに使用される IBM Analytics Engine powered by Apache Spark のインスタンスに問題があることが原因である可能性があります。 Analytics Engine インスタンスを確認し、問題を修正するには、以下の手順を実行します:

  1. クラスター管理者として Red Hat OpenShift クラスターにログインします。

    oc login <OpenShift_URL:port>
    
  2. プロファイル作成ポッドにログインします。

    a. 以下のコマンドを実行して、プロファイル作成ポッドを識別します。

    oc get pod | grep wdp-profiling
    

    このコマンドは、ポッドのリストを返すことができます。 名前の接頭部が wdp-profiling と正確に一致するポッドを選択します。

    b. 以下のコマンドを使用して、このポッドにログインします。

    oc rsh <podName>
    

    例: oc rsh wdp-profiling-d989b575b-v85wx

  3. 以下の確認を行います。

    • ご使用の環境でボールトが有効になっている場合は、 /etc/.secrets

      INSTANCE_API_KEY 値と ANALYTICS_ENGINE_INSTANCE_ID 値を取得するには、以下のコマンドを実行します。

      cat /etc/.secrets/INSTANCE_API_KEY
      
      cat /etc/.secrets/ANALYTICS_ENGINE_INSTANCE_ID
      
    • ご使用の環境でボールトが有効になっていない場合は、以下の環境変数を確認し、値が設定されていることを確認してください。

      • INSTANCE_API_KEY
      • INSTANCE_USER
      • ANALYTICS_ENGINE_INSTANCE_ID

      以下のコマンドを使用します。

      env | grep -i instance
      

      出力は、以下の例のようになります。

      INSTANCE_API_KEY=UJQzjcf6HJcR6IAUilR3fYu3qbvPoCnVX6mc1eN6
      INSTANCE_USER=__internal_profiler__
      ANALYTICS_ENGINE_INSTANCE_ID=1654844464492037
      

    これらの環境変数または秘密ファイルのすべてが使用可能でなければなりません。 そうでない場合は、インストールに重大な問題があります。

  4. インスタンス・ユーザーの API トークンを生成します。

    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
    

    このコマンドは、トークンを含む JSON オブジェクトを返します。

  5. 返された JSON でキーワード token を探します。 そのプロパティーの値をコピーし、コマンド export TOKEN=<token> を使用して変数 TOKEN にエクスポートします。

  6. インスタンスの詳細を取得し、インスタンスが 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"
    

    応答は、以下の例のようになります。

    {"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"}
    

    キーワード services_status の値は RUNNING でなければなりません。

    ただし、 GET 呼び出しが service_not_found 例外を戻した場合、 Analytics Engine インスタンスは使用できなくなります。 この場合は、以下のステップを実行して問題を修正してください。 それ以外の場合は、残りのステップをスキップしてください。

  7. すべてのサービス・インスタンスをリストします。 ステップ 4 で取得したトークンがまだ有効である場合は、このトークンを使用できます。 トークンが 有効期限切れ の場合は、そのステップで説明されているように、新しいトークンを生成してエクスポートします。

    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"
    

    サービス・ボリューム・インスタンスと Analytics Engine インスタンスの 2 つのインスタンスの詳細をリストした JSON オブジェクトが最大で返されます。 使用可能なサービス・インスタンスがない場合、 JSON オブジェクトは空です。

    • サービス・ボリューム・インスタンスが見つからない場合は、以下の cURL コマンドを使用して作成します。 必要に応じて、サンプル・ペイロードの値を置き換えます。

      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":{}}'
      

      このコマンドは、サービス・ボリューム・インスタンスを作成し、応答でその ID を返します。 サービス・ボリューム・インスタンス ID をメモします。

    • Analytics Engine インスタンスが見つからない場合は、以下の cURL コマンドを使用して作成します。 必要に応じて、サンプル・ペイロードの値を置き換えます。

      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":{}}'
      

      このコマンドは、 Analytics Engine ・インスタンスを作成し、その ID を応答として返します。 この ID をメモしておいてください。

  8. wdp-profiling および dp-transform デプロイメント を更新して、前のステップで作成した新しい Analytics Engine インスタンスと連携するようにします。

    • ご使用の環境でボールトが有効になっている場合は、以下のステップを実行します。

      1. /etc/.secrets ディレクトリーにナビゲートします。
      2. ANALYTICS_ENGINE_INSTANCE_ID シークレット・ファイルを編集し、 iae_instance_id キーの値を更新します。
      3. 変更内容を保存します。

      変更を適用するには、 wdp-profiling ポッドと dp-transform ポッドを再始動します。

    • ご使用の環境でボールトが有効になっていない場合は、以下の手順を実行します。

      1. インスタンス ID をエンコードします。

        echo -n '<instance_id>' | base64
        
      2. wdp-profiling-iae-secrets シークレット を編集します。

        oc edit secret wdp-profiling-iae-secrets
        
      3. iae_instance_id エントリーの値を base64-encoded 値で更新します。

        apiVersion: v1
        data:
          iae_instance_id: <base64-encoced value>
          iae_usermgmt_apikey: <apikey>
        kind: Secret
        
      4. 以下のコマンドを実行して、 wdp-profiling ポッドを再始動します。必要なレプリカ数で:

        oc scale deployment wdp-profiling --replicas=0
        oc scale deployment wdp-profiling --replicas=<n>
        
      5. 以下のコマンドを実行して、 dp-transform ポッドを再始動します。必要なレプリカ数で:

        oc scale deployment dp-transform --replicas=0
        oc scale deployment dp-transform --replicas=<n>
        
      6. 変更内容を保存します。

      デプロイメント が更新されます。 ポッドが更新されると、新しい Analytics Engine インスタンスがプロファイル作成とプレビューに使用されます。