JupyterHub in Big Data Service 3.0.26 oder früher verwenden

Verwenden Sie JupyterHub, um Big Data Service 3.0.26 oder frühere ODH 1.x-Notizbücher für Benutzergruppen zu verwalten.

Voraussetzungen

Bevor über einen Browser auf JupyterHub zugegriffen werden kann, muss ein Administrator folgende Schritte ausführen:

  • Der Knoten muss für eingehende Verbindungen von Benutzern verfügbar gemacht werden. Die private IP-Adresse des Knotens muss einer öffentlichen IP-Adresse zugeordnet werden. Alternativ kann das Cluster so eingerichtet werden, dass es einen Bastionhost oder Oracle FastConnect verwendet. Siehe Verbindung zu Clusterknoten mit privaten IP-Adressen herstellen.
  • Der Port 8000 muss auf dem Knoten geöffnet werden, indem die Ingress-Regeln in der Netzwerksicherheitsliste konfiguriert werden. Siehe Sicherheitsregeln definieren.

JupyterHub Standardzugangsdaten

Die Standardzugangsdaten für die Admin-Anmeldung für JupyterHub in Big Data Service 3.0.21 und früher sind:

  • Benutzername: jupyterhub
  • Kennwort: Apache Ambari-Admin-Kennwort. Hierbei handelt es sich um das Cluster-Admin-Kennwort, das bei der Erstellung des Clusters angegeben wurde.
  • Principal-Name für HA-Cluster: jupyterhub
  • Keytab für HA-Cluster: /etc/security/keytabs/jupyterhub.keytab

Die Standardzugangsdaten für die Admin-Anmeldung für JupyterHub in Big Data Service 3.0.22 bis 3.0.26 sind:

  • Benutzername: jupyterhub
  • Kennwort: Apache Ambari-Admin-Kennwort. Hierbei handelt es sich um das Cluster-Admin-Kennwort, das bei der Erstellung des Clusters angegeben wurde.
  • Hauptname für HA-Cluster: jupyterhub/<FQDN-OF-UN1-Hostname>
  • Keytab für HA-Cluster: /etc/security/keytabs/jupyterhub.keytab
    Beispiel:
    Principal name for HA cluster: jupyterhub/pkbdsv2un1.rgroverprdpub1.rgroverprd.oraclevcn.com
              Keytab for HA cluster: /etc/security/keytabs/jupyterhub.keytab 

Der Administrator erstellt zusätzliche Benutzer und ihre Anmeldedaten und stellt diesen Benutzern die Anmeldedaten zur Verfügung. Weitere Informationen finden Sie unter Benutzer und Berechtigungen verwalten.

Hinweis

Sofern nicht explizit auf einen anderen Administratortyp verwiesen wird, bezieht sich die Verwendung von administrator oder admin in diesem Abschnitt auf den JupyterHub-Administrator jupyterhub.

Auf JupyterHub zugreifen

Greifen Sie über den Browser auf JupyterHub für Big Data Service 3.0.26 oder frühere Cluster zu. Auf JupyterHub wird in einem Browser zugegriffen, wenn die Voraussetzungen erfüllt sind.
  1. Öffnen Sie ein Browserfenster.
  2. Geben Sie eine URL im folgenden Format ein:
    https://<node_ip_address>:8000

    Beispiel:

    https://192.0.2.0:8000
  3. Melden Sie sich mit Ihren Zugangsdaten an.
    Nicht-Admin-Benutzer: Registrieren Sie sich auf der Registrierungsseite. Ein Admin-Benutzer muss den neu registrierten Benutzer autorisieren. Nach der Genehmigung kann sich der Benutzer anmelden.

Alternativ können Sie auf der Seite "Clusterdetails" unter Cluster-URLs auf den Link JupyterHub zugreifen.

Sie können auch einen Load Balancer erstellen, um ein sicheres Front-End für den Zugriff auf Services bereitzustellen, einschließlich JupyterHub. Siehe Verbindung zu Services auf einem Cluster mit Load Balancer herstellen.

Notizbücher starten

Notebooks in einem HA-Cluster starten

