HDFS小文件问题解决方案
来源:互联网 发布:淘宝xbox360手柄 编辑:程序博客网 时间:2024/04/30 18:38
一 如果小文件过多带来的影响
1过多的小文件,意味着需要保存的元数据就更多,那么也就需要更多的NameNode内存了,从而给NameNode带来性能问题
2读取小文件数据的时候,带来集群资源更多开销。首先MapTask每次是读取一个文件,如果这时候文件过多就意味着造成大量MapTask启动;其次要读取更多的文件,意味着需要更多I/O操作。
二 解决方案
2.1将数据写入到SequenceFile格式的文件中
SequenceFile文件的结构:
因为小文件内容比较少,我们可以用文件名作为key, 文件内容作为value,直接写到SequenceFile中,创建过程我们可以使用MR来做。
但是一个个的创建会比较慢,我们可以通过并行的方式来创建SequenceFile
private static void writeTest(FileSystemfs, int count, int seed, Path file,
CompressionType compressionType, CompressionCodec codec)
throws IOException {
fs.delete(file, true);
LOG.info("creating " + count + " records with" + compressionType +
"compression");
//指明压缩方式
SequenceFile.Writer writer =
SequenceFile.createWriter(fs, conf, file,
RandomDatum.class, RandomDatum.class, compressionType, codec);
RandomDatum.Generator generator = newRandomDatum.Generator(seed);
for (int i = 0; i < count; i++) {
generator.next();
//keyh
RandomDatum key = generator.getKey();
//value
RandomDatum value = generator.getValue();
//追加写入
writer.append(key, value);
}
writer.close();
}
2.2存入外部系统比如HBase
我们通过写HBase的方式进行数据的写入而不是直接写HDFS,HBase数据的存储格式也是类似于SequenceFile中的K-V的格式。
- HDFS小文件问题解决方案
- HDFS小文件问题解决方案与启发实践
- hdfs 小文件合并
- magento 小问题解决方案集
- 移动web小问题解决方案
- hdfs小文件的解决方案
- 系统重启后,需要重新格式化HDFS问题解决方案
- MFC若干小问题解决方案(1)
- [问题]神奇的jsp 小问题解决方案
- junit测试出现的小问题解决方案
- 小程序HTTPS请求问题解决方案
- jmeter小问题解决方案合集
- sysbench小文件测试问题解决
- HDFS小文件问题及解决方案
- HDFS小文件问题及解决方案
- HDFS小文件问题及解决方案
- 使用 HDFS 保存大量小文件
- HDFS小文件问题及解决方案
- appcode破解方法
- OD常用断点,里面有VB绝对万能断点,杀VB程序专用
- 第20章 广播
- 控制div跳转到指定位置的若干方法&控制页面定位到指定位置
- C++接口函数(c中调用c++函数extern)
- HDFS小文件问题解决方案
- linux 单机安装 Elasticsearch6.0.0 详细步骤以及问题解决方案
- v2ex小程序
- 详解log4j2 基础
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战007--DateSet实用API详解007
- 【MongoDB】sort stage buffered data usage of 33554446 bytes exceeds internal limit of 33554432 bytes
- Java字體相关知识点(等宽字体)
- 自我救赎之路—(springboot 配置多种数据源)
- 接口到底有什么用