【问题标题】:Hive action execution parameters setting in Oozie workflowOozie 工作流中的 Hive 操作执行参数设置
【发布时间】:2015-09-08 06:00:28
【问题描述】:

我正在使用 Hive Action 通过 Oozie 执行查询。我将 TEZ 和 MR 设置为查询的执行引擎。如何设置最大可能的reducer 数量以执行查询?目前,我使用的是mapred.reduce.tasks,但它需要一个静态数字。

真正的问题是,当我在 hive CLI 上执行相同的查询时,Hive 选择的 reducer 数量是最佳的,而不是 1;那么我的 Oozie 工作缺少什么设置,它为所有查询选择 1 个减速器?

【问题讨论】:

  • Hive 表的大小是多少?
  • 大小约为 150 GB。但是我在多个表上运行查询,不管表的大小,每个作业都只用 1 个 reducer 调用。
  • 我猜减速器计数在 Oozie 上下文或 Oozie 使用的 hive-site.xml 中硬编码。我建议您在通过 Oozie 调用的 hive 脚本文件中添加具有相对值的 hive.exec.reducers.bytes.per.reducer 属性。

标签: hadoop hive oozie


【解决方案1】:

通常,控制 Hive 查询的 reducer 数量的理想方法是使用 hive.exec.reducers.bytes.per.reducer 属性。

默认值为 1 GB,其中对于输入文件的每 1 GB 大小,将分派一个 reducer。

尝试根据预期的最大reducer数量相对减少这个值。通过这种方式,您可以消除使用mapred.reduce.tasks 属性设置静态减速器数量。

【讨论】:

  • 警告:默认取决于您使用的版本;引用 Apache 文档:“默认值:在 Hive 0.14.0 之前为 1,000,000,000;在 Hive 0.14.0 及更高版本中为 256 MB (256,000,000)”——然后 HortonWorks 在某些 HDP 版本中的默认值低得离谱,为 64 MB!跨度>
  • 要将 max 设置为 reducer 的数量(在统计估计变得疯狂的情况下进行完整性检查)查看 hive.exec.reducers.max
  • 感谢您的建议!我已经用更多信息编辑了我的问题。请帮忙。
【解决方案2】:

在 oozie 中运行 hive 操作时,您应该始终为 mapred.reduce.tasks = -1 设置配置属性。这将强制根据您的系统和可用资源创建最佳 reducer 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多