hive调优记录

本文介绍如何通过调整MapReduce参数来优化大数据处理任务。包括设置小文件合并配置参数以减少map任务数量,以及合理设定reduce任务数量,从而提高整体运行效率。

1.设置小文件合并配置参数

set mapred.max.split.size=100000000;
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.size.per.rack=100000000;

2.限制Reducer个数的上限

hiveéç½®reduceæ°é.png

3.以上两类参数的调优说明:

  1. 设置split size是需要减少map数量,由于一个split对应一个map然而集群上存在过多的小文件导致map数量大,
    平均每个map计算的数据量少,启动和销毁的时间占比大,导致整个任务浪费时间;
  2. 设置reduce个数及其上限同样也是要限制reduce的数量,reduce的平均运行时长为1s,一千多个reduce浪费资源,所以调小reduce的数量使其计算数据的时间变长,从而节省资源和时间。

4.Reducer个数计算

过往记忆

### Hive性能方法及化技巧 #### 基本工具使用 为了有效地进行Hive性能,掌握基本工具有助于理解查询执行计划和统计数据。`EXPLAIN`命令可用于查看SQL语句转化为MapReduce作业后的逻辑执行计划,而`ANALYZE TABLE`则帮助收集表的统计信息,这对于化器做出更好的决策至关重要[^1]。 ```sql -- 使用 EXPLAIN 查看 SQL 执行计划 EXPLAIN SELECT * FROM table_name; -- 收集表的统计信息 ANALYZE TABLE table_name COMPUTE STATISTICS; ``` #### 表设计层面化 针对表结构的设计也存在多种提升性能的方法: - **分区**:通过创建基于日期或其他常用过滤条件字段上的分区,能够显著减少扫描的数据量。 - **分桶**:当数据分布较为均匀时,采用分桶技术可进一步细化粒度,便于后续处理阶段快速定位所需记录。 - **索引**:虽然Hive中的索引机制相对简单,但在特定场景下仍能发挥一定作用,比如加速点查操作等。 这些措施有助于构建高效的数据访问路径,降低I/O开销。 #### 数据存储方面化 选择合适的文件格式以及启用压缩算法都是不容忽视的重要环节: - 文件格式的选择直接影响到读写效率,Parquet、ORC这类列式存储格式相比传统的TextFile有着更高的解析速度与更低的空间占用率; - 合理运用Gzip/BZip2/Zlib等通用压缩库可以在不影响计算密集型任务的前提下大幅缩减磁盘空间需求,并间接加快传输速率。 此外,整块大小参数同样有利于平衡随机存取延迟与时延敏感的应用程序表现。 #### 作业层面上的技术手段 最后,在提交给集群运行之前还可以考虑如下几个维度来进行最终微: - 开启本地模式可以让小型任务绕过分布式框架直接利用单机资源完成运算过程; - JVM重用允许同一进程内的多个线程共享已加载类实例,节省初始化时间消耗; - 设置并行度参数控制并发执行的任务数量,防止因过度抢占而导致整体吞吐下降; - Fetch模式适用于仅需返回少量结果集的情形,此时不必启动完整的Shuffle流程即可获取目标数据片段; - Join化涉及广播变量传递小表至大表所在节点参与关联匹配的过程,有效规避不必要的网络交互损耗; - 更换默认执行引擎(Tez/Spark),借助更先进的度算法实现更高层次的整体效能跃升; - 利用内置或自定义化器插件对复杂表达式树实施重构变换,挖掘潜在提速机会。 #### 遵循适时的原则 值得注意的是,不应盲目追求极致性能指标,而是要根据实际情况灵活把握时机。过早介入可能造成额外负担却收效甚微,反而影响项目进度安排。因此建议先确保基础架构稳定可靠之后再逐步探索深层次改进方案[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值