Die Voraussetzungen müssen erfüllt sein, damit der Benutzer Notizbücher starten kann.

  1. Rufen Sie JupyterHub auf.
  2. Melden Sie sich mit Administratorzugangsdaten an. Die Autorisierung funktioniert nur, wenn der Benutzer auf dem Linux-Host vorhanden ist. JupyterHub sucht den Benutzer auf dem Linux-Host, während versucht wird, den Notizbuchserver zu starten.
  3. Sie werden umgeleitet auf eine Seite mit Serveroptionen, auf der Sie ein Kerberos-Ticket anfordern müssen. Dieses Ticket kann entweder mit dem Kerberos-Principal und der Keytab-Datei oder mit dem Kerberos-Kennwort angefordert werden. Der Clusteradministrator kann den Kerberos- Principal und die Keytab-Datei oder das Kerberosos-Kennwort angeben.

    Sie benötigen das Kerberos-Ticket, um Zugriff auf die HDFS-Verzeichnis und anderen Big-Data-Services zu erhalten, die Sie verwenden möchten.

Notizbücher in einem Nicht-HA-Cluster starten

Die Voraussetzungen müssen erfüllt sein, damit der Benutzer Notizbücher starten kann.

  1. Rufen Sie JupyterHub auf.
  2. Melden Sie sich mit Administratorzugangsdaten an. Die Autorisierung funktioniert nur, wenn der Benutzer auf dem Linux-Host vorhanden ist. JupyterHub sucht den Benutzer auf dem Linux-Host, während versucht wird, den Notizbuchserver zu starten.

JupyterHub verwalten

Ein JupyterHub-admin-Benutzer kann die folgenden Aufgaben ausführen, um Notizbücher in JupyterHub auf Big Data Service 3.0.26- oder früheren ODH 1.x-Knoten zu verwalten.

JupyterHub über den Browser konfigurieren

Als admin können Sie JupyterHub konfigurieren.

Hinweis

Konfigurieren Sie JupyterHub über den Browser für Big Data Service 3.0.26-Cluster oder frühere Cluster.
  1. Melden Sie sich als Benutzer opc bei dem Utilityknoten an, auf dem JupyterHub installiert ist (der zweite Utilityknoten eines HA-(hochverfügbaren) Clusters oder der erste und einzige Utilityknoten eines Nicht-HA-Cluster).
  2. Verwalten Sie mit sudo die JupyterHub-Konfigurationen, die unter /opt/jupyterhub/jupyterhub_config.py gespeichert sind.
    Beispiel: Um die Portnummer von JupyterHub zu ändern, führen Sie folgenden Befehl aus:
    vi /opt/jupyterhub/jupyterhub_config.py
    # search for c.JupyterHub.bind_url and edit the port number and save
    sudo systemctl restart jupyterhub.service
    sudo systemctl status jupyterhub.service
JupyterHub über den Browser stoppen und starten
Hinweis

Stoppen oder starten Sie JupyterHub über den Browser für Big Data Service 3.0.26-Cluster oder frühere Cluster.

Als admin können Sie die Anwendung stoppen oder deaktivieren, sodass sie keine Ressourcen wie Arbeitsspeicher belegt. Ein Neustart kann auch bei unerwarteten Problemen oder Verhaltensweisen helfen.

  1. Melden Sie sich als Benutzer opc bei dem Utilityknoten an, auf dem JupyterHub installiert ist (der zweite Utilityknoten eines HA-(hochverfügbaren) Clusters oder der erste und einzige Utilityknoten eines Nicht-HA-Cluster).
  2. Verwenden Sie sudo, um JupyterHub zu starten, zu stoppen oder neu zu starten.
    sudo systemctl start jupyterhub.service
    sudo systemctl stop jupyterhub.service
    sudo systemctl restart jupyterhub.service
    sudo systemctl status jupyterhub.service
Notebook-Limits verwalten

Als Administrator können Sie die Anzahl der aktiven Notebook-Server im Big Data Service-Cluster begrenzen.

