IBM Cloud Docs
CLI を使用したサーバーレス・インスタンスの作成およびアプリケーションのサブミットについて説明します。

CLI を使用したサーバーレス・インスタンスの作成およびアプリケーションのサブミットについて説明します。

IBM Analytics Engine CLI を使用して、サーバーレス・インスタンスを作成および管理し、Spark アプリケーションをサブミットおよびモニターするために必要なサービスを作成する方法について説明します。

サーバーレス・インスタンスを作成するには、IBM Analytics Engine 標準サーバーレス・プランを選択します。 サーバーレス・インスタンスがプロビジョンされると、Apache Spark クラスターが作成されます。このクラスターでは、任意のライブラリー・パッケージを使用してカスタマイズでき、Spark アプリケーションを実行できます。

目標

CLI を使用するために必要な以下のサービスおよびコンポーネントをインストールしてセットアップする方法について説明します。

  • IBM Analytics Engine インスタンスがカスタム・アプリケーション・ライブラリーおよび Spark 履歴イベントを保管する IBM Cloud Object Storage インスタンス。
  • アプリケーション・ファイルおよびデータ・ファイル用の Object Storage バケット。
  • IBM Analytics Engine サーバーレス・インスタンス。 このインスタンスには、Spark ワークロードがデプロイされるたびに、オンデマンドでコンピュート・リソースとメモリー・リソースが割り振られます。 アプリケーションが実行状態でない場合、インスタンスにコンピューティング・リソースは割り振られません。 料金は、インスタンスによって消費されるリソースの実際の使用量に基づいており、1 秒単位で請求されます。
  • ロギング・サービス。IBM Analytics Engine インスタンスおよびサブミットされたアプリケーションで発生する可能性がある問題をトラブルシューティングしたり、アプリケーションによって生成された出力を表示したりするのに役立ちます。 ロギングを有効にしてアプリケーションを実行すると、ログは IBM Log Analysis サービスに転送されて、索引付けされます。これにより、生成されたすべてのメッセージの全文検索が可能になり、特定のフィールドに基づいて簡単に照会できるようになります。

開始前に

Analytics Engine V3 CLI の使用を開始するには、以下が必要です。

  • IBM Cloud® アカウント。
  • IBM Cloud CLI のインストール。 CLI をダウンロードしてインストールする手順については、IBM Cloud CLI の概要を参照してください。

これで、Analytics Engine V3 CLI の使用を開始できます。 ステップ 3 で Spark アプリケーションをアップロードしてサブミットする前に、ステップ 1 と 2 の指示に従って必要なサービスをインストールする必要があります。 ステップ 4 は、ロギング・インスタンスを作成してロギングを有効にする方法を示しています。 ステップ 5 は、Analytics Engine インスタンスを削除する方法を示していますが、このステップはオプションです。

Cloud Object Storage インスタンスの作成と資格情報の取得

Analytics Engine サーバーレス CLI を使用して、IBM Cloud Object Storage インスタンスを作成し、Cloud Object Storage 資格情報 (サービス・キー) を取得します。

作成する Cloud Object Storage インスタンスは、IBM Analytics Engine インスタンスによって、Spark の履歴イベント用のインスタンス・ホーム・ストレージ、およびアプリケーションで使用するカスタム・ライブラリーまたはパッケージとして、使用されます。 インスタンス・ホームを参照してください。

