Hive merge(小文件合并)
当Hive的输入由非常多个小文件组成时。假设不涉及文件合并的话。那么每一个小文件都会启动一个map task。
假设文件过小。以至于map任务启动和初始化的时间大于逻辑处理的时间,会造成资源浪费。甚至发生OutOfMemoryError错误。
因此,当我们启动一个任务时,假设发现输入数据量小但任务数量多时。须要注意在Map前端进行输入小文件合并操作。
同理。向一个表写数据时,注意观察reduce数量。注意输出文件大小。
1、 Map输入小文件合并
#每一个Map处理的最大输入文件大小(256MB)
set mapred.max.split.size=256000000;
#一个节点上split文件的最小值
set mapred.min.split.size.per.node=100000000;
#一个交换机下split文件的最小值
set mapred.min.split.size.per.rack=100000000;
#运行Map前进行小文件合并
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
在开启了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决定了多个交换机上的文件是否须要合并
2、输出文件合并
#在Map-Only的任务结束时就会合并小文件
set hive.merge.mapfiles = true;
#在MapR-educe的任务结束时合并小文件
set hive.merge.mapredfiles = true;(默觉得false)
#合并文件的大小
set hive.merge.size.per.task = 256*1000*1000;
#当输出文件的平均大小小于该值时。启动一个独立的map-reduce任务进行文件merge
set hive.merge.smallfiles.avgsize=16000000 ;
Hive merge(小文件合并)的更多相关文章
- Hadoop记录-hive merge小文件
1. Map输入合并小文件对应参数:set mapred.max.split.size=256000000; #每个Map最大输入大小set mapred.min.split.size.per.no ...
- hive小文件合并设置参数
Hive的后端存储是HDFS,它对大文件的处理是非常高效的,如果合理配置文件系统的块大小,NameNode可以支持很大的数据量.但是在数据仓库中,越是上层的表其汇总程度就越高,数据量也就越小.而且这些 ...
- 合并hive/hdfs小文件
磁盘: heads/sectors/cylinders,分别就是磁头/扇区/柱面,每个扇区512byte(现在新的硬盘每个扇区有4K) 文件系统: 文件系统不是一个扇区一个扇区的来读数据,太慢了,所以 ...
- hive优化之小文件合并
文件数目过多,会给HDFS带来压力,并且会影响处理效率,可以通过合并Map和Reduce的结果文件来消除这样的影响: set hive.merge.mapfiles = true ##在 map on ...
- Hive如何处理小文件问题?
一.小文件是如何产生的 1.动态分区插入数据,产生大量的小文件,从而导致map数量剧增. 2.reduce数量越多,小文件也越多(reduce的个数和输出文件是对应的). 3.数据源本身就包含大量的小 ...
- Hadoop MapReduce编程 API入门系列之小文件合并(二十九)
不多说,直接上代码. Hadoop 自身提供了几种机制来解决相关的问题,包括HAR,SequeueFile和CombineFileInputFormat. Hadoop 自身提供的几种小文件合并机制 ...
- Hadoop经典案例(排序&Join&topk&小文件合并)
①自定义按某列排序,二次排序 writablecomparable中的compareto方法 ②topk a利用treemap,缺点:map中的key不允许重复:https://blog.csdn.n ...
- HDFS操作及小文件合并
小文件合并是针对文件上传到HDFS之前 这些文件夹里面都是小文件 参考代码 package com.gong.hadoop2; import java.io.IOException; import j ...
- MR案例:小文件合并SequeceFile
SequeceFile是Hadoop API提供的一种二进制文件支持.这种二进制文件直接将<key, value>对序列化到文件中.可以使用这种文件对小文件合并,即将文件名作为key,文件 ...
随机推荐
- 【bzoj4016】[FJOI2014]最短路径树问题 堆优化Dijkstra+DFS树+树的点分治
题目描述 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点分别走一次并返回. 往某一个点走时,选择总长度最短的路径走.若有多条长度最短的路径,则选择经过的顶点序列字典序最小的那条路径( ...
- [luoguP3231] [HNOI2013]消毒(最小点覆盖 + 状压)
传送门 考虑贪心,控制某一维为1,另两位最大是最优的,也就是一次选一个厚度为1的面 那么对于每个点,可以有3种面是可以选到它的 然后gg 考虑二维的状态,一个平面,有些点,一次选一行或一列最优 那么每 ...
- 刷题总结——拆网线(noip模拟 贪心)
题目: 给定一颗树··在保证有k个点与其它点连接的情况下问最少保留多少条边···· 树的节点树n和k均小于100000: 题解: 很容易看出来我们要尽量保留那种一条边连两个节点的情况···· 然后考试 ...
- docker (centOS 7) 使用笔记1
1. docker配置 初次在安装完docker后,初始化配置 copy默认的docker.service后,重启服务,会在/etc/systemd/system/multi-user.target. ...
- POJ2594Treasure Exploration(最小路径覆盖,相交)
Treasure Exploration Have you ever read any book about treasure exploration? Have you ever see any f ...
- Discrete Logging(poj 2417)
高次同余方程. BL == N (mod P)求解最小的L. /* A^x=B(mod C) 设x=i*m-j(其中m=ceil(sqrt C)) 并且i∈[1,m],j∈[0,m],以保证x能取 ...
- Linux System Programming 学习笔记(九) 内存管理
1. 进程地址空间 Linux中,进程并不是直接操作物理内存地址,而是每个进程关联一个虚拟地址空间 内存页是memory management unit (MMU) 可以管理的最小地址单元 机器的体系 ...
- maven打包加入依赖包以及加入本地依赖包的方法
Maven引入本地Jar包并打包进War包中 1.概述 在平时的开发中,有一些Jar包因为种种原因,在Maven的中央仓库中没有收录,所以就要使用本地引入的方式加入进来. 2. 拷贝至项目根目录 项目 ...
- grep用法详解:grep与正则表达式【转】
转自:http://blog.csdn.net/hellochenlian/article/details/34088179 grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配 ...
- [virtualbox] virtualbox 安裝 ubuntu,但 virtualbox 卻無法執行 ubuntu 的快速鍵,解法方式
solution open virtualbox -> file -> preference -> input -> below picture 按下快速鍵,即發生作用. 原先 ...