Standardmäßig ist die Anzahl der aktiven Notizbuchserver doppelt so hoch wie die Anzahl der OCPUs auf dem Knoten. Das Standardlimit für OCPUs ist drei, und das Standardlimit für den Arbeitsspeicher ist 2 G. Die Standardeinstellungen sind für mindestens aktive Notizbücher 10 und für höchstens aktive Notizbücher 80.
  1. Melden Sie sich als Benutzer opc bei dem Utilityknoten an, auf dem JupyterHub installiert ist (der zweite Utilityknoten eines HA-(hochverfügbaren) Clusters oder der erste und einzige Utilityknoten eines Nicht-HA-Cluster).
  2. Bearbeiten Sie mit sudo die JupyterHub-Konfigurationen, die unter /opt/jupyterhub/jupyterhub_config.py gespeichert sind.
    Beispiel:
    c.JupyterHub.active_server_limit = 10
    c.Spawner.cpu_limit = 3
    c.Spawner.mem_limit = '2G'
Notizbuch-Content Manager aktualisieren
HDFS-Content Manager aktualisieren

Notizbücher werden standardmäßig im HDFS-Verzeichnis eines Clusters gespeichert.

Sie benötigen Zugriff auf das HDFS-Verzeichnis hdfs:///user/<username>/. Die Notizbücher werden in hdfs:///user/<username>/notebooks/ gespeichert.

  1. Melden Sie sich als Benutzer opc bei dem Utilityknoten an, auf dem JupyterHub installiert ist (der zweite Utilityknoten eines HA-(hochverfügbaren) Clusters oder der erste und einzige Utilityknoten eines Nicht-HA-Cluster).
  2. Verwalten Sie mit sudo JupyterHub-Konfigurationen, die unter /opt/jupyterhub/jupyterhub_config.py gespeichert sind.
    c.Spawner.args = ['--ServerApp.contents_manager_class="hdfscm.HDFSContentsManager"']
  3. Starten Sie mit sudo JupyterHub neu.
    sudo systemctl restart jupyterhub.service
Object Storage Content Manager aktualisieren

Als Admin-Benutzer können Sie die einzelnen Benutzernotizbücher in Object Storage statt in HDFS speichern. Wenn Sie den Content Manager von HDFS in Objektspeicher ändern, werden die vorhandenen Notizbücher nicht in Objektspeicher kopiert. Die neuen Notizbücher werden in Object Storage gespeichert.

  1. Melden Sie sich als Benutzer opc bei dem Utilityknoten an, auf dem JupyterHub installiert ist (der zweite Utilityknoten eines HA-(hochverfügbaren) Clusters oder der erste und einzige Utilityknoten eines Nicht-HA-Cluster).
  2. Verwalten Sie mit sudo JupyterHub-Konfigurationen, die unter /opt/jupyterhub/jupyterhub_config.py gespeichert sind. Informationen zum Generieren der erforderlichen Schlüssel finden Sie unter Zugriff und Secret Key generieren.
    c.Spawner.args = ['--ServerApp.contents_manager_class="s3contents.S3ContentsManager"', '--S3ContentsManager.bucket="<bucket-name>"', '--S3ContentsManager.access_key_id="<accesskey>"', '--S3ContentsManager.secret_access_key="<secret-key>"', '--S3ContentsManager.endpoint_url="https://<object-storage-endpoint>"', '--S3ContentsManager.region_name="<region>"','--ServerApp.root_dir=""']
  3. Starten Sie mit sudo JupyterHub neu.
    sudo systemctl restart jupyterhub.service

Mit Object Storage integrieren

Integrieren Sie Spark in Object Storage zur Verwendung mit Big Data Service-Clustern.

Damit Spark mit Object Storage funktioniert, müssen Sie in JupyterHub einige Systemeigenschaften definieren und in den Eigenschaften spark.driver.extraJavaOption und spark.executor.extraJavaOptions in den Spark-Konfigurationen auffüllen.

Voraussetzungen

Vor der erfolgreichen Integration von JupyterHub mit Object Storage müssen Sie folgende Schritte ausführen:

  • Erstellen Sie einen Bucket im Objektspeicher, um Daten zu speichern.
  • Erstellen Sie einen Object Storage-API-Schlüssel.
Systemeigenschaftswerte abrufen

Folgende Eigenschaften müssen Sie in den Spark-Konfigurationen definieren:

  • TenantID
  • Userid
  • Fingerprint
  • PemFilePath
  • PassPhrase
  • Region

