Az automatikus skálázás lassú külső metaadattár miatt

Probléma

A fürtön konfigurálva van egy külső metaadattár, és az automatikus skálázás engedélyezve van, de a fürt nem automatikus skálázása hatékony.

Ok

A metaadattár jar-fájlját minden végrehajtóba átmásolja, ha csak az illesztőben van rájuk szükség.

Időbe telik a jar-fájlok inicializálása és futtatása minden alkalommal, amikor új végrehajtó indul el. Ennek eredményeképpen több végrehajtó hozzáadása hosszabb időt vesz igénybe, mint kellene.

Megoldás

A fürtöt úgy kell konfigurálni, hogy a metaadattár jar-fájlja csak az illesztőre legyen mászva.

1. lehetőség: Használjon init szkriptet a metaadattár jar-fájljának másoláshoz.

  1. Hozzon létre egy olyan fürtöt a és a beállítással, amely megfelel a spark.sql.hive.metastore.jarsmavenspark.sql.hive.metastore.version metaadattár verziójának.

  2. Indítsa el a fürtöt, és keressen az illesztőprogram naplóiban egy sort, amely tartalmazza a Downloaded metastore jars to et.

    17/11/18 22:41:19 INFO IsolatedClientLoader: Downloaded metastore jars to <path>
    

    <path> A a letöltött jar-fájlok helye a fürt illesztőprogram-csomópontján.

  3. Másolja a jars-fájlokat egy DBFS-helyre.

    cp -r <path> /dbfs/ExternalMetaStore_jar_location
    
  4. Hozza létre az init szkriptet.

    dbutils.fs.put("dbfs:/databricks/<init-script-folder>/external-metastore-jars-to-driver.sh",
    """
    #!/bin/bash
    if [[ $DB_IS_DRIVER = "TRUE" ]]; then
    mkdir -p /databricks/metastorejars/
    cp -r /dbfs/ExternalMetaStore_jar_location/* /databricks/metastorejars/
    fi""", True)
    
  5. Telepítse az előbb fürthatókörű init szkriptként létrehozott init szkriptet.

    Szüksége lesz a szkript helyének teljes elérési útjára ( dbfs:/databricks/<init-script-folder>/external-metastore-jars-to-driver.sh ).

  6. Indítsa újra a fürtöt.

2. lehetőség: A Apache Spark beállítások használatával másolja a metaadattár jar-fájlját az illesztőprogramba.

  • Adja meg a következő beállításokat a Spark-konfigurációban:

    spark.hadoop.javax.jdo.option.ConnectionURL jdbc:mysql://<mysql-host>:<mysql-port>/<metastore-db>
    spark.hadoop.javax.jdo.option.ConnectionDriverName <driver>
    spark.hadoop.javax.jdo.option.ConnectionUserName <mysql-username>
    spark.hadoop.javax.jdo.option.ConnectionPassword <mysql-password>
    spark.sql.hive.metastore.version <hive-version>
    spark.sql.hive.metastore.jars /dbfs/metastore/jars/*
    
  • A forrás elérési útja lehet külsőleg csatlakoztatott tároló vagy DBFS.

  • A metaadattár konfigurációja globálisan alkalmazható a munkaterületen fürtházi szabályzatok használatával.

3. lehetőség: Létrehozhat egy egyéni Azure Databricks tárolót előre betöltött JAR-fájlokkal.