使用 Hive LLAP - Amazon EMR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Hive LLAP

Amazon EMR 6.0.0 对于 Hive 支持 Live Long and Process (LLAP) 功能。与之前的默认 Tez 容器执行模式相比,LLAP 使用具有智能内存中缓存的持久守护程序来提高查询性能。

Hive LLAP 守护程序作为 YARN 服务进行管理和运行。由于 YARN 服务可被视为长时间运行的 YARN 应用程序,因此您的一些集群资源专用于 Hive LLAP,不能用于其他工作负载。有关更多信息,请参阅 LLAPYARN 服务 API

如何在 Amazon EMR 上启用 Hive LLAP

要在 Amazon EMR 上启用 Hive LLAP,请在启动集群时提供以下配置。

[ { "Classification": "hive", "Properties": { "hive.llap.enabled": "true" } } ]

有关更多信息,请参阅配置应用程序

默认情况下,Amazon EMR 将大约 60% 的集群 YARN 资源分配给 Hive LLAP 守护程序。您可以配置分配给 Hive LLAP 的集群 YARN 资源的百分比,以及对于 Hive LLAP 分配要考虑的任务节点和核心节点数。

例如,以下配置在三个任务节点或核心节点上使用三个守护程序启动 Hive LLAP,并将三个核心节点或任务节点的 YARN 资源的 40% 分配给 Hive LLAP 守护程序。

[ { "Classification": "hive", "Properties": { "hive.llap.enabled": "true", "hive.llap.percent-allocation": "0.4", "hive.llap.num-instances": "3" } } ]

您可以在分类 API 中使用以下 hive-site 配置覆盖默认 LLAP 资源设置。

属性 描述
hive.llap.daemon.yarn.container.mb LLAP 守护程序容器总大小(以 MB 为单位)
hive.llap.daemon.memory.per.instance.mb

LLAP 守护程序容器中执行程序使用的内存总量(以 MB 为单位)

hive.llap.io.memory.size

LLAP 输入/输出的缓存大小

hive.llap.daemon.num.executors

每个 LLAP 守护程序的执行程序数

在集群上手动启动 LLAP

LLAP 使用的所有依赖项和配置打包到 LLAP tar 存档中,作为集群启动的一部分。如果使用 "hive.llap.enabled": "true" 启用 LLAP,我们建议您使用 Amazon EMR 重新配置对 LLAP 进行配置更改。

否则,对于对 hive-site.xml 的任何手动更改,您必须使用 hive --service llap 命令重建 LLAP tar 存档,如以下示例所示。

# Define how many resources you want to allocate to Hive LLAP LLAP_INSTANCES=<how many llap daemons to run on cluster> LLAP_SIZE=<total container size per llap daemon> LLAP_EXECUTORS=<number of executors per daemon> LLAP_XMX=<Memory used by executors> LLAP_CACHE=<Max cache size for IO allocator> yarn app -enableFastLaunch hive --service llap \ --instances $LLAP_INSTANCES \ --size ${LLAP_SIZE}m \ --executors $LLAP_EXECUTORS \ --xmx ${LLAP_XMX}m \ --cache ${LLAP_CACHE}m \ --name llap0 \ --auxhbase=false \ --startImmediately

检查 Hive LLAP 状态

使用以下命令通过 Hive 检查 Hive LLAP 的状态。

hive --service llapstatus

使用以下命令通过 YARN 检查 Hive LLAP 的状态。

yarn app -status (name-of-llap-service) # example: yarn app -status llap0 | jq

启动或停止 Hive LLAP

由于 Hive LLAP 作为持久 YARN 服务运行,因此您可以通过停止或重新启动 YARN 服务来停止或重新启动 Hive LLAP,如以下命令所示。

yarn app -stop llap0 yarn app -start llap0

调整 Hive LLAP 守护程序的数量

使用以下命令来减少 LLAP 实例的数量。

yarn app -flex llap0 -component llap -1

有关更多信息,请参阅扩展服务的组件