Rufen Sie die Werte für diese Eigenschaften ab:

  1. Öffnen Sie das Navigationsmenü, und wählen Sie Analysen und KI aus. Wählen Sie unter Data Lake die Option Big Data Service aus.
  2. Wählen Sie auf der Listenseite Cluster das Cluster, mit dem Sie arbeiten möchten. Wenn Sie Hilfe beim Suchen der Listenseite oder des Clusters benötigen, finden Sie weitere Informationen unter Cluster in einem Compartment auflisten.
  3. Um Cluster in einem anderen Compartment anzuzeigen, verwenden Sie den Filter Compartment, um die Compartments zu wechseln.

    Sie benötigen die Berechtigung, in einem Compartment zu arbeiten, um die darin enthaltenen Ressourcen anzuzeigen. Wenn Sie nicht sicher sind, welches Compartment zu verwenden ist, wenden Sie sich an einen Administrator. Weitere Informationen finden Sie unter Compartments.

  4. Wählen Sie auf der Seite "Clusterdetails" unter Ressourcen die Option Object Storage-API-Schlüssel aus.
  5. Wählen Sie im Menü Aktionen (drei Punkte) des API-Schlüssels, den Sie anzeigen möchten, Konfigurationsdatei anzeigen aus.

Die Konfigurationsdatei enthält alle Details der Systemeigenschaften mit Ausnahme der Passphrase. Die Passphrase wird beim Erstellen des Object Storage-API-Schlüssels angegeben. Sie müssen dieselbe Passphrase erneut ermitteln und verwenden.

Beispiel: Speichern und Lesen von Daten aus Object Storage in Python Kernel mit pyspark
  1. Rufen Sie JupyterHub auf.
  2. Öffnen Sie ein neues Notizbuch.
  3. Kopieren Sie die folgenden Befehle, und fügen Sie sie ein, um eine Verbindung zu Spark herzustellen.
    import findspark
    findspark.init()
    import pyspark
  4. Kopieren Sie die folgenden Befehle, und fügen Sie sie ein, um eine Spark-Session mit den angegebenen Konfigurationen zu erstellen. Ersetzen Sie die Variablen durch die zuvor abgerufenen Systemeigenschaftswerte.
    from pyspark.sql import SparkSession
    
    spark = SparkSession \
        .builder \
        .enableHiveSupport() \
        .config("spark.driver.extraJavaOptions", "-DBDS_OSS_CLIENT_REGION=<Region> -DBDS_OSS_CLIENT_AUTH_TENANTID=<TenantId> -DBDS_OSS_CLIENT_AUTH_USERID=<UserId> -DBDS_OSS_CLIENT_AUTH_FINGERPRINT=<FingerPrint> -DBDS_OSS_CLIENT_AUTH_PEMFILEPATH=<PemFile> -DBDS_OSS_CLIENT_AUTH_PASSPHRASE=<PassPhrase>")\
        .config("spark.executor.extraJavaOptions" , "-DBDS_OSS_CLIENT_REGION=<Region> -DBDS_OSS_CLIENT_AUTH_TENANTID=<TenantId> -DBDS_OSS_CLIENT_AUTH_USERID=<UserId> -DBDS_OSS_CLIENT_AUTH_FINGERPRINT=<FingerPrint> -DBDS_OSS_CLIENT_AUTH_PEMFILEPATH=<PemFile> -DBDS_OSS_CLIENT_AUTH_PASSPHRASE=<PassPhrase>")\
        .appName("<appname>") \
        .getOrCreate()
  5. Kopieren Sie die folgenden Befehle, und fügen Sie sie ein, um die Object Storage-Verzeichnisse und -Dateien zu erstellen und Daten im Parquet-Format zu speichern.
    demoUri = "oci://<BucketName>@<Tenancy>/<DirectoriesAndSubDirectories>/"
    parquetTableUri = demoUri + "<fileName>"
    spark.range(10).repartition(1).write.mode("overwrite").format("parquet").save(parquetTableUri)
  6. Kopieren Sie den folgenden Befehl, und fügen Sie ihn ein, um Daten aus Object Storage zu lesen.
    spark.read.format("parquet").load(parquetTableUri).show()
  7. Führen Sie das Notizbuch mit all diesen Befehlen aus.

    Auf Object Storage in Jupyter zugreifen

Die Ausgabe des Codes wird angezeigt. Sie können in der Konsole zum Objektspeicher-Bucket navigieren und die im Bucket erstellte Datei suchen.

Benutzer und Berechtigungen verwalten

