网站建设合同需注意什么,天元建设集团有限公司大同,wordpress评论头像不显示,wordpress游戏支付宝一、小文件是如何产生的
1.动态分区插入数据#xff0c;产生大量的小文件#xff0c;从而导致map数量剧增。
2.reduce数量越多#xff0c;小文件也越多(reduce的个数和输出文件是对应的)。
3.数据源本身就包含大量的小文件。 二、小文件问题的影响
1.从Hive的角度看产生大量的小文件从而导致map数量剧增。
2.reduce数量越多小文件也越多(reduce的个数和输出文件是对应的)。
3.数据源本身就包含大量的小文件。 二、小文件问题的影响
1.从Hive的角度看小文件会开很多map一个map开一个JVM去执行所以这些任务的初始化启动执行会浪费大量的资源严重影响性能。
2.在HDFS中每个小文件对象约占150byte如果小文件过多会占用大量内存。这样NameNode内存容量严重制约了集群的扩展。 三、小文件问题的解决方案
从小文件产生的途经就可以从源头上控制小文件数量方法如下
1.使用Sequencefile作为表存储格式不要用textfile在一定程度上可以减少小文件。
2.减少reduce的数量(可以使用参数进行控制)。
3.少用动态分区用时记得按distribute by分区。 四、对于已有的小文件我们可以通过以下几种方案解决
1.使用hadoop archive命令把小文件进行归档。
2.重建表建表时减少reduce数量。
3.通过参数进行调节设置map/reduce端的相关参数如下 设置map输入合并小文件的相关参数
//每个Map最大输入大小(这个值决定了合并后文件的数量)
set mapred.max.split.size256000000;
//一个节点上split的至少的大小(这个值决定了多个DataNode上的文件是否需要合并)
set mapred.min.split.size.per.node100000000;
//一个交换机下split的至少的大小(这个值决定了多个交换机上的文件是否需要合并)
set mapred.min.split.size.per.rack100000000;
//执行Map前进行小文件合并
set hive.input.formatorg.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
设置map输出和reduce输出进行合并的相关参数
//设置map端输出进行合并默认为true
set hive.merge.mapfiles true
//设置reduce端输出进行合并默认为false
set hive.merge.mapredfiles true
//设置合并文件的大小
set hive.merge.size.per.task 256*1000*1000
//当输出文件的平均大小小于该值时启动一个独立的MapReduce任务进行文件merge。
set hive.merge.smallfiles.avgsize16000000