Hive 安全模式下 Prepare Plan 的时间分析

Hive 安全模式下 Prepare Plan 的时间分析,第1张

Hive 安全模式下 Prepare Plan 的时间分析

用 Tez 执行引擎执行 hive sql 语句,打印每个步骤的执行时间。

----------------------------------------------------------------------------------------------
OPERATION                            DURATION
----------------------------------------------------------------------------------------------
Compile Query                           8.55s
Prepare Plan                            0.96s
Get Query Coordinator (AM)              0.02s
Submit Plan                             0.43s
Start DAG                               0.98s
Run DAG                                19.80s

原因是,启动 hive cli,有一个后台线程执行 tez session 的创建工作。如果执行的时候,没有准备好,需要一直等待。

同步方式

hive 执行的时候加上--hiveconf hive.cli.tez.session.async=false参数可以看到 Prepare Plan 的时间大大降低。
或者修改 hive-site.xml


    hive.cli.tez.session.async
    false
    
      Whether to start Tez
      session in background when running CLI with Tez, allowing CLI to be available earlier.
    
  

设置 hive.cli.tez.session.async=false 后,可以看到从执行 hive 命令,到可以输入 sql 的时间延长了。

在启用安全模式下,Prepare Plan 的时间主要有以下几个部分。

  1. 初始化 FileSystem,即创建和 Namenode 的连接。2 秒,最长 6 秒。(执行 time hadoop fs -ls / 在启动kerberos 和 不启动kerberos 的集群相差 2.3 秒)
  2. 创建 session 对应的目录。hdfs scrach dir, local saratch dir, download resources dir, hdfs session path, local session path, hdfs temp table space, tmpErrorOutputFile deng
  3. 长传本地的各种jar文件,hive-aux jar 文件等。1秒
  4. 用 mr 的 config 配置 tez config, stripHiddenConfigurations。需要把所有的参数过滤一遍。
  5. 创建和 RM 的连接,和创建和 Namenode 的连接一样。2 秒。有一次 4 秒
  6. 创建 Application,上传 application master 。
  7. 上传 dag 的 conf 文件。(hive 不退出连续执行 SQL 仅需要此步)。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5610749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存