Cloud Object Storage に保管され、アプリケーションから参照されるライブラリー・セットをカスタム・パッケージを使用して作成する方法について詳しくは、ライブラリー・セットの使用を参照してください。

  1. IBM Cloud® アカウントを使用して IBM Cloud® にログインします。

    アクション :Enter:

        ibmcloud api <URL>
        ibmcloud login
    

    例 :Enter:

        ibmcloud api https://cloud.ibm.com
        ibmcloud login
    
  2. リソース・グループを選択します。 アカウントのリソース・グループのリストを取得し、IBM Analytics Engine サーバーレス・インスタンスを作成するリソース・グループを選択します。

    アクション :Enter:

        ibmcloud target -g RESOURCE_GROUP_NAME
    

    パラメーター値:

    • RESOURCE_GROUP_NAME: サーバーレス・インスタンスが存在するリソース・グループの名前

    例 :Enter:

        ibmcloud resource groups
        ibmcloud target -g default
    
  3. IBM Cloud Object Storage サービスをインストールしてから、Analytics Engine V3 CLI をインストールします。

    アクション :Enter:

        ibmcloud plugin install cloud-object-storage
    

    アクション :Enter:

        ibmcloud plugin install analytics-engine-v3
    
  4. Cloud Object Storage インスタンスを作成します。

    アクション :Enter:

        ibmcloud resource service-instance-create INSTANCE_NAME cloud-object-storage PLAN global
    

    パラメーター値:

    • INSTANCE_NAME: 選択した任意の名前
    • PLAN: インスタンスの作成時に使用する Cloud Object Storage プラン

    例 :Enter:

        ibmcloud resource service-instance-create test-cos-object cloud-object-storage standard global
    

    応答 この例では、以下が返されます。

        Service instance test-cos-object was created.
        Name:             test-cos-object
        ID:               crn:v1:bluemix:public:cloud-object-storage:global:a/867d444f64594fd68c7ebf4baf8f6c90:ebad3176-8a1a-41f2-a803-217621bf6309::
        GUID:             ebad3176-8a1a-41f2-a803-217621bf6309
        Location:         global
        State:            active
        Type:             service_instance
        Sub Type:
        Allow Cleanup:    false
        Locked:           false
        Created at:       2021-12-27T07:57:56Z
        Updated at:       2021-12-27T07:57:58Z
        Last Operation:
                         Status    create succeeded
                         Message   Completed create instance operation
    
  5. 前のステップの Cloud Object Storage 作成呼び出しの応答から ID の値をコピーして、CRN を構成します。

    アクション :Enter:

        ibmcloud cos config crn
        Resource Instance ID CRN: ID
    

    パラメーター値:

    • ID: Cloud Object Storage 作成呼び出しの応答から取得した ID の値

    例 :Enter:

        ibmcloud cos config crn
        Resource Instance ID CRN: crn:v1:bluemix:public:cloud-object-storage:global:a/867d444f64594fd68c7ebf4baf8f6c90:ebad3176-8a1a-41f2-a803-217621bf6309::
    
  6. Cloud Object Storage バケットを作成します。

    アクション :Enter:

        ibmcloud cos bucket-create --bucket BUCKET_NAME [--class CLASS_NAME] [--ibm-service-instance-id ID] [--region REGION] [--output FORMAT]
    

    パラメーター値:

    • BUCKET_NAME: 選択した任意の名前
    • ID: Cloud Object Storage 作成呼び出しの応答から取得した GUID の値
    • REGION: Cloud Object Storage インスタンスが作成された IBM Cloud リージョン
    • FORMAT: 出力フォーマットは JSON またはテキストにすることができます。

    例 :Enter:

        ibmcloud cos bucket-create --bucket test-cos-storage-bucket --region us-south --ibm-service-instance-id ebad3176-8a1a-41f2-a803-217621bf6309 --output json
    
  7. Cloud Object Storage サービス・キーを作成します。

    アクション :Enter:

        ibmcloud resource service-key-create NAME [ROLE_NAME] ( --instance-id SERVICE_INSTANCE_ID | --instance-name SERVICE_INSTANCE_NAME | --alias-id SERVICE_ALIAS_ID | --alias-name SERVICE_ALIAS_NAME) [--service-id SERVICE_ID] [-p, --parameters @JSON_FILE|JSON_TEXT] [-g RESOURCE_GROUP] [--service-endpoint SERVICE_ENDPOINT_TYPE] [--output FORMAT] [-f, --force] [-q, --quiet]
    
     Parameter values:
     - NAME: Any name of your choice
     - [ROLE_NAME]: This parameter is optional. The access role, for example, `Writer` or `Reader`
     - SERVICE_INSTANCE_ID: The value of GUID from the response the of Cloud Object Storage creation call
     - SERVICE_INSTANCE_NAME: The value of NAME from the response the of Cloud Object Storage creation call
     - JSON_TEXT: The authentication to access Cloud Object Storage. Currently only HMAC keys are supported.
    

    例 :Enter:

        ibmcloud resource service-key-create test-service-key-cos-bucket Writer --instance-name test-cos-object --parameters '{"HMAC":true}'
    
    応答
    この例では、以下が返されます。
    Creating service key of service instance test-cos-object under account Test
    OK
    
    Service key crn:v1:bluemix:public:cloud-object-storage:global:a/183**93b485e:9ee135f9-4667-4797-8478-b20**ce-key:21a310e1-bbd6-**bf1f4 was created.
    Name:          test-service-key-cos-bucket
    ID:            crn:v1:bluemix:public:cloud-object-**
    Created At:    Mon Dec 27 12:52:49 UTC 2021
    State:         active
    Credentials:
        apikey: 3a4Ncm**o-WJGFaEzwfY
        cos_hmac_keys:
           access_key_id: 21a31**f1f4
           secret_access_key: c5a23**b6792d3e0a6c
           endpoints: https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints
           iam_apikey_description: Auto-generated for key crn:v1:bluemix:public:cloud-object-storage:global:a/1836f778**c93b485e:9ee**8478-b2019a4b4e20:resource-key:21a3**05a9bf1f4
           iam_apikey_name: test-service-key-cos-bucket
           iam_role_crn: crn:v1:bluemix:public:iam::::serviceRole:Writer
           iam_serviceid_crn: crn:v1:bluemix:public:iam-identity::a/1836f77885e521c5ab2523aac93b485e::serviceid:ServiceId-702ca222-3615-464c-92d3-1849c03170cc
           resource_instance_id: crn:v1:bluemix:public:cloud-object-storage:global:a/1836f7**3b485e:9ee135f9-4667-479**4e20::
    