Verwenden Sie eine der beiden Authentifizierungsmethoden, um Benutzer bei JupyterHub zu authentifizieren, damit sie Notizbücher erstellen und JupyterHub optional verwalten können.

Standardmäßig unterstützen ODH 1.x-Cluster die native Authentifizierung. Die Authentifizierung für JupyterHub und andere Big-Data-Services muss jedoch anders erfolgen. Um Notizbücher für einzelne Benutzer zu starten, muss der Benutzer, der sich bei JupyterHub anmeldet, auf dem Linux-Host vorhanden sein und über Schreibberechtigungen für das Root-Verzeichnis in HDFS verfügen. Andernfalls verläuft der Start nicht erfolgreich, weil der Notizbuchprozess als Linux-Benutzer ausgelöst wird.

Informationen zur nativen Authentifizierung finden Sie unter Native Authentifizierung.

Informationen zur LDAP-Authentifizierung für Big Data Service 3.0.26 oder früher finden Sie unter LDAP-Authentifizierung.

Native Authentifizierung

Die native Authentifizierung ist von der JupyterHub-Benutzerdatenbank zur Authentifizierung von Benutzern abhängig.

Die native Authentifizierung gilt sowohl für HA- als auch für Nicht-HA-Cluster. Einzelheiten zum nativen Authentikator finden Sie unter Nativer Authentikator.

Benutzer in einem HA-Cluster autorisieren - Voraussetzungen

Diese Voraussetzungen müssen erfüllt sein, um einen Benutzer in einem Big Data Service-HA-Cluster mit nativer Authentifizierung zu autorisieren.

  1. Der Benutzer muss auf dem Linux-Host vorhanden sein. Führen Sie den folgenden Befehl aus, um einen neuen Linux-Benutzer auf allen Knoten eines Clusters hinzuzufügen.
    # Add linux user
    dcli -C "useradd -d /home/<username> -m -s /bin/bash <username>"
  2. Um einen Notizbuchserver zu starten, muss ein Benutzer den Principal und die Keytab-Datei path/password bereitstellen und ein Kerberos-Ticket über die JupyterHub-Schnittstelle anfordern. Um eine Keytab zu erstellen, muss der Clusteradministrator den Kerberos- Principal mit einem Kennwort und einer Keytab-Datei hinzufügen. Führen Sie die folgenden Befehle auf dem ersten Masterknoten (mn0) im Cluster aus.
    # Create a kdc principal with password or give access to existing keytabs.
    kadmin.local -q "addprinc <principalname>"
    Password Prompt: Enter passwrod
     
    # Create a kdc principal with keytab file or give access to existing keytabs.
    kadmin.local -q 'ktadd -k /etc/security/keytabs/<principal>.keytab principal'
  3. Der neue Benutzer muss über die richtigen Ranger-Berechtigungen verfügen, um Dateien im HDFS-Verzeichnis hdfs:///users/<username> zu speichern, da die einzelnen Notizbücher in /users/<username>/notebooks gespeichert sind. Der Clusteradministrator kann die erforderliche Berechtigung über die Ranger-Schnittstelle hinzufügen, indem er die folgende URL in einem Webbrowser öffnet.
    https://<un0-host-ip>:6182
  4. Der neue Benutzer muss über die richtigen Berechtigungen für Yarn, Hive und Object Storage verfügen, um Daten lesen und schreiben sowie Spark-Jobs ausführen zu können. Alternativ kann der Benutzer die Livy-Impersonierung verwenden (Big Data Service-Jobs als Livy-Benutzer ausführen), ohne explizite Berechtigungen für Spark, Yarn und andere Services zu erhalten.
  5. Führen Sie den folgenden Befehl aus, um dem neuen Benutzer Zugriff auf das HDFS-Verzeichnis zu erteilen.
    # Give access to hdfs directory
    # kdc realm is by default BDSCLOUDSERVICE.ORACLE.COM
    kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs-<clustername>@<kdc_realm> 
    sudo su hdfs -c "hdfs dfs -mkdir /user/<username>"
    sudo su hdfs -c "hdfs dfs -chown -R jupy5 /user/<username>"
Voraussetzungen für die Autorisierung eines Benutzers in einem Nicht-HA-Cluster

