Serverunabhängige Instanzen erstellen und Anwendungen über die Befehlszeilenschnittstelle übergeben
Hier erfahren Sie, wie Sie die Befehlszeilenschnittstelle (Command-Line Interface, CLI) von IBM Analytics Engine verwenden, um die Services zu erstellen, die Sie zum Erstellen und Verwalten einer serverunabhängigen Instanz sowie zum Übergeben und Überwachen Ihrer Spark-Anwendungen benötigen.
Wählen Sie zum Erstellen eine serverunabhängige Instanz den Plan 'IBM Analytics Engine Standard Serverless' aus. Wenn eine serverunabhängige Instanz bereitgestellt wird, wird ein Apache Spark-Cluster erstellt, den Sie mit Bibliothekspaketen Ihrer Wahl anpassen können und in dem Sie Ihre Spark-Anwendungen ausführen.
Ziele
Sie erfahren, wie Sie die folgenden Services und Komponenten installieren und konfigurieren, die Sie für die Verwendung der Befehlszeilenschnittstelle benötigen:
- Eine IBM Cloud Object Storage-Instanz, in der die IBM Analytics Engine-Instanz angepasste Anwendungsbibliotheken und Spark-Protokollereignisse speichert.
- Ein Object Storage-Bucket für Anwendungsdateien und Datendateien.
- Eine serverunabhängige IBM Analytics Engine-Instanz. Dieser Instanz werden bei Bedarf Rechen- und Speicherressourcen zugeordnet, wenn Spark-Workloads bereitgestellt werden. Wenn sich eine Anwendung nicht im aktiven Status befindet, werden der Instanz keine Rechenressourcen zugeordnet. Der Preis basiert auf der tatsächlichen Nutzung der von der Instanz verbrauchten Ressourcen, die pro Sekunde in Rechnung gestellt wird.
- Der Protokollierungsservice unterstützt Sie bei der Behebung von Problemen, die in der IBM Analytics Engine-Instanz und in der übergebenen Anwendung auftreten können, sowie beim Anzeigen der von Ihrer Anwendung generierten Ausgabe. Wenn Sie Anwendungen mit aktivierter Protokollierung ausführen, werden Protokolle an einen IBM Log Analysis-Service weitergeleitet, in dem sie indexiert werden. Dies ermöglicht die Volltextsuche in allen generierten Nachrichten und eine komfortable Abfrage auf der Basis bestimmter Felder.
Vorbereitende Schritte
Für die Verwendung der Analytics Engine V3-CLI ist Folgendes erforderlich:
- Ein IBM Cloud®-Konto.
- Gehen Sie wie folgt vor, um die IBM Cloud-CLI zu installieren Anweisungen zum Herunterladen und Installieren der Befehlszeilenschnittstelle finden Sie unter Getting started with the IBM Cloud CLI.
Jetzt können Sie mit der Verwendung der Analytics Engine V3-CLI beginnen. Befolgen Sie die Anweisungen in den Schritten 1 und 2, um die erforderlichen Services zu installieren, bevor Sie mit Schritt 3 zum Hochladen und Übergeben von Spark-Anwendungen beginnen. Schritt 4 zeigt Ihnen, wie Sie eine Protokollierungsinstanz erstellen und die Protokollierung aktivieren. In Schritt 5 wird gezeigt, wie Sie eine Analytics Engine-Instanz löschen. Dieser Schritt ist optional.
Cloud Object Storage-Instanz erstellen und Berechtigungsnachweise abrufen
Erstellen Sie eine IBM Cloud Object Storage-Instanz und rufen Sie die Cloud Object Storage-Berechtigungsnachweise (Serviceschlüssel) über die serverunabhängige Analytics Engine-CLI ab.
Die von Ihnen erstellte Cloud Object Storage-Instanz ist für die IBM Analytics Engine-Instanz als Instanzausgangsverzeichnis-Speicher für Spark-Protokollereignisse und alle angepassten Bibliotheken oder Pakete erforderlich, die Sie in Ihren Anwendungen verwenden möchten. Weitere Informationen finden Sie unter Instance home.
Weitere Informationen zum Erstellen einer Bibliotheksgruppe mit angepassten Paketen, die in Cloud Object Storage gespeichert sind und von Ihrer Anwendung referenziert werden, finden Sie unter Bibliotheksgruppe verwenden.
-
Melden Sie sich mit Ihrem IBM Cloud®-Konto bei IBM Cloud® an.
Aktion :Eingabe:
ibmcloud api <URL> ibmcloud loginBeispiel :Eingabe:
ibmcloud api https://cloud.ibm.com ibmcloud login -
Wählen Sie die Ressourcengruppe aus. Rufen Sie die Liste der Ressourcengruppen für Ihr Konto ab und wählen Sie eine Gruppe aus, in der die serverunabhängige IBM Analytics Engine-Instanz erstellt werden soll:
Aktion :Eingabe:
ibmcloud target -g RESOURCE_GROUP_NAMEParameterwerte:
- RESOURCE_GROUP_NAME: Der Name der Ressourcengruppe, in der sich die serverunabhängige Instanz befinden soll
Beispiel :Eingabe:
ibmcloud resource groups ibmcloud target -g default -
Installieren Sie den IBM Cloud Object Storage-Service und anschließend die Analytics Engine V3-CLI:
Aktion :Eingabe:
ibmcloud plugin install cloud-object-storageAktion :Eingabe:
ibmcloud plugin install analytics-engine-v3 -
Erstellen Sie eine Cloud Object Storage-Instanz:
Aktion :Eingabe:
ibmcloud resource service-instance-create INSTANCE_NAME cloud-object-storage PLAN globalParameterwerte:
- INSTANCE_NAME: Ein beliebiger Name Ihrer Wahl
- PLAN: Der Cloud Object Storage-Plan, der beim Erstellen der Instanz verwendet werden soll
Beispiel :Eingabe:
ibmcloud resource service-instance-create test-cos-object cloud-object-storage standard global- Antwort
- Das Beispiel gibt Folgendes zurück:
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 -
Konfigurieren Sie den CRN, indem Sie den Wert der ID aus der Antwort des Cloud Object Storage-Erstellungsaufrufs im vorherigen Schritt kopieren:
Aktion :Eingabe:
ibmcloud cos config crn Resource Instance ID CRN: IDParameterwerte:
- ID: Der Wert für ID aus der Antwort des Cloud Object Storage-Erstellungsaufrufs
Beispiel :Eingabe:
ibmcloud cos config crn Resource Instance ID CRN: crn:v1:bluemix:public:cloud-object-storage:global:a/867d444f64594fd68c7ebf4baf8f6c90:ebad3176-8a1a-41f2-a803-217621bf6309:: -
Erstellen Sie ein Cloud Object Storage-Bucket:
Aktion :Eingabe:
ibmcloud cos bucket-create --bucket BUCKET_NAME [--class CLASS_NAME] [--ibm-service-instance-id ID] [--region REGION] [--output FORMAT]Parameterwerte:
- BUCKET_NAME: Ein beliebiger Name Ihrer Wahl
- ID: Der Wert für GUID aus der Antwort des Cloud Object Storage-Erstellungsaufrufs
- REGION: Die IBM Cloud-Region, in der die Cloud Object Storage-Instanz erstellt wurde
- FORMAT: Das Ausgabeformat kann JSON oder Text sein.
Beispiel :Eingabe:
ibmcloud cos bucket-create --bucket test-cos-storage-bucket --region us-south --ibm-service-instance-id ebad3176-8a1a-41f2-a803-217621bf6309 --output json -
Erstellen Sie Cloud Object Storage-Serviceschlüssel:
Aktion :Eingabe:
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.Beispiel :Eingabe:
ibmcloud resource service-key-create test-service-key-cos-bucket Writer --instance-name test-cos-object --parameters '{"HMAC":true}'- Antwort
- Das Beispiel gibt Folgendes zurück:
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::
Serverunabhängige Analytics Engine-Instanz erstellen
Erstellen Sie eine serverunabhängige Analytics Engine-Instanz über die Befehlszeilenschnittstelle.
-
Erstellen Sie die Analytics Engine-Serviceinstanz:
Aktion :Eingabe:
ibmcloud resource service-instance-create INSTANCE_NAME ibmanalyticsengine standard-serverless-spark us-south -p @provision.jsonParameterwerte:
- INSTANCE_NAME: Ein beliebiger Name Ihrer Wahl
- @provision.json: Strukturieren Sie die JSON-Datei wie im folgenden Beispiel gezeigt. Verwenden Sie den Zugriffsschlüssel und den geheimen Schlüssel aus der Antwort auf den Aufruf zur Erstellung des Cloud Object Storage-Serviceschlüssels.
- Beispiel für die Datei provision.json
- JSON-Beispieldatei:
{ "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>"} }Beispiel :Eingabe:
ibmcloud resource service-instance-create test-ae-service ibmanalyticsengine standard-serverless-spark us-south -p @ae_provision.json- Antwort
-
Das Beispiel gibt Folgendes zurück:
` text Creating service instance test-ae-service in resource groupdes Kontos wie folgt als URL: ... OK
Service instance test-ae-service was created. Name: test-ae-service ID: crn:v1:bluemix:public:ibmanalyticsengine:us-south:a/183aac93b485e:181eabe1-709781b:: GUID: 181ea9ee01b 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
-
Überprüfen Sie den Status des Analytics Engine-Service wie folgt:
Aktion :Eingabe:
ibmcloud ae-v3 instance show –id INSTANCE_IDParameterwerte:
- INSTANCE_ID: Der Wert für GUID aus der Antwort auf den Aufruf zur Erstellung der Analytics Engine-Instanz
Beispiel :Eingabe:
ibmcloud ae-v3 instance show –id 181ea**9ee01b- Antwort
- Das Beispiel gibt Folgendes zurück:
{ "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": "**" }Übergeben Sie die Spark-Anwendung nur, wenn der Status des Analytics Engine-Service 'aktiv' ist.
Spark-Anwendung hochladen und übergeben
Laden Sie eine Anwendungsdatei in Cloud Object Storage hoch und übergeben Sie eine Spark-Anwendung.
In diesem Lernprogramm wird dargestellt, wie Sie die Spark-Anwendung zum Cloud Object Storage-Instanzbucket hinzufügen, das von der Analytics Engine-Instanz als Instanzausgangsverzeichnis verwendet wird. Wenn Sie die instanzbezogenen Dateien von den Dateien trennen möchten, die Sie zum Ausführen Ihrer Anwendungen verwenden, wie beispielsweise den Anwendungsdateien selbst, den Datendateien und den Ergebnissen der Analyse, können Sie ein anderes Bucket in derselben Cloud Object Storage-Instanz oder eine andere Cloud Object Storage-Instanz verwenden.
-
Laden Sie die Spark-Anwendungsdatei hoch:
Aktion :Eingabe:
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]Parameterwerte:
- BUCKET_NAME: Der Name des Buckets, der bei der Erstellung des Buckets verwendet wurde
- KEY: Der Name der Anwendungsdatei
- PATH: Der Dateiname und der Pfad für die Spark-Anwendungsdatei
Beispiel :Eingabe:
ibmcloud cos upload --bucket test-cos-storage-bucket --key test-math.py --file test-math.py- Beispiel für eine Anwendungsdatei
- Beispiel für
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
def transformFunc(x): return cmath.sqrt(x) +cmath.log(x)+cmath.log10(x)
def main(): spark, sc = init_spark () partitions=[10,5] für i im Bereich (0, 2): Daten = Bereich (1.20000000) v0 = sc.parallelize(Daten, [Partitioneni]) v1 = v0.map(transformFunc) print(fv1.count ist {v1.count()}. Erledigt") time.sleep(60)
wenn Name =='main': main()
{: codeblock} -
Überprüfen Sie den Status des Analytics Engine-Service wie folgt:
Aktion :Eingabe:
ibmcloud ae-v3 instance show –id INSTANCE IDParameterwerte:
- INSTANCE_ID: Der Wert für GUID aus der Antwort auf den Aufruf zur Erstellung der Analytics Engine-Instanz
Beispiel :Eingabe:
ibmcloud ae-v3 instance show –id 181ea**9ee01b- Antwort
- Das Beispiel gibt Folgendes zurück:
{ "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": "**" }Übergeben Sie die Spark-Anwendung nur, wenn der Status des Analytics Engine-Service 'aktiv' ist.
-
Übergeben Sie die Spark-Anwendung:
Aktion :Eingabe:
ibmcloud ae-v3 spark-app submit --instance-id INSTANCE_ID -–app APPLICATION_PATHParameterwerte:
- INSTANCE_ID: Der Wert für GUID aus der Antwort auf den Aufruf zur Erstellung der Analytics Engine-Instanz
- APPLICATION_PATH: Der Dateiname und der Pfad für die Spark-Anwendungsdatei
Beispiel für IOS und Linux :Eingabe:
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"}'Beispiel für Windows (nicht Powershell) Unter Windows müssen die Anführungszeichen mit Escapezeichen versehen werden. :Eingabe:
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\"}"- Antwort
- Das Beispiel gibt Folgendes zurück:
id 7f7096d2-5c44-4d9a-ac01-b904c7611b7b state accepted -
Überprüfen Sie die Details oder den Status der von Ihnen übergebenen Anwendung:
Aktion :Eingabe:
ibmcloud ae-v3 spark-app show --instance-id INSTANCE_ID --app-id APPLICATION_IDParameterwerte:
- INSTANCE_ID: Der Wert für GUID aus der Antwort des Analytics Engine-Erstellungsaufrufs
- APPLICATION_ID: Der Wert für ID aus der Antwort auf den Aufruf 'spark-app submit'
Beispiel :Eingabe:
ibmcloud ae-v3 spark-app show --instance-id 181ea**9ee01b --app-id 7f7096d2-5c44-4d9a-ac01-b904c7611b7b- Antwort
- Das Beispiel gibt Folgendes zurück:
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.000ZDie Ausführung der Anwendung kann zwischen 2 und 5 Minuten dauern.
Protokollierungsservice zum Anzeigen von Protokollen erstellen
Sie können die Analytics Engine-CLI verwenden, um die Protokollierung zu aktivieren, die Sie bei der Fehlerbehebung in IBM Analytics Engine unterstützt. Vor dem Aktivieren der Protokollierung müssen Sie eine IBM Log Analysis-Serviceinstanz erstellen, an die die Protokolle weitergeleitet werden.
-
Erstellen Sie eine Protokollierungsinstanz:
Aktion :Eingabe:
ibmcloud resource service-instance-create NAME logdna SERVICE_PLAN_NAME LOCATIONParameterwerte:
- NAME: Ein beliebiger Name Ihrer Wahl für die IBM Log Analysis-Serviceinstanz
- SERVICE_PLAN_NAME: Der Name des Serviceplans. Gültige Werte finden Sie unter Servicepläne.
- LOCATION: Standorte, an denen Analytics Engine für das Senden von Protokollen an IBM Log Analysis aktiviert ist Informationen zu gültigen Standorten finden Sie unter Serverunabhängige Rechenservices.
Beispiel :Eingabe:
ibmcloud resource service-instance-create my-log-instance logdna 7-day us-south{: codeblock}Nachdem der Protokollierungsservice erstellt wurde, können Sie sich bei {{site.data.keyword.Bluemix_short}} anmelden, die Instanz des Protokollierungsservice suchen und auf das Überwachungsdashboard klicken. Dort können Sie die Treiber- und Executorprotokolle sowie alle Anwendungsprotokolle für die Spark-Anwendung anzeigen.
Suchen Sie mithilfe von
application_idoder voninstance_id. -
Plattformprotokollierung aktivieren:
Zum Anzeigen der {{site.data.keyword.iae_full_notm}} -Plattformprotokolle müssen Sie das Dashboard 'Beobachtbarkeit' in {{site.data.keyword.cloud_notm}} verwenden, um die Plattformprotokollierung zu konfigurieren. Unter Plattformprotokolle über das Dashboard 'Beobachtbarkeit' konfigurieren finden Sie die Schritte, die Sie ausführen müssen, um die Protokollierung über das Dashboard 'Beobachtbarkeit' zu aktivieren.
-
Aktivieren Sie die Protokollierung für Analytics Engine:
Aktion :Eingabe:
ibmcloud analytics-engine-v3 log-config COMMAND [arguments...] [command options]Parameterwerte:
analytics-engine-v3: Verwenden Sieae-v3, wenn Sie die CLI-Befehle aus v3 verwenden wollen- COMMAND: Verwenden Sie den Befehl
update, um die Protokollierung zu aktivieren
Beispiel :Eingabe:
ibmcloud ae-v3 log-config update --instance-id 181ea**9ee01b --enable --output json
Analytics Engine-Instanz löschen
Sie können die Befehlszeilenschnittstelle verwenden, um eine Instanz zu löschen, beispielsweise wenn Sie eine Instanz mit einer völlig anderen Konfiguration benötigen, um größere Workloads zu verarbeiten.
Sie können eine Analytics Engine-Instanz so lange beibehalten, wie Sie möchten, und Ihre Spark-Anwendungen nach Bedarf an dieselbe Instanz übergeben.
Gehen Sie wie folgt vor, wenn Sie eine Analytics Engine-Instanz löschen wollen:
Aktion :Eingabe:
ibmcloud resource service-instance-delete NAME|ID [-g RESOURCE_GROUP] -f
Parameterwerte:
- NAME|ID: Der Wert für 'Name' oder 'GUID aus der Antwort auf den Aufruf zur Erstellung der Analytics Engine-Instanz
- RESOURCE_GROUP: Ein optionaler Parameter. Der Name der Ressourcengruppe, in der sich die serverunabhängige Instanz befindet
Beispiel :Eingabe:
ibmcloud resource service-instance-delete MyServiceInstance -g default -f
Weitere Informationen
Weitere Informationen finden Sie unter IBM Analytics Engine serverless CLI reference.