自动定量与外部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

审查文档与砖容器服务定制容器。

这篇文章有用吗?