التحجيم التلقائي بطيء مع metastore خارجية

مشكلة

لديك metastore خارجية تكوين على الكتلة ويتم تمكين التحجيم التلقائي ولكن الكتلة لا يتم قياس تلقائي بشكل فعال.

السبب

أنت تقوم بنسخ الجرار metastore إلى كل منفذ، عندما تكون هناك حاجة فقط في برنامج التشغيل.

يستغرق وقتا طويلا لتهيئة وتشغيل الجرار في كل مرة يدور المنفذ الجديد. ونتيجة لذلك، إضافة المنفذين أكثر وقتا أطول مما ينبغي.

حل

يجب تكوين الكتلة بحيث يتم نسخ الجرار metastore فقط إلى برنامج التشغيل.

الخيار الأول: استخدام برنامج نصي init لنسخ الجرار metastore.

  1. إنشاء كتلة مع spark.sql.hive.metastore.jars تعيين maven إلى و spark.sql.hive.metastore.version لمطابقة إصدار metastore الخاص بك.

  2. بدء تشغيل الكتلة والبحث في سجلات برنامج التشغيل عن خط يتضمن Downloaded metastore jars to .

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

    <path> هو موقع الجرار تحميلها في عقدة برنامج التشغيل من الكتلة.

  3. نسخ الجرار إلى موقع DBFS.

    cp -r <path> /dbfs/ExternalMetaStore_jar_location
    
  4. إنشاء البرنامج النصي init.

    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. تثبيت البرنامج النصي init الذي قمت بإنشائه فقط ك برنامج نصي init نطاق الكتلة.

    ستحتاج إلى المسار الكامل إلى موقع البرنامج النصي ( dbfs:/databricks/<init-script-folder>/external-metastore-jars-to-driver.sh ).

  6. إعادة تشغيل الكتلة.

الخيار الثاني: استخدم إعدادات تكوين Apache Spark لنسخ الجرار metastore إلى برنامج التشغيل.

  • أدخل الإعدادات التالية في تكوين الشرارة:

    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/*
    
  • يمكن أن يكون مسار المصدر تخزين محملة خارجية أو DBFS.

  • يمكن تطبيق تكوين metastore بشكل عمومي داخل مساحة العمل باستخدام نهج نظام المجموعة.

الخيار الثالث: إنشاء حاوية Azure Databricks مخصصة مع الجرار المحملة مسبقا.