使用 Hive Live Long and Process(LLAP)
Amazon EMR 版本 6.0.0 支持 Hive 的 Live Long and Process(LLAP)功能。与之前的默认 Tez 容器执行模式相比,LLAP 使用具有智能内存中的缓存的持久守护进程来提高查询性能。
Hive LLAP 守护进程作为 YARN 服务进行管理和运行。由于 YARN 服务可以被视为长时间运行的 YARN 应用程序,因此您的部分集群资源专用于 Hive LLAP,不能用于其它工作负载。有关更多信息,请参阅 LLAP
在 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 守护进程的执行程序数 |
在集群上手动启动 Hive 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