繁体   English   中英

验证 Hive 单查询和多查询并行性

[英]Validate Hive Single and Multi Query Parallelism

我用下面的 hive-site.xml 属性配置了 Hive 并行性并重新启动了集群

物业 1

Name: hive.exec.parallel
Value: true
Description: Run hive jobs in parallel

属性 2

Name: hive.exec.parallel.thread.number
Value: 8 (default)
Description: Maximum number of hive jobs to run in parallel

为了测试并行性,我创建了以下 2 个条件:

1 . 在 file.hql 中单查询并以hive -f file.hql运行

SELECT COL1, COL2 FROM TABLE1
UNION ALL
SELECT COL3, COL4 FROM TABLE2

结果:

当 hive.exec.parallel = true 时,耗时:28.015 秒,总 MapReduce CPU 耗时:3 秒 10 毫秒

当 hive.exec.parallel = false 时,耗时:24.778 秒,总 MapReduce CPU 耗时:3 秒 90 毫秒。

2 . 在以下 2 个不同文件中进行独立查询,并将其作为nohup hive -f file1.hql & nohup hive -f file2.hql

select count(1) from t1 -> file1.sql
select count(1) from t2 -> file2.sql

结果:

当 hive.exec.parallel = false 时,耗时:29.391 秒,总 MapReduce CPU 耗时:1 秒 890 毫秒

问题:

如何检查上述 2 个条件是否确实并行运行? 在控制台中,我看到的结果好像查询是按顺序运行的。

为什么当 hive.exec.parallel = true 时所用的时间更多? 我怎样才能看到 hive 多级被利用?

谢谢,

When Hive execution engine is MR ( hive.execution.engine=mr ), Hive represents query as one or more Map-Reduce jobs, these jobs (each containing Map and reduce) can be executed in parallel if possible. 例如这个查询:

SELECT COL1, COL2 FROM TABLE1
UNION
SELECT COL3, COL4 FROM TABLE2

可以作为 3 个作业执行:1 - select from table1, 2-select table2, 3-UNION (distinct)

前两个作业可以并行执行,第三个作业可以在第一个和第二个完成后执行。

更复杂的查询可以执行许多 MR 作业和这些参数:

hive.exec.parallelhive.exec.parallel.thread.number允许为在 MR 上运行的单个查询并行执行作业。

您可以在 Job Tracker 上查看作业,URL 在执行期间打印在日志中。 您可以在日志中看到一些作业已启动以及它们的执行进度。

如果在 Tez 执行引擎( hive.execution.engine=Tez ) 上运行,Hive 将查询表示为单个优化的 DAG,省略了不必要的步骤,例如将中间结果写入持久存储并使用映射器再次读取它们。 DAG 中所有可以并行执行的顶点都在并行执行。 在 Tez 上运行时,相同的设置不起作用。 它总是在 Tez 上并行运行。 相同的查询将表示为 2 个映射器顶点(并行运行)和最后运行的减速器。 最后一个 reducer 也可以在 mappers 几乎完成时提前启动。

设置hive.exec.parallelhive.exec.parallel.thread.number不影响 Tez 上查询的并行性,它们也不适用于单个脚本中的两个单独查询。

单个脚本中的两个单独的查询一个接一个地运行,而不是并行的(每个都有自己的任务并行性)

两个 hive 会话(如上一个示例)并行运行(取决于可用的集群资源)

时间差可以使用time Unix 命令测量。 Hive 报告的时间是集群时间。 如果集群没有可用资源,并行任务可以等待资源。 使用 Job tracker 检查执行期间究竟发生了什么。

所以,实际上有不同种类的并行。

MR 上的单查询作业并行性- 您要求的参数适用于这种类型。

Hive 会话并行运行- 这些参数不影响它。

Tez 顶点并行度- 这些参数不影响它

并行执行同一个顶点实例(mapper或reducer,每个都可以启动多个)——它们是并行运行的——这些参数不影响它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM