如何更改在 AWS 数据管道中运行的 Hive 活动的内存设置?

Posted

技术标签:

【中文标题】如何更改在 AWS 数据管道中运行的 Hive 活动的内存设置?【英文标题】:How to change memory settings for Hive Activity running in AWS data pipeline? 【发布时间】:2017-08-07 11:46:14 【问题描述】:

在使用 AWS Data Pipeline 运行一个 Hive Activity 时,我的 Hive 活动失败并出现以下错误:

Diagnostics: Container [pid=,containerID=] is running beyond physical memory limits. 
Current usage: 1.0 GB of 1 GB physical memory used;
2.8 GB of 5 GB virtual memory used. Killing container. 

当我运行 Hive Activity 手动执行的 Hive 脚本时,我必须执行如下所示:

hive \
-hiveconf tez.am.resource.memory.mb=16000 \
-hiveconf mapreduce.map.memory.mb=10240 \
-hiveconf mapreduce.map.java.opts=-Xmx8192m \
-hiveconf mapreduce.reduce.memory.mb=10240 \
-hiveconf mapreduce.reduce.java.opts=-Xmx8192m \
-hiveconf hive.exec.parallel=true
-f <hive script file path.>

通过这些设置,Hive 脚本可以完美执行。

现在的问题是如何将这些设置传递给 AWS 数据管道的 Hive Activity?我似乎找不到任何方法将 -hiveconf 传递给 Hive 活动。

【问题讨论】:

【参考方案1】:

您如何在 DataPipeline 中调用您的配置单元脚本? 如果您使用 ShellCommandActivity,您应该能够像在命令行上那样传递这些 -hiveconf 并且它应该可以正常运行。

【讨论】:

ShellCommandActivity 可以使用,但我想知道是否有任何方法可以使用 HiveActivity 本身来实现同样的目的。 我知道有点晚了,但是您应该可以使用数据管道中的“SCRIPT VARIABLE”选项来完成这项工作,并且有***.com/questions/23415400/… @DhairyaVerma ,当我们在 2017 年遇到这个特殊问题时,我们找不到任何解决这个问题的方法。所以我们最终只使用了 ShellCommandActivity。或许到了 2020 年,AWS 已经为这个问题提供了一些解决方案。

以上是关于如何更改在 AWS 数据管道中运行的 Hive 活动的内存设置?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Azure 数据工厂中管道活动的集成运行时

覆盖现有插入模式如何在 aws 数据管道的 redshiftcopyactivity 中工作

通过 cloudformation 使用 aws `cdk synth` 输出

如何创建从 hive 表到关系数据库的数据管道

在 HIVE 中运行查询时如何更改 Tez 作业名称

AWS 数据管道。 EC2Resource 无法访问红移