hdfs合并块_hdfs 小文件合并 问题
玩过大数据的人,肯定都遇到过小文件问题。这也是玩大数据,必须跨过去的一个坎,要不然,大数据玩不转。
一,怎么定义小文件
hadoop1,默认存储64M。hadoop2,hadoop3默认是128M,当然这些都是可调的。那问题来了,多小的文件算小呢,1M,10M,100M?个人认为,应当是以设置的默认存储块为基准来判定。
那么问题又来了:如果默认存储128M,那么100M算小文件吗?120M算小文件吗?
其实这个问题,很难回答,不同的人有不同的回答。个人觉得,小文件的解决是有一个范围值 ,并且是自己设定的范围值,每个人都不一样。从小到大,越是接近默认存储块,小文件解决的就是越好,反之越差。
二,小文件是怎么产生的?
1,hadoop设计之初是为了OLAP用的,后来越来越多的人,希望hadoop能朝着OLTP的方向发展,并产生了很多工具,例如spark,flink等。实时性要求越高,小文件就会越多。当然这也根量也有关系,量越大,小文件越少,小文件问题越小。
2,在离线计算时,如果没有设置reduce tasks,每个reduce都会生成一个独立的文件。这也会导致小文件的增多。
3,直接copy文件到hdfs,而导致的小文件。
三,为什么小文件是问题?
举个例子:
现在有100怀水,每杯水500ml,而给你装水的工具是N多个水桶,每个水桶容量是5L,现在要利用这些桶把水运到另外一个地方去。并且运一桶水消耗的资源根运一杯水消耗的一样。怎么运最节省资源。
这不就是小学的数学应用题吗?只要小学毕业了,就知道怎么去运水。
四,怎么解决小问题
官方给了三个解决方案:
1,Hadoop Archive
2,Sequence File
3,CombineFileInputFormat
而这三个方案,我没有用,关键是不知道,怎么用,哈哈。
我的解决办法:
1,利用hdfs命令,用appendToFile合并文件,或者getmerge合并文件到本地,然后在传hdfs。配合bash操作,还是可行的。该方案局限性较大。
json,txt试过,可以这样合。parquet肯定不行。orc没试,估计也不行。
数据量不大的话,这种处理方案,还是不错。可以做为补漏方案。
2,利用flume。flume从kafka中,消费数据到hdfs中,设置好rollSize和rollInterval,还是一个不错的方案。该方案也是有局限性的,
一般来说flume获取的数据都ETL前的数据,或者说都是源数据。源数据是要清洗的,清洗的过程中,要洗掉多少数据其实是不可控的。
如果量比较小,并且实时性要求比较高的话,这种方案是不合适的。
3,利用hive的分桶表。设置分桶的数量,可以控制小文件的。该方案也有局限性
如果量很大的情况下,为了接近我们设置默认存储值。就要不断的调整分桶数量。
4,通过程序的方式来合并。例如:spark streaming 准实时的生成了很多小文件,我们可以通过每隔一段时间,把新增的数据,进行数据清洗和合并。如果是json,txt格式,还要用appendToFile,进行补漏。
5,利用hbase,小文件交给hbase的mapfile。
推荐,方法4和方法5,这二种办法也是我现在用的方法。
hdfs合并块_hdfs 小文件合并 问题相关推荐
- HDFS的API操作-小文件的合并
小文件合并 由于 Hadoop 擅长存储大文件,因为大文件的元数据信息比较少,如果 Hadoop 集群当中有大量的小文件,那么每个小文件都需要维护一份元数据信息,会大大的增加集群管理元数据的内存压力, ...
- Hadoop HDFS 小文件合并
HDFS的小文件合并 由于Hadoop擅长存储大文件,因为大文件的元数据信息比较少,如果Hadoop集群当中有大量的小文件,那么每个小文件都需要维护一份元数据信息,会大大的增加集群管理元数据的内存压力 ...
- 大数据教程(10.6)自定义inputFormat(小文件合并)
2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章分析了运营商流量日志解析增强的实现,至此,mapreduce的组件中除了inputFormat全都自定义写过了!博主 ...
- HIVE优化系列(1)-- 自动合并输出的小文件
小文件的缺陷我们就不说了,直接进入到正题. HIVE自动合并输出的小文件的主要优化手段为: set hive.merge.mapfiles = true:在只有map的作业结束时合并小文件, set ...
- MapReduce处理小文件合并
一:小文件合并几种方式: 1. 在数据采集的时候,客户端就将小文件或小批数据合成大文件再上传HDFS 2. 在业务处理之前,在HDFS上使用mapreduce程序对小文件进行合并 3. 在mapred ...
- MapReduce将小文件合并成大文件,并设置每个切片的大小的案例
测试代码: package cn.toto.bigdata.combinefile;import java.io.IOException;import org.apache.hadoop.conf.C ...
- 关于hive on spark的distribute by和group by使用以及小文件合并问题
欢迎关注交流微信公众号:小满锅 问题导言 最近在使用hive时,发现一些任务的因为使用mapreduce的缘故,跑的太慢了,才几十个G的数据就经常跑一个多小时,于是有了切换spark的想法. 但是刚刚 ...
- spark 实现HDFS小文件合并
一.首先使用sparksql读取需要合并的数据.当然有两种情况, 一种是读取全部数据,即需要合并所有小文件. 第二种是合并部分数据,比如只查询某一天的数据,只合并某一个天分区下的小文件. val df ...
- Flink从入门到精通100篇(十五)-Flink SQL FileSystem Connector 分区提交与自定义小文件合并策略
前言 本文先通过源码简单过一下分区提交机制的两个要素--即触发(trigger)和策略(policy)的实现,然后用合并小文件的实例说一下自定义分区提交策略的方法. PartitionCommitTr ...
最新文章
- iOS开发 解决UITapGestureRecognizer手势与UITableView的点击事件的冲突
- 十个你需要在 PHP 7 中避免的坑
- 定位的坐标原点HTML,html 定位
- 将RGB转换成ToWin32值
- MYSQL学习(一) - 数据结构
- ce能修改mc服务器吗,CE怎么修改DNF私服的装备。
- win10打开无线网卡服务器,win10打不开无线网卡
- java map failed_java.lang.OutOfMemoryError:Map failed总结
- blender建模制作课堂笔记
- PNG格式图片怎么弄
- matlab地震频谱分析,《基于MATLAB的地震数据的分析》.doc
- 《开源安全运维平台-OSSIM最佳实践》将于2015年底出版
- lesson5: C++11
- 历年计算机一级笔试考试真题及答案解析,全国计算机等级考试上机考题全真笔试历年题...
- Java Swing写简单计算器以及拓展贷款计算器(等额本息和等额本金计算可以单独拿出来用)
- ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人
- 代码详解设计模式--观察者模式
- php两个字符串公共,C++_C语言求两个字符串的最长公共子串,本文实例讲述了C语言求两个字 - phpStudy...
- 逍遥情缘服务器维护没通告,【维护公告】2月2日中午12:00维护公告
- MPI矩阵向量乘法代码《并行程序设计导论》
热门文章
- ASP.NET MVC项目 解决session失效
- 【转载】css3 content 生成内容
- java实现Hbase中的查询(一)Filter方式
- .NET源码反编译和加密
- linux远程传文件scp和sftp详解
- html批量翻译 github,英文单词短语批量翻译工具WordListTranslator
- c++冒泡排序代码_数据结构和算法必知必会的50个代码实现
- linux删除文件退出,在Linux中用于在移动或删除文件时使`tail -f`退出的bash脚本
- 摘要注释_论文摘要怎么写,小编来帮你
- android 支付宝和微信支付封装,Android支付宝和微信支付集成