Diese Voraussetzungen müssen erfüllt sein, um einen Benutzer in einem Big Data Service-Nicht-HA-Cluster mit nativer Authentifizierung zu autorisieren.

  1. Der Benutzer muss auf dem Linux-Host vorhanden sein. Führen Sie den folgenden Befehl aus, um einen neuen Linux-Benutzer auf allen Knoten eines Clusters hinzuzufügen.
    # Add linux user
    dcli -C "useradd -d /home/<username> -m -s /bin/bash <username>"
  2. Der neue Benutzer muss über die richtigen Berechtigungen zum Speichern von Dateien im HDFS-Verzeichnis hdfs:///users/<username> verfügen. Führen Sie den folgenden Befehl aus, um dem neuen Benutzer Zugriff auf das HDFS-Verzeichnis zu erteilen.
    # Give access to hdfs directory
    sudo su hdfs -c "hdfs dfs -mkdir /user/<username>"
    sudo su hdfs -c "hdfs dfs -chown -R jupy5 /user/<username>"
Admin-Benutzer hinzufügen

Admin-Benutzer sind für die Konfiguration und Verwaltung von JupyterHub verantwortlich. Admin-Benutzer sind auch für die Autorisierung neu registrierter Benutzer in JupyterHub verantwortlich.

Bevor Sie einen Admin-Benutzer hinzufügen, müssen die Voraussetzungen für ein HA-Cluster oder Nicht-HA-Cluster erfüllt sein.

  1. Greifen Sie auf Apache Ambari auf zu.
  2. Wählen Sie in der seitlichen Symbolleiste unter Services die Option JupyterHub aus.
  3. Wählen Sie Konfigurationen, Erweiterte Konfigurationen aus.
  4. Wählen Sie Advanced jupyterhub-config aus.
  5. Fügen Sie den Admin-Benutzer zu c.Authenticator.admin_users hinzu.
  6. Wählen Sie Speichern aus.
Ein Admin-Benutzer in der Konfigurationsdatei JupyterHub muss während der Anmeldung keine explizite Autorisierung haben. Nach der Registrierung können Sie sich direkt anmelden.
Weitere Benutzer hinzufügen

Bevor Sie andere Benutzer hinzufügen, müssen die Voraussetzungen für ein Big Data Service-Cluster erfüllt sein.

  1. Öffnen Sie JupyterHub.
  2. Registrieren Sie den neuen Benutzer. Nicht-Admin-Benutzer benötigen eine eindeutige Autorisierung durch die Administratorbenutzer.
  3. Der Admin-Benutzer muss sich bei JupyterHub anmelden und über die neue Menüoption zur Autorisierung angemeldeter Benutzer den neuen Benutzer autorisieren.
    Screenshot der Seite "Authorize Users" in JupyterHub
  4. Der neue Benutzer kann sich jetzt anmelden.
Benutzer löschen

Ein Admin-Benutzer kann JupyterHub-Benutzer löschen.

  1. Öffnen Sie JupyterHub.
  2. Öffnen Sie File > HubControlPanel.
  3. Navigieren Sie zur Seite Authorize Users.
  4. Löschen Sie die Benutzer, die Sie entfernen möchten.
LDAP-Authentifizierung

Sie können die LDAP-Authentifizierung über einen Browser für Big Data Service 3.0.26- oder frühere ODH 1.x-Cluster verwenden.

Integration mit Trino