Analytics Engine サーバーレス・インスタンスの作成

CLI を使用して、Analytics Engine サーバーレス・インスタンスを作成します。

  1. Analytics Engine サービス・インスタンスを作成します。

    アクション :Enter:

        ibmcloud resource service-instance-create INSTANCE_NAME ibmanalyticsengine standard-serverless-spark us-south -p @provision.json
    

    パラメーター値:

    • INSTANCE_NAME: 選択した任意の名前
    • @provision.json: 以下の例に示されているように JSON ファイルを構造化します。 Cloud Object Storage サービス・キー作成呼び出しの応答から取得したアクセス・キーと秘密鍵を使用します。
    provision.json ファイルの例
    サンプル JSON ファイル:
        {
           "default_runtime": {
              "spark_version": "3.4" },
              "instance_home": {
                 "region": "us-south",
                 "endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud",
                 "hmac_access_key": "<your-hmac-access-key>",
                 "hmac_secret_key": "<your-hmac-secret-key>"}
        }
    

    例 :Enter:

        ibmcloud resource service-instance-create test-ae-service ibmanalyticsengine standard-serverless-spark us-south -p @ae_provision.json
    

    応答 この例では、以下が返されます。 ` text リソース・グループ内のサービス・インスタンス test-ae-service を作成しています アカウントの 次になります。 ...

     OK
    
     Service instance test-ae-service was created.
     Name:                test-ae-service
     ID:                  crn:v1:bluemix:public:ibmanalyticsengine:us-south:a/183**aac93b485e:181ea**be1-70978**1b::
     GUID:                181ea**9ee01b
     Location:            us-south
     State:               provisioning
     Type:                service_instance
     Sub Type:
     Service Endpoints:   public
     Allow Cleanup:       false
     Locked:              false
     Created at:          2022-01-03T08:40:25Z
     Updated at:          2022-01-03T08:40:26Z
     Last Operation:
         Status    create in progress
         Message   Started create instance operation
     ```
    
  2. Analytics Engine サービスの状況を確認します。

    アクション :Enter:

        ibmcloud ae-v3 instance show –id INSTANCE_ID
    

    パラメーター値:

    • INSTANCE_ID: Analytics Engine インスタンス作成呼び出しの応答から取得した GUID の値

    例 :Enter:

        ibmcloud ae-v3 instance show –id 181ea**9ee01b
    

    応答 この例では、以下が返されます。

        {
           "default_runtime": {
              "spark_version": "3.4" },
           "id": "181ea**9ee01b ",
           "instance_home": {
              "bucket": "do-not-delete-ae-bucket-e96**5d-b7**a82",
              "endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud",
              "hmac_access_key": "**",
              "hmac_secret_key": "**",
              "provider": "ibm-cos",
              "region": "us-south",
              "type": "objectstore" },
           "state": "active",
           "state_change_time": "**"
        }
    

    Analytics Engine サービスの状態がアクティブな場合にのみ、Spark アプリケーションをサブミットしてください。

Spark アプリケーションのアップロードおよびサブミット

アプリケーション・ファイルを Cloud Object Storage にアップロードし、Spark アプリケーションをサブミットします。

