Hive本地模式

一、原理

本地运行map-reduce作业。这对于在小型数据集上运行查询非常有用 - 在这种情况下,本地模式的执行通常比向大型集群提交​​作业要快得多。从HDFS透明地访问数据。相反,本地模式只能运行一个reducer,处理较大的数据集可能非常慢。

二、配置

1.完全本地模式
从0.7版本开始,Hive完全支持本地模式的执行。对于所有mapreduce任务都以本地模式运行,要启用此功能,用户可以启用以下选项:

SET mapreduce.framework.name = local;
SET mapred.local.dir=/tmp/username/mapred/local

2.自动本地模式
Hive通过条件判断是否通过本地模式运行mapreduce任务

条件为:
作业的总输入大小低于:hive.exec.mode.local.auto.inputbytes.max,默认为128MB
map任务的总数小于:hive.exec.mode.local.auto.tasks.max,默认为4
所需的reduce任务总数为1或0。

配置:

SET hive.exec.mode.local.auto = true;

默认情况下为false,禁用此功能。

对于小数据集的查询,或者对于具有多个map-reduce作业的查询,其中对后续作业的输入要小得多(因为先前作业中的减少/过滤),作业可能在本地运行。

请注意,Hadoop服务器节点和运行Hive客户端的机器(由于不同的jvm版本或不同的软件库)的运行时环境可能会有差异。这可能会在本地模式下运行时导致意外的行为/错误。还要注意,本地模式的执行是在Hive客户端的一个单独的jvm中完成的。如果用户希望,则可以通过hive.mapred.local.mem选项来控制此子jvm的最大内存量。默认情况下,它设置为零,在这种情况下,Hive允许Hadoop确定子jvm的默认内存限制

你可能感兴趣的:(Hive)