Voraussetzungen
  • Trino muss im Big Data Service-Cluster installiert und konfiguriert werden.
  • Installieren Sie das folgende Python-Modul im Knoten JupyterHub (un1 für HA/un0 für Nicht-HA-Cluster)
    Hinweis

    Ignorieren Sie diesen Schritt, wenn das Trino-Python-Modul bereits im Knoten vorhanden ist.
    python3.6 -m pip install trino[sqlalchemy]
     
    Offline Installation:
    Download the required python module in any machine where we have internet access
    Example:
    python3 -m pip download trino[sqlalchemy] -d /tmp/package
    Copy the above folder content to the offline node & install the package
    python3 -m pip install ./package/*
     
    Note : trino.sqlalchemy is compatible with the latest 1.3.x and 1.4.x SQLAlchemy versions. 
    BDS cluster node comes with python3.6 and SQLAlchemy-1.4.46 by default.
Integration mit Big Data Service HA-Cluster

Wenn das Trino-Ranger-Plugin aktiviert ist, müssen Sie den bereitgestellten Keytab-Benutzer in den entsprechenden Trino Ranger-Richtlinien hinzufügen. Siehe Trino in Ranger integrieren.

Standardmäßig verwendet Trino den vollständigen Kerberos-Principal-Namen als Benutzer. Wenn Sie Trino-ranger-Policys hinzufügen/aktualisieren, müssen Sie daher den vollständigen Kerberos-Principal-Namen als Benutzernamen verwenden.

Verwenden Sie für das folgende Codebeispiel jupyterhub@BDSCLOUDSERVICE.ORACLE.COM als Benutzer in den trino-ranger-Policys.

Hinweis

Wenn das Trino-Ranger-Plug-in aktiviert ist, müssen Sie den angegebenen Keytab-Benutzer in den jeweiligen Trino-Ranger-Policys hinzufügen. Weitere Details finden Sie unter Ranger für Trino aktivieren.

Geben Sie Ranger-Berechtigungen für JupyterHub für die folgenden Policys an:

  • all - catalog, schema, table, column
  • all - function
  1. Öffnen Sie ein Browserfenster.
  2. Geben Sie eine URL im folgenden Format ein:
    https://<node_ip_address>:8000

    Beispiel:

    https://192.0.2.0:8000
  3. Melden Sie sich mit Ihren Zugangsdaten an. Siehe JupyterHub Standardzugangsdaten.
  4. Geben Sie den Grundsatz und die Schlüsselregisterkarte ein.
  5. Öffnen Sie das Notizbuch Phython 3.
  6. Engine mit Trino erstellen:
    from sqlalchemy import create_engine
    from sqlalchemy.schema import Table, MetaData
    from sqlalchemy.sql.expression import select, text
    from trino.auth import KerberosAuthentication
    from subprocess import Popen, PIPE
    import pandas as pd
     
    # Provide user specific keytab_path and principal. If user wants to run queries 
    with different keytab then user can update below keytab_path & user_principal 
    else #user can use same keytab_path, principal that is used while starting the 
    notebook session.
    #Refer below sample code
     
    keytab_path='/etc/security/keytabs/jupyterhub.keytab'
    user_principal='jupyterhub@BDSCLOUDSERVICE.ORACLE.COM'
    # Cert path is required for SSL.
    cert_path= '/etc/security/serverKeys/oraclerootCA.crt'
    # trino url = 'trino://<trino-coordinator>:<port>'
    trino_url='trino://trinohamn0.sub03011425120.hubvcn.oraclevcn.com:7778'
     
     
    # This is optional step, required only if user wants to run queries with different keytab.
     
    kinit_args = [ '/usr/bin/kinit', '-kt', keytab_path, user_principal]
    subp = Popen(kinit_args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    subp.wait()
       
    engine = create_engine(
        trino_url,
        connect_args={
            "auth": KerberosAuthentication(service_name="trino", principal=user_principal, ca_bundle=cert_path),
            "http_scheme": "https",
            "verify": True
        }
    )
  7. Führen Sie die Abfrage aus:
    query = "select custkey, name, phone, acctbal from tpch.sf1.customer limit 10"
    df = pd.read_sql(query, engine)
    print(df)
Integration mit Big Data Service-Nicht-HA-Cluster
  1. Öffnen Sie ein Browserfenster.
  2. Geben Sie eine URL im folgenden Format ein:
    https://<node_ip_address>:8000

    Beispiel:

    https://192.0.2.0:8000
  3. Melden Sie sich mit Ihren Zugangsdaten an. Siehe JupyterHub Standardzugangsdaten.
  4. Öffnen Sie das Notizbuch Phython 3.
  5. Engine mit Trino erstellen:
    from sqlalchemy import create_engine
    from sqlalchemy.schema import Table, MetaData
    from sqlalchemy.sql.expression import select, text
    import pandas as pd
     
    # trino url = 'trino://trino@<trino-coordinator>:<port>'
    trino_url='trino://trino@trinohamn0.sub03011425120.hubvcn.oraclevcn.com:8285'
     
    engine = create_engine(trino_url)
  6. Führen Sie die Abfrage aus:
    query = "select custkey, name, phone, acctbal from tpch.sf1.customer limit 10"
    df = pd.read_sql(query, engine)
    print(df)