| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Hive 如何合理设置 Map 及 Reduce 数 -> 正文阅读 |
|
[大数据]Hive 如何合理设置 Map 及 Reduce 数 |
一、概述1.通常情况下,作业会通过 input 的目录产生一个或者多个 map 任务。主要的决定因素有:input 的文件总个数,input 的文件大小,集群设置的文件块大小。 2.是不是 map 数越多越好?答案是否定的。如果一个任务有很多小文件(远远小于块大小128m),则每个小文件也会被当做一个块,用一个 map 任务来完成,而一个 map 任务启动和初始化的时间远远大于逻辑处理的时间,就会造成很大的资源浪费。而且,同时可执行的 map 数是受限的。 3.是不是保证每个 map 处理接近 128m 的文件块,就高枕无忧了?答案也是不一定。比如有一个 127m 的文件,正常会用一个 map 去完成,但这个文件只有一个或者两个小字段,却有几千万的记录,如果 map 处理的逻辑比较复杂,用一个 map任务去做,肯定也比较耗时。 针对上面的问题 2 和 3,我们需要采取两种方式来解决:即减少 map 数和增加 map 数; 二、实操1.复杂文件增加 Map 数(对应概述的问题3)当 input 的文件都很大,任务逻辑复杂,map 执行非常慢的时候,可以考虑增加 Map 数,来使得每个 map 处理的数据量减少,从而提高任务的执行效率。 增加 map 的方法为:根据公式:
调整 maxSize 最大值,让 maxSize 最大值低于 blocksize 就可以增加 map 的个数。
2)设置最大切片值为 100 个字节
2.小文件进行合并(对应概述的问题2)对于概述中的问题2,我们对小文件进行合并分两种情景:
1)在 map 执行前合并小文件,以此来减少 map数:CombineHiveInputFormat 具有对小文件进行合并的功能(系统默认的格式)。HiveInputFormat 没有对小文件合并功能。
2)在 Map-Reduce 的任务结束时合并小文件的设置: 在 map-only 任务结束时合并小文件,默认 true
在 map-reduce 任务结束时合并小文件,默认 false
合并文件的大小,默认 256M
当输出文件的平均大小小于该值时,启动一个独立的 map-reduce 任务进行文件 merge
3.合理设置 Reduce 数1)调整 reduce 个数方法一
2)调整 reduce 个数方法二
3)reduce 个数并不是越多越好
在设置 reduce 个数的时候也需要考虑这两个原则:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:20:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |