自動定量與外部metastore緩慢

提高自動定量性能隻安裝metastore jar的司機。

寫的Gobinath.Viswanathan

去年發表在:2022年5月16日

問題

你有外部metastore集群上配置和啟用自動定量,但集群不是有效的自動定量。

導致

你將metastore jar複製到每一個執行者,當他們隻需要在司機。

需要時間來初始化和運行jar每次新遺囑執行人旋轉起來。因此,比它應該添加更多的執行人需要更長的時間。

解決方案

你應該配置集群所以metastore罐子隻是複製到司機。

選項1:使用一個init腳本複製metastore jar。

  1. 創建一個集群spark.sql.hive.metastore.jars設置為mavenspark.sql.hive.metastore.version你的metastore匹配版本。
  2. 啟動集群和搜索司機為一條線,包括日誌下載metastore罐子
    17/11/18 22:41:19信息IsolatedClientLoader:下載metastore jar <路徑>
    <路徑>是驅動程序下載jar的位置節點的集群。
  3. 將jar文件複製到一個DBFS位置。
    % sh cp - r <路徑> / dbfs / ExternalMetaStore_jar_location
  4. 創建初始化腳本。
    % python dbutils.fs.put (“dbfs: /磚/ < init-script-folder > / external-metastore-jars-to-driver。sh”、“”“# !/bin/bash如果[[$ DB_IS_DRIVER = " TRUE "]];然後mkdir - p /磚/ metastorejars / cp - r / dbfs ExternalMetaStore_jar_location / * /磚/ metastorejars / fi”“”,真的)
  5. 安裝您剛剛創建的init腳本作為一個集群級init腳本(AWS|Azure|GCP)。
  6. 你需要的完整路徑的位置腳本(dbfs: /磚/ < init-script-folder > / external-metastore-jars-to-driver.sh)。
  7. 重新啟動集群。

選項2:使用Apache配置設置火花metastore jar複製到司機。

  • 輸入以下設置到你的火花配置(AWS|Azure|GCP):
    spark.hadoop.javax.jdo.option。ConnectionURL jdbc: mysql: / / < mysql-host >: < mysql-port > / < metastore-db > spark.hadoop.javax.jdo.option。ConnectionDriverName <司機> spark.hadoop.javax.jdo.option。ConnectionUserName < mysql-username > spark.hadoop.javax.jdo.option。ConnectionPassword < mysql-password > spark.sql.hive.metastore。< hive-version > spark.sql.hive.metastore版本。jar / dbfs / metastore /罐/ *
  • 源路徑可以是外部掛載存儲或DBFS。
  • metastore配置在工作區中可以應用在全球範圍內通過使用集群政策(AWS|Azure|GCP)。

選項3:構建一個定製的磚容器加載jarAWSAzure

審查文檔與磚容器服務定製容器。