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

使用 Hive LLAP

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

Hive LLAP 守护进程作为 YARN 服务进行管理和运行。由于 YARN 服务可以被视为长时间运行的 YARN 应用程序,因此您的部分集群资源专用于 Hive LLAP,不能用于其它工作负载。有关更多信息,请参阅 LLAPYARN Service 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

有关更多信息,请参阅 Flex a component of a service