内容简介:Hive对文件创建的总数是有限制的,这个限制取决于参数:hive.exec.max.created.files,默认值是10000。如果现在你的表有60个分区,然后你总共有2000个map,在运行的时候,每一个mapper都会创建60个文件,对应着每一个分区,所以60*2000> 120000,就会报错:最简单的解决办法就是调大
一. Hive的创建文件数的限制
Hive对文件创建的总数是有限制的,这个限制取决于参数:
hive.exec.max.created.files,默认值是10000。如果现在你的表有60个分区,然后你总共有2000个map,在运行的时候,每一个mapper都会创建60个文件,对应着每一个分区,所以60*2000> 120000,就会报错: exceeds 100000.Killing the job
解决办法:
最简单的解决办法就是调大 hive.exec.max.created.files
参数。
但是如果说数据文件只有400G,那么你调整这个参数比如说40000
平均下来也就差不多每一个文件10.24MB,这样的话就有40000多个小文件,我们知道小文件对于hadoop来讲,不是一件很好的事情。
这里就涉及到Hive当中小文件的问题:
Hive之中小文件问题
我们知道小文件的对于Hadoop来讲,在小文件很多的时候,可以把NameNode搞挂掉。
Hive里面什么时候会产生大量小文件呢?
- 一个大文件使用动态分区,可能导致大量分区产生,从而产生多很多小文件,也会导致很多的mapper
- Reduce个数越多,小文件越多,Reduce个数和输出文件是一样的
- 数据源本身就包含很多的小文件
小文件会带来什么影响呢?
文件的数量和大小会决定mapper任务的数量,所以小文件越多,mapper任务越多,每一个mapper都会启动一个JVM来运行,所以这些任务的初始化和执行会花费大量的资源,严重影响性能
在NameNode每一个小文件的大约占150字节,小文件太多,会严重影响NameNode
如何解决小文件的问题
-
如果动态分区不可预知的情况下,最好别用,如果用也最好 distributedby 分区字段 ,这样我们知道会对字段进行一个hash操作,这样就会把相同的相同的分区给同一个Reduce去处理
-
如果Reduce数量太多,则减少reduce的数量
-
进行一些参数设置
设置 mapper输入文件合并一些参数:
set mapred.max.split.size=256000000; #每个Map最大输入大小
set mapred.min.split.size.per.node=100000000; #一个节点上split的至少的大小(这个值决定了多个DataNode上的文件是否需要合并)
set mapred.min.split.size.per.rack=100000000; #一个交换机下split的至少的大小(这个值决定了该机架下的文件是否需要合并)
set hive.input.format=org.apache.Hadoop.hive.ql.io.CombineHiveInputFormat; # 执行Map前进行小文件合并
在开启了org.apache.hadoop.hive.ql.io.CombineHiveInputFormat后,一个data node节点上多个小文件会进行合并,合并文件数由mapred.max.split.size限制的大小决定。
mapred.min.split.size.per.node决定了多个data node上的文件是否需要合并~
mapred.min.split.size.per.rack决定了多个交换机上的文件是否需要合并~
设置 map输出和reduce输出进行合并的相关参数
hive.merge.mapfiles= true #设置 map输出和reduce输出进行合并的相关参数
hive.merge.mapredfiles= true 设置reduce端输出进行合并,默认为false
hive.merge.size.per.task= 256 *1000 * 1000 设置合并文件的大小
hive.merge.smallfiles.avgsize=16000000 输出文件的平均大小小于该值时,启动一个独立的MapReduce任务进行文件merge
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 追踪 Nginx ingress 最大打开文件数问题
- 异常-hsql 小文件过多
- 你见过多菜的安卓工程师?
- 如何优化资源文件过多导致的安装变慢?
- 利用策略模式优化过多 if else 代码
- 网站用户同时访问过多咋办?搭建Nginx解决
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cascading Style Sheets 2.0 Programmer's Reference
Eric A. Meyer / McGraw-Hill Osborne Media / 2001-03-20 / USD 19.99
The most authoritative quick reference available for CSS programmers. This handy resource gives you programming essentials at your fingertips, including all the new tags and features in CSS 2.0. You'l......一起来看看 《Cascading Style Sheets 2.0 Programmer's Reference》 这本书的介绍吧!