このチュートリアルでは、Analytics Engine インスタンスがインスタンス・ホーム として使用する Cloud Object Storage インスタンス・バケットに、Spark アプリケーションを追加する方法を示します。 インスタンス関連ファイルを、アプリケーションの実行に使用するファイル (アプリケーション・ファイル自体、データ・ファイル、分析の結果など) から分離する場合は、同じ Cloud Object Storage インスタンス内で別のバケットを使用することも、別の Cloud Object Storage インスタンスを使用することもできます。

  1. Spark アプリケーション・ファイルをアップロードします。

    アクション :Enter:

        ibmcloud cos upload --bucket BUCKET_NAME --key KEY --file PATH [--concurrency VALUE] [--max-upload-parts PARTS] [--part-size SIZE] [--leave-parts-on-errors] [--cache-control CACHING_DIRECTIVES] [--content-disposition DIRECTIVES] [--content-encoding CONTENT_ENCODING] [--content-language LANGUAGE] [--content-length SIZE] [--content-md5 MD5] [--content-type MIME] [--metadata STRUCTURE] [--region REGION] [--output FORMAT] [--json]
    

    パラメーター値:

    • BUCKET_NAME: バケットの作成時に使用したバケット名
    • KEY: アプリケーション・ファイル名
    • PATH: Spark アプリケーション・ファイルのファイル名とパス

    例 :Enter:

        ibmcloud cos upload --bucket test-cos-storage-bucket --key test-math.py --file test-math.py
    

    サンプル・アプリケーション・ファイル
    test-math.py のサンプル:
    from pyspark.sql import SparkSession
    import time
    import random
    import cmath
    
    
    

    def init_spark () の場合: spark =SparkSession.builder.appName("test-math").getOrCreate() sc =spark.sparkContext return spark,sc

    deftransformFunc(x): cmath.sqrt(x) +cmath.log(x)+cmath.log10(x) を返します。

    def main(): spark、sc = init_spark () partitions=[10,5] for i の範囲 (0, 2): データ = 範囲 (1,20000000) v0=sc.parallelize(data,[partitionsi]) v1 = v0.map(transformFunc) print(fv1.countis{v1.count()}.完了") time.sleep(60)

    if__name__=='main': main()

    {: codeblock}
    
    
    
  2. Analytics Engine サービスの状況を確認します。

    アクション :Enter:

        ibmcloud ae-v3 instance show –id INSTANCE ID
    

    パラメーター値:

    • INSTANCE_ID: Analytics Engine インスタンス作成呼び出しの応答から取得した GUID の値

    例 :Enter:

        ibmcloud ae-v3 instance show –id 181ea**9ee01b
    

    応答 この例では、以下が返されます。

        {
           "default_runtime": {
              "spark_version": "3.4" },
           "id": "181ea**9ee01b ",
           "instance_home": {
              "bucket": "do-not-delete-ae-bucket-e96**5d-b7**a82",
              "endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud",
              "hmac_access_key": "**",
              "hmac_secret_key": "**",
              "provider": "ibm-cos",
              "region": "us-south",
              "type": "objectstore" },
           "state": "active",
           "state_change_time": "**"
        }
    

    Analytics Engine サービスの状態がアクティブな場合にのみ、Spark アプリケーションをサブミットしてください。

  3. Sparkアプリケーションをサブミットします:

    アクション :Enter:

        ibmcloud ae-v3 spark-app submit --instance-id INSTANCE_ID -–app APPLICATION_PATH
    

    パラメーター値:

    • INSTANCE_ID: Analytics Engine インスタンス作成呼び出しの応答から取得した GUID の値
    • APPLICATION_PATH: Spark アプリケーション・ファイルのファイル名とパス

    IOS および Linux の場合の例 :Enter:

        ibmcloud ae-v3 spark-app submit --instance-id 181ea**9ee01b --app "cos://test-cos-storage-bucket.mycos/test-math.py" --conf '{"spark.hadoop.fs.cos.mycos.endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud", "spark.hadoop.fs.cos.mycos.access.key": "21**bf1f4", "spark.hadoop.fs.cos.mycos.secret.key": "c5a**d3e0a6c"}'
    

    Windows の場合の例 (Powershell ではない)。 Windows では、引用符をエスケープする必要があることに注意してください。 :Enter:

        ibmcloud ae-v3 spark-app submit --instance-id myinstanceid --app "cos://matrix.mycos/test-math.py" --conf "{\"spark.hadoop.fs.cos.mycos.endpoint\": \"https://s3.direct.us-south.cloud-object-storage.appdomain.cloud\", \"spark.hadoop.fs.cos.mycos.access.key\": \"mykey\", \"spark.hadoop.fs.cos.mycos.secret.key\": \"mysecret\"}"
    

    応答 この例では、以下が返されます。

        id      7f7096d2-5c44-4d9a-ac01-b904c7611b7b
        state   accepted
    
  4. サブミットしたアプリケーションの詳細または状況を確認します。

    アクション :Enter:

        ibmcloud ae-v3 spark-app show --instance-id INSTANCE_ID --app-id APPLICATION_ID
    

    パラメーター値:

    • INSTANCE_ID: Analytics Engine 作成呼び出しの応答から取得した GUID の値
    • APPLICATION_ID: spark-app サブミット呼び出しの応答から取得した ID の値

    例 :Enter:

        ibmcloud ae-v3 spark-app show --instance-id 181ea**9ee01b --app-id 7f7096d2-5c44-4d9a-ac01-b904c7611b7b
    

    応答 この例では、以下が返されます。

        application_details   <Nested Object>
        id                    7f7096d2-5c44-4d9a-ac01-b904c7611b7b
        state                 finished
        start_time            2022-03-01T12:58:54.000Z
        finish_time           2022-03-01T13:09:14.000Z
    

    アプリケーションの完了には 2 分から 5 分かかる場合があります。

ログを表示するロギング・サービスの作成

Analytics Engine CLI を使用してロギングを有効にし、IBM Analytics Engine の問題のトラブルシューティングに役立てることができます。 ロギングを有効にする前に、ログの転送先となる IBM Log Analysis サービス・インスタンスを作成する必要があります。

  1. ロギング・インスタンスを作成します。

    アクション :Enter:

        ibmcloud resource service-instance-create NAME logdna SERVICE_PLAN_NAME LOCATION
    

    パラメーター値:

    • NAME: IBM Log Analysis サービス・インスタンス用に選択した任意の名前
    • SERVICE_PLAN_NAME: サービス・プランの名前。 有効な値については、サービス・プランを参照してください。
    • LOCATION: Analytics Engine が IBM Log Analysis にログを送信するロケーション。 有効なロケーションについては、コンピュート・サーバーレス・サービスを参照してください。

    例 :Enter:

        ibmcloud resource service-instance-create my-log-instance logdna 7-day us-south
    
     {: codeblock}
    

    ロギング・サービスが作成されると、{{site.data.keyword.Bluemix_short}} にログインし、ロギング・サービス・インスタンスを検索して、モニター・ダッシュボードをクリックできます。 モニター・ダッシュボードでは、ドライバーと実行プログラムのログ、および Spark アプリケーションのすべてのアプリケーション・ログを表示できます。

    application_id または instance_id を使用して検索してください。

  2. プラットフォーム・ロギングを有効にします。

    {{site.data.keyword.iae_full_notm}}プラットフォーム・ログを表示するには、{{site.data.keyword.cloud_notm}}のプログラム識別情報ダッシュボードを使用して、プラットフォーム・ロギングを構成する必要があります。 プログラム識別情報ダッシュボードを使用してロギングを有効にするために実行する必要があるステップについては、プログラム識別情報ダッシュボードを使用したプラットフォーム・ログの構成を参照してください。

  3. Analytics Engineのロギングを有効にします。

    アクション :Enter:

        ibmcloud analytics-engine-v3 log-config COMMAND [arguments...] [command options]
    

    パラメーター値:

    • analytics-engine-v3: ae-v3 (v3 CLI コマンドを使用) を使用します
    • COMMAND: update コマンド (ロギングを有効にする) を使用します

    例 :Enter:

       ibmcloud ae-v3 log-config update --instance-id 181ea**9ee01b --enable --output json
    

Analytics Engine インスタンスの削除

CLI を使用してインスタンスを削除することができます。例えば、より大きなワークロードを処理するためにまったく異なる構成のインスタンスが必要な場合などです。

必要な期間 Analytics Engine インスタンスを保持し、必要に応じて同じインスタンスに対して Spark アプリケーションをサブミットすることができます。

Analytics Engine インスタンスを削除する場合は、以下のようにします。

アクション :Enter:

    ibmcloud resource service-instance-delete NAME|ID [-g RESOURCE_GROUP] -f

パラメーター値:

  • NAME | ID: Analytics Engine インスタンス作成呼び出しの応答から取得した名前または GUID の値
  • RESOURCE_GROUP: オプション・パラメーター。 サーバーレス・インスタンスが存在するリソース・グループの名前

例 :Enter:

    ibmcloud resource service-instance-delete MyServiceInstance  -g default  -f

詳細情報

IBM Analytics Engine サーバーレス CLI リファレンスを参照してください。