問題
你有外部metastore集群上配置和啟用自動定量,但集群不是有效的自動定量。
導致
你將metastore jar複製到每一個執行者,當他們隻需要在司機。
需要時間來初始化和運行jar每次新遺囑執行人旋轉起來。因此,比它應該添加更多的執行人需要更長的時間。
解決方案
你應該配置集群所以metastore罐子隻是複製到司機。
選項1:使用一個init腳本複製metastore jar。
- 創建一個集群spark.sql.hive.metastore.jars設置為maven和spark.sql.hive.metastore.version你的metastore匹配版本。
- 啟動集群和搜索司機為一條線,包括日誌下載metastore罐子。
17/11/18 22:41:19信息IsolatedClientLoader:下載metastore jar <路徑>
<路徑>是驅動程序下載jar的位置節點的集群。 - 將jar文件複製到一個DBFS位置。
% sh cp - r <路徑> / dbfs / ExternalMetaStore_jar_location
- 創建初始化腳本。
% 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”“”,真的)
- 安裝您剛剛創建的init腳本作為一個集群級init腳本(AWS|Azure|GCP)。
- 你需要的完整路徑的位置腳本(dbfs: /磚/ < init-script-folder > / external-metastore-jars-to-driver.sh)。
- 重新啟動集群。
選項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)。
審查文檔與磚容器服務定製容器。