HDFS小文件处理
请先查看一叶舟的介绍 : https://blog.csdn.net/zyd94857/article/details/79946773
小文件处理有两个方向:
- 适用于文档存储方法:HAR File
- 优点:
一.易操作,小文件归档 --hadoop archive -archiveName harFileName.har -p /neetArchiveFilesPath /ArchiveFileStorePath
二.可直接从hdfs查看 -- hdfs dfs -cat /ArchiveFileStorePath/harFileName.har/part-0~100+(从0开始加一) - 缺点:
一.访问一个指定的小文件需要访问两层索引文件才能获取小文件在HAR文件中的存储位置,因此,访问一个HAR文件的效率可能会比直接访问HDFS文件要低
二.创建的har文件跟源文件大小一致,且无法压缩
三.创建后无法对har文件进行修改
- 优点:
- 流动文件处理:Sequence Files
- 优点:
一.解决HDFS过多小文件导致mapreduce消耗性能问题
二.支持压缩,占用空间更小 - 缺点:
一.SequenceFile 文件不能追加写入,适用于一次性写入大量小文件的操作
二.在hdfs上将表中的数据以二进制格式编码,并且将数据压缩了,下载数据以后是二进制格式,不可以直接查看,
需在hive中查看或者通过java类org.apache.hadoop.io.SequenceFile进行读写操作;下面是创建hive表结构中有stored as sequecefile 或者显示指定: STORED AS INPUTFORMAT
- 优点:
'org.apache.hadoop.mapred.SequenceFileInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'
```
三.访问只能从文件头开始访问