数仓工具—Hive的严格模式和本地模式(17)

本地模式

0.7版本后Hive开始支持任务执行选择本地模式(local mode)大多数的Hadoop job是需要hadoop提供的完整的可扩展性来处理大数据的。

在hive中运行的sql有很多是比较小的sql,数据量小,计算量小 ,这些比较小的sql如果也采用分布式的方式来执行,那么是得不偿失的.因为sql真正执行的时间可能只有10秒,但是分布式任务的生成的其他过程的执行可能要1分钟.这样的小任务更适合采用lcoal mr的方式来执行,就是在本地来执行,通过把输入数据拉回客户端来执行.

启用方式

  • set hive.exec.mode.local.auto=true;(默认为false)

当一个job满足如下条件才能真正使用本地模式

  1. job的输入数据大小必须小于参数:hive.exec.mode.local.auto.inputbytes.max(默认128MB)
  2. job的map数必须小于参数:hive.exec.mode.local.auto.tasks.max(默认4)
  3. job的reduce数必须为0或者1

例子

我这里有一张表,其实就是我们在前面教程hive streaming中演示用到的,我先在不开启本地模式下执行一下


                
Hive支持本地模式(Local Mode)的执行,这种模式适合在单机环境下进行测试或处理小规模据。本地模式通过将MapReduce任务直接在本地运行,而非提交到Hadoop集群,从而减少资源开销提升执行效率。以下是Hive本地模式的配置方法使用指南。 ### 配置Hive本地模式 1. **修改Hive配置文件** 在`hive-site.xml`文件中添加或修改以下配置项以启用本地模式: ```xml <property> <name>hive.exec.mode.local.auto</name> <value>true</value> <description>启用自动本地模式执行</description> </property> ``` 通过设置`hive.exec.mode.local.auto`为`true`,Hive将根据据量任务复杂度自动决定是否使用本地模式执行任务[^1]。 2. **设置本地模式的最大输入据量** Hive本地模式适用于小规模据集,因此可以通过以下参限制输入据的大小: ```xml <property> <name>hive.exec.mode.local.auto.inputbytes.max</name> <value>134217728</value> <description>自动本地模式下输入据的最大字节,默认为128MB</description> </property> ``` 上述配置限制了Hive在自动本地模式下处理的最大输入据量,默认值为128MB。如果输入据量超过此限制,Hive将回退到集群模式执行。 3. **设置本地模式的最大任务** 为了控制本地模式的任务复杂度,可以设置任务的最大量: ```xml <property> <name>hive.exec.mode.local.auto.tasks.max</name> <value>4</value> <description>自动本地模式下任务的最大量,默认为4</description> </property> ``` 上述配置限制了本地模式下并行执行的任务量,默认值为4。如果任务量超过此限制,Hive将不再使用本地模式[^1]。 ### 使用Hive本地模式Hive查询执行时,可以通过HiveQL语句动态启用本地模式,而无需更改配置文件。例如,在Hive命令行界面中执行以下命令: ```sql SET hive.exec.mode.local.auto=true; SET hive.exec.mode.local.auto.inputbytes.max=134217728; SET hive.exec.mode.local.auto.tasks.max=4; ``` 上述命令在当前会话中启用了本地模式,并设置了输入据量任务的限制。这种方式适用于临时测试或调试场景[^2]。 ### 验证本地模式是否生效 执行查询后,可以通过查看Hive的执行日志或任务信息验证本地模式是否生效。如果任务未提交到Hadoop集群,并且执行时间明显缩短,则说明本地模式已成功启用。 例如,执行以下查询: ```sql SELECT * FROM x; ``` 如果查询结果返回迅速且未出现Hadoop任务日志,则表示任务已通过本地模式执行。 ### 注意事项 - **据规模限制**:本地模式适用于小规模据处理,大规模据仍需使用Hadoop集群模式。 - **性能优化**:适当调整`hive.exec.mode.local.auto.inputbytes.max``hive.exec.mode.local.auto.tasks.max`参,以匹配实际据量任务需求。 - **兼容性**:确保Hive版本支持本地模式特性,部分旧版本可能需要手动编译或更新。 通过上述配置使用方法,可以在Hive中启用本地模式,从而在单机环境下高效处理小规模据